메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

버킷 삭제 또는 비우기

빈 버킷을 삭제하는 것이 쉽지만 경우에 따라서는 객체가 포함된 버킷을 삭제하거나 비워야 할 수도 있습니다. 이 단원에서는 버전 관리 미사용 버킷(기본값)에서 객체를 삭제하는 방법 및 버전 관리가 활성화된 버킷에서 객체 버전 및 삭제 마커를 삭제하는 방법을 설명합니다. 버전 관리에 대한 자세한 내용은 버전 관리 사용 단원을 참조하십시오. 경우에 따라서는 버킷을 삭제하는 대신 비워야 할 수도 있습니다. 이 단원에서는 객체가 포함된 버킷을 삭제하거나 비울 수 있는 여러 가지 옵션을 설명합니다.

버킷 삭제

AWS SDK를 사용하여 프로그래밍 방식으로 버킷과 그 내용을 삭제할 수 있습니다. 버킷의 수명 주기 구성을 사용하여 내용을 비운 후 버킷을 삭제할 수도 있습니다. Amazon S3 콘솔과 AWS CLI를 사용하는 등의 추가 옵션도 있지만 이 방법에는 버킷에 포함된 객체 수 및 버킷의 버전 관리 상태에 따라 제한이 있습니다.

버킷 삭제: Amazon S3 콘솔 사용

Amazon S3 콘솔을 사용하여 비어 있거나 비어 있지 않은 버킷을 삭제할 수 있습니다. Amazon S3 콘솔을 사용하여 버킷을 삭제하는 방법에 대한 자세한 내용은 S3 버킷을 삭제하려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

버킷 삭제: AWS CLI 사용

버킷의 버전 관리가 활성화되지 않은 경우에만 AWS CLI를 사용하여 객체가 포함된 버킷을 삭제할 수 있습니다. 버킷의 버전 관리가 활성화되지 않은 경우 rb(버킷 제거) AWS CLI 명령을 --force 파라미터와 함께 사용하여 비어 있지 않은 버킷을 제거할 수 있습니다. 이 명령은 먼저 모든 객체를 삭제한 후 버킷을 삭제합니다.

Copy
$ aws s3 rb s3://bucket-name --force

자세한 정보는 AWS Command Line Interface 사용 설명서의 AWS 명령줄 인터페이스와 함께 상위 수준 S3 명령 사용을 참조하십시오.

버전 관리가 활성화되지 않고 비어 있지 않은 버킷을 삭제하려면 다음 옵션을 사용할 수 있습니다.

  • AWS SDK를 사용하여 프로그래밍 방식으로 버킷을 삭제합니다.

  • 먼저 버킷의 수명 주기 구성을 사용하여 모든 객체를 삭제한 후 Amazon S3 콘솔을 사용하여 빈 버킷을 삭제합니다.

버킷 삭제: 수명 주기 구성 사용

버킷의 수명 주기를 구성하여 객체 만료를 지정하면 Amazon S3에서 만료된 객체를 삭제합니다. 수명 주기 구성 규칙을 추가하여 모든 객체 또는 특정 키 이름 접두사를 가진 객체의 하위 집합에 대해 만료를 지정할 수 있습니다. 예를 들어 버킷의 모든 객체를 제거하기 위해서는 생성 후 하루가 지나면 객체가 만료되도록 수명 주기 규칙을 설정할 수 있습니다.

버킷의 버전 관리가 활성화된 경우 최신이 아닌 객체가 만료되도록 규칙을 구성할 수도 있습니다.

Amazon S3에서 버킷의 모든 객체를 삭제한 후 버킷을 삭제하거나 유지할 수 있습니다.

중요

버킷을 비우기만 하고 삭제하지 않으려면 버킷을 비우기 위해 추가한 수명 주기 구성 규칙을 제거하여 버킷에 생성된 새 객체가 버킷에 남아 있도록 해야 합니다.

자세한 내용은 객체 수명 주기 관리객체 만료: 일반적인 고려 사항을 참조하십시오.

버킷 삭제: AWS SDKs 사용

AWS SDK를 사용하여 버킷을 삭제할 수 있습니다. 다음 단원에서는 .NET 및 Java용 AWS SDK를 사용하여 버킷을 삭제하는 방법의 예를 제시합니다. 먼저 코드가 버킷의 객체를 삭제한 후 버킷을 삭제합니다. 그 밖의 AWS SDK에 대한 자세한 정보는 Amazon Web Services용 도구를 참조하십시오.

AWS SDK for Java 제품을 사용하여 버킷 삭제

다음 Java 예제는 비어 있지 않은 버킷을 삭제합니다. 먼저 코드가 모든 객체를 삭제한 후 버킷을 삭제합니다. 또한 코드 예제는 버전 관리가 활성화된 버킷에 적용됩니다.

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Java 코드 예제 테스트를 참조하십시오.

