Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

AWS SDK for Java를 사용한 객체 삭제

버킷에서 객체를 삭제할 수 있습니다. 버전 관리를 사용하는 버킷의 경우 다음 옵션을 사용할 수 있습니다.

  • 버전 ID를 지정하여 특정 객체 버전을 삭제합니다.

  • 버전 ID를 지정하지 않고 객체를 삭제합니다. 이 경우 S3에서는 객체에 삭제 마커를 추가합니다.

버전 관리에 대한 자세한 내용은 객체 버전 관리 단원을 참조하십시오.

예제 1: 객체 삭제(버전이 지정되지 않은 버킷)

다음 예제는 버킷에서 객체를 삭제합니다. 이 예제에서는 버킷에서 버전 관리를 사용하지 않고 객체에 버전 ID가 없다고 가정합니다. 삭제 요청 시, 객체 키만 지정하며 버전 ID는 지정하지 않습니다. 실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 Java 코드 예제 테스트 단원을 참조하십시오.

import java.io.IOException; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.DeleteObjectRequest; public class DeleteObjectNonVersionedBucket { public static void main(String[] args) throws IOException { String clientRegion = "*** Client region ***"; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName)); } catch(AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch(SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

예제 2: 객체 삭제(버전이 지정된 버킷)

다음 예제는 버전이 지정된 버킷에서 객체를 삭제합니다. 이 예제에서는 객체 키 이름 및 버전 ID를 지정하여 특정 객체 버전을 삭제합니다. 이 예제는 다음을 수행합니다.

  1. 버킷에 샘플 객체를 추가합니다. Amazon S3에서는 새로 추가된 객체의 버전 ID를 반환합니다. 이 예제에서는 삭제 요청에 이 버전 ID를 사용합니다.

  2. 객체 키 이름 및 버전 ID를 지정하여 객체 버전을 삭제합니다. 해당 객체의 다른 버전이 없는 경우 Amazon S3에서는 해당 객체를 완전히 삭제합니다. 그렇지 않은 경우 Amazon S3에서는 지정된 버전만 삭제합니다.

    참고

    ListVersions 요청을 보내 객체의 버전 ID를 가져올 수 있습니다.

import java.io.IOException; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketVersioningConfiguration; import com.amazonaws.services.s3.model.DeleteVersionRequest; import com.amazonaws.services.s3.model.PutObjectResult; public class DeleteObjectVersionEnabledBucket { public static void main(String[] args) throws IOException { String clientRegion = "*** Client region ***"; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Check to ensure that the bucket is versioning-enabled. String bucketVersionStatus = s3Client.getBucketVersioningConfiguration(bucketName).getStatus(); if(!bucketVersionStatus.equals(BucketVersioningConfiguration.ENABLED)) { System.out.printf("Bucket %s is not versioning-enabled.", bucketName); } else { // Add an object. PutObjectResult putResult = s3Client.putObject(bucketName, keyName, "Sample content for deletion example."); System.out.printf("Object %s added to bucket %s\n", keyName, bucketName); // Delete the version of the object that we just created. System.out.println("Deleting versioned object " + keyName); s3Client.deleteVersion(new DeleteVersionRequest(bucketName, keyName, putResult.getVersionId())); System.out.printf("Object %s, version %s deleted\n", keyName, putResult.getVersionId()); } } catch(AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch(SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }