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

디렉터리 버킷에서 객체 삭제하기 (Deleting objects from a directory bucket)

Amazon S3 디렉터리 버킷에서 객체를 삭제할 때는 Amazon S3 콘솔, AWS CLI, AWS SDK를 사용할 수 있어요. 객체를 삭제할 때는 한 번 삭제하면 되돌릴 수 없다는 점을 꼭 기억하세요.

출처: 문서

본문

경고

  • 삭제한 객체는 되돌릴 수 없어요.
  • 이 작업은 지정한 모든 객체를 삭제해요. 폴더를 삭제할 때는 삭제 작업이 끝날 때까지 기다린 뒤 폴더에 새 객체를 추가하세요. 그렇지 않으면 새 객체도 함께 삭제될 수 있어요.

참고

디렉터리 버킷에서 프로그래밍 방식으로 여러 객체를 삭제할 때 다음 사항을 유의하세요.

  • DeleteObjects 요청의 객체 키는 공백이 아닌 문자를 최소 하나 이상 포함해야 해요. 공백 문자만으로 이루어진 문자열은 지원되지 않아요.
  • DeleteObjects 요청의 객체 키에는 줄바꿈(\n), 탭(\t), 캐리지 리턴(\r)을 제외한 유니코드 제어 문자를 포함할 수 없어요.

객체 삭제하기

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 Directory buckets(디렉터리 버킷)을 선택합니다.
  3. 삭제할 객체가 들어 있는 디렉터리 버킷을 선택합니다.
  4. Objects(객체) 탭을 선택합니다. Objects 목록에서 삭제할 객체(들) 왼쪽의 체크박스를 선택합니다.
  5. Delete(삭제)를 선택합니다.
  6. Delete objects 페이지의 텍스트 상자에 permanently delete를 입력합니다.
  7. Delete objects(객체 삭제)를 선택합니다.

Java 예제 (AWS SDK for Java 2.x)

다음 예제는 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);
        }
        
    }

Python 예제 (Boto3)

다음 예제는 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로 디렉터리 버킷에서 객체 하나를 삭제하는 방법을 보여줘요. 실행 시 사용자 입력 자리표시자는 직접 채워 넣어야 합니다.

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

CLI delete-object 명령에 대한 자세한 내용은 AWS CLI Command Reference를 참고하세요.

다음 delete-objects 예제 명령은 AWS CLI로 디렉터리 버킷에서 여러 객체를 한 번에 삭제하는 방법을 보여줘요. 실행 시 사용자 입력 자리표시자는 직접 채워 넣어야 합니다.

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 

CLI delete-objects 명령에 대한 자세한 내용은 AWS CLI Command Reference를 참고하세요.

더 알아보기 (Learn more)