Copy
import com.amazonaws.AmazonServiceException; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.ListVersionsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; import com.amazonaws.services.s3.model.S3VersionSummary; import com.amazonaws.services.s3.model.VersionListing; import java.util.Iterator; /** * Delete an Amazon S3 bucket. * * This code expects that you have AWS credentials set up per: * http://docs.aws.amazon.com/java-sdk/latest/developer-guide/setup-credentials.html * * ++ Warning ++ This code will actually delete the bucket that you specify, as * well as any objects within it! */ public class DeleteBucket { public static void main(String[] args) { final String USAGE = "\n" + "To run this example, supply the name of an S3 bucket\n" + "\n" + "Ex: DeleteBucket <bucketname>\n"; if (args.length < 1) { System.out.println(USAGE); System.exit(1); } String bucket_name = args[0]; System.out.println("Deleting S3 bucket: " + bucket_name); final AmazonS3 s3 = new AmazonS3Client(); try { System.out.println(" - removing objects from bucket"); ObjectListing object_listing = s3.listObjects(bucket_name); while (true) { for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext();) { S3ObjectSummary summary = (S3ObjectSummary)iterator.next(); s3.deleteObject(bucket_name, summary.getKey()); } // more object_listing to retrieve? if (object_listing.isTruncated()) { object_listing = s3.listNextBatchOfObjects(object_listing); } else { break; } }; System.out.println(" - removing versions from bucket"); VersionListing version_listing = s3.listVersions( new ListVersionsRequest().withBucketName(bucket_name)); while (true) { for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext();) { S3VersionSummary vs = (S3VersionSummary)iterator.next(); s3.deleteVersion( bucket_name, vs.getKey(), vs.getVersionId()); } if (version_listing.isTruncated()) { version_listing = s3.listNextBatchOfVersions( version_listing); } else { break; } } System.out.println(" OK, bucket ready to delete!"); s3.deleteBucket(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!"); } }

버킷 비우기

AWS SDK를 사용하여 프로그래밍 방식으로 버킷의 내용을 비워 모든 내용을 삭제하되 버킷은 유지할 수 있습니다. 객체 만료를 지정하도록 버킷의 수명 주기 구성을 지정하여 Amazon S3에서 객체를 삭제할 수 있습니다. Amazon S3 콘솔과 AWS CLI를 사용하는 등의 추가 옵션도 있지만 이 방법에는 버킷에 포함된 객체 수 및 버킷의 버전 관리 상태에 따라 제한이 있습니다.

버킷 비우기: Amazon S3 콘솔 사용

Amazon S3 콘솔을 사용하여 버킷을 비우는 방법에 대한 자세한 내용은 S3 버킷을 비우려면 어떻게 해야 합니까?(출처: Amazon Simple Storage Service 콘솔 사용 설명서)를 참조하십시오.

버킷 비우기: AWS CLI 사용

버킷의 버전 관리가 활성화되지 않은 경우에만 AWS CLI를 사용하여 버킷을 비울 수 있습니다. 버킷의 버전 관리가 활성화되지 않은 경우 rm(제거) AWS CLI 명령을 --recursive 파라미터와 함께 사용하여 버킷을 비우거나 특정 키 이름 접두사를 가진 객체의 하위 집합을 제거할 수 있습니다.

다음 rm 명령은 키 이름 접두사 doc가 있는 객체(예: doc/doc1doc/doc2)를 제거합니다.

Copy
$ aws s3 rm s3://bucket-name/doc --recursive

다음 명령을 사용하여 접두사를 지정하지 않고 모든 객체를 제거합니다.

Copy
$ aws s3 rm s3://bucket-name --recursive

자세한 정보는 AWS Command Line Interface 사용 설명서의 AWS 명령줄 인터페이스와 함께 상위 수준 S3 명령 사용을 참조하십시오.

참고

버전 관리가 활성화된 버킷에서 객체를 제거할 수 없습니다. 이 명령을 사용하면 객체를 삭제할 때 Amazon S3에서 삭제 마커를 추가합니다. 버전 관리에 대한 자세한 내용은 버전 관리 사용 단원을 참조하십시오.

버전 관리가 활성화된 버킷을 비우려면 다음 옵션을 사용할 수 있습니다.

  • AWS SDK를 사용하여 프로그래밍 방식으로 버킷을 삭제합니다.

  • 버킷의 수명 주기 구성을 사용하여 Amazon S3에서 객체를 삭제하도록 요청합니다.

  • Amazon S3 콘솔을 사용합니다. 객체 버전과 삭제 마커를 포함하여 100,000개— 미만의 항목이 버킷에 포함된 경우 이 옵션만 사용할 수 있습니다.

버킷 비우기: 수명 주기 구성 사용

버킷의 수명 주기를 구성하여 객체 만료를 지정하고 Amazon S3에서 만료된 객체를 삭제하도록 요청합니다. 수명 주기 구성 규칙을 추가하여 모든 객체 또는 특정 키 이름 접두사를 가진 객체의 하위 집합에 대해 만료를 지정할 수 있습니다. 예를 들어 버킷의 모든 객체를 제거하려는 경우 생성 하루 후에 객체가 만료되도록 수명 주기 규칙을 설정할 수 있습니다.

버킷의 버전 관리가 활성화된 경우 최신이 아닌 객체가 만료되도록 규칙을 구성할 수도 있습니다.

주의

객체가 만료된 후 Amazon S3에서 만료된 객체를 삭제합니다. 버킷을 비우기만 하고 삭제하지 않으려면 버킷을 비우기 위해 추가한 수명 주기 구성 규칙을 제거하여 버킷에 생성된 새 객체가 버킷에 남아 있도록 해야 합니다.

자세한 내용은 객체 수명 주기 관리객체 만료: 일반적인 고려 사항을 참조하십시오.

버킷 비우기: AWS SDKs 사용

AWS SDK를 사용하여 버킷을 비우거나 특정 키 이름 접두사를 가진 객체의 하위 집합을 제거할 수 있습니다.

AWS SDK for Java 제품을 사용하여 버킷을 비우는 방법의 예는 AWS SDK for Java 제품을 사용하여 버킷 삭제 단원을 참조하십시오. 버킷의 버전 관리가 활성화되었는지 여부와 관계 없이 코드가 모든 객체를 삭제한 후 버킷을 삭제합니다. 버킷을 비우기만 하려면 버킷을 삭제하는 문을 제거해야 합니다.

그 밖의 AWS SDK 사용에 대한 자세한 정보는 Amazon Web Services용 도구를 참조하십시오.

이 페이지에서: