

# 디렉터리 버킷에서 객체 삭제
객체 삭제

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 Amazon S3 디렉터리 버킷에서 객체를 삭제할 수 있습니다. 자세한 내용은 [디렉터리 버킷 작업](directory-buckets-overview.md) 및 [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)(을)를 참조하세요.

**주의**  
객체 삭제는 실행 취소할 수 없습니다.
이 작업은 지정된 모든 객체를 삭제합니다. 폴더를 삭제할 때 폴더에 새 객체를 추가하기 전에 삭제 작업이 완료될 때까지 기다립니다. 그러지 않으면 새 객체도 삭제될 수 있습니다.

**참고**  
디렉터리 버킷에서 프로그래밍 방식으로 여러 객체를 삭제할 경우 다음에 유의하세요.  
`DeleteObjects` 요청의 객체 키는 공백이 아닌 문자를 하나 이상 포함해야 합니다. 공백 문자로만 구성된 문자열은 지원되지 않습니다.
`DeleteObjects` 요청의 객체 키에는 유니코드 제어 문자를 포함할 수 없습니다. 단, 줄바꿈(`\n`), 탭(`\t`) 및 캐리지 리턴(`\r`)은 예외입니다.

## S3 콘솔 사용


**객체 삭제**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. 삭제할 객체가 포함된 디렉터리 버킷을 선택합니다.

1. **객체(Objects)** 탭을 선택합니다. **객체** 목록에서 삭제할 하나 또는 여러 객체 옆의 확인란을 선택합니다.

1. **삭제**를 선택합니다.

   

1. **객체 삭제** 페이지에서 텍스트 상자에 **permanently delete**를 입력합니다.

1. **객체 삭제**를 선택합니다.

## AWS SDK 사용


------
#### [ SDK for Java 2.x ]

**Example**  
다음 예시에서는 AWS SDK for Java 2.x를 사용하여 디렉터리 버킷의 객체를 삭제합니다.  

```
static void deleteObject(S3Client s3Client, String bucketName, String objectKey) {


        
        try {
            
            DeleteObjectRequest del = DeleteObjectRequest.builder()
                    .bucket(bucketName)
                    .key(objectKey)
                    .build();

            s3Client.deleteObject(del);
            
            System.out.println("Object " + objectKey + " has been deleted");
            
            
        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        
    }
```

------
#### [ SDK for Python ]

**Example**  
다음 예시에서는 AWS SDK for Python (Boto3)을 사용하여 디렉터리 버킷의 객체를 삭제합니다.  

```
import logging
import boto3
from botocore.exceptions import ClientError

def delete_objects(s3_client, bucket_name, objects):
    '''
    Delete a list of objects in a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket that contains objects to be deleted; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param objects: List of dictionaries that specify the key names to delete
    :return: Response output, else False
    '''

    try:
        response = s3_client.delete_objects(
            Bucket = bucket_name,
            Delete = {
                'Objects': objects
            } 
        )
        return response
    except ClientError as e:
        logging.error(e)
        return False
    

if __name__ == '__main__':
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    objects = [
        {
            'Key': '0.txt'
        },
        {
            'Key': '1.txt'
        },
        {
            'Key': '2.txt'
        },
        {
            'Key': '3.txt'
        },
        {
            'Key': '4.txt'
        }
    ]
    
    s3_client = boto3.client('s3', region_name = region)
    results = delete_objects(s3_client, bucket_name, objects)
    if results is not None:
        if 'Deleted' in results:
            print (f'Deleted {len(results["Deleted"])} objects from {bucket_name}')
        if 'Errors' in results:
            print (f'Failed to delete {len(results["Errors"])} objects from {bucket_name}')
```

------

## AWS CLI 사용


다음 `delete-object` 예시 명령에서는 AWS CLI를 사용하여 디렉터리 버킷에서 객체를 삭제하는 방법을 보여 줍니다. 이 명령을 실행하려면 `user input placeholders`를 사용자의 정보로 대체합니다.

```
aws s3api delete-object --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME 
```

자세한 내용은 *AWS CLI 명령 참조*의 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) 섹션을 참조하십시오.

다음 `delete-objects` 예시 명령에서는 AWS CLI를 사용하여 디렉터리 버킷에서 객체를 삭제하는 방법을 보여줍니다. 이 명령을 실행하려면 `user input placeholders`를 사용자의 정보로 대체합니다.

`delete.json` 파일은 다음과 같습니다.

```
{
    "Objects": [
        {
            "Key": "0.txt"
        },
        {
            "Key": "1.txt"
        },
        {
            "Key": "2.txt"
        },
        {
            "Key": "3.txt"
        }
    ]
}
```

`delete-objects` 예시 명령은 다음과 같습니다.

```
aws s3api delete-objects --bucket bucket-base-name--zone-id--x-s3 --delete file://delete.json 
```

자세한 내용은 *AWS CLI 명령 참조*의 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) 섹션을 참조하십시오.