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

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

다음 작업은 AWS SDK for Java 클래스를 사용하여 객체를 삭제하는 방법을 보여줍니다.

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

1

AmazonS3Client 클래스의 인스턴스를 만듭니다.

2

AmazonS3Client.deleteObject 메서드 중 하나를 실행합니다.

파라미터로 버킷 이름과 객체 이름을 제공할 수도 있고, DeleteObjectRequest 객체에 동일한 정보를 제공하여 이 객체를 파라미터로 전달할 수도 있습니다.

버킷에서 버전 관리를 활성화하지 않은 경우 이 작업이 객체를 삭제합니다. 버킷에서 버전 관리를 활성화한 경우 이 작업이 삭제 마커를 추가합니다. 자세한 내용은 요청당 단일 객체 삭제를 참조하십시오.

다음은 앞선 단계에서 설명한 작업을 실행하는 Java 샘플입니다. 이 샘플은 DeleteObjectRequest 클래스를 사용하여 버킷 이름과 객체 키를 제공합니다.

Copy
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider()); s3client.deleteObject(new DeleteObjectRequest(bucketName, keyName));

특정 객체 버전 삭제(버전이 지정된 버킷)

1

AmazonS3Client 클래스의 인스턴스를 만듭니다.

2

AmazonS3Client.deleteVersion 메서드 중 하나를 실행합니다.

버킷 이름과 객체 키를 파라미터로 직접 제공할 수도 있고, DeleteVersionRequest를 사용하여 동일한 정보를 제공할 수도 있습니다.

다음은 앞선 단계에서 설명한 작업을 실행하는 Java 샘플입니다. 이 샘플은 DeleteVersionRequest 클래스를 사용하여 버킷 이름, 객체 키 및 버전 ID를 제공합니다.

Copy
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider()); s3client.deleteObject(new DeleteVersionRequest(bucketName, keyName, versionId));

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

다음 Java 예제는 버킷에서 객체를 삭제합니다. 버킷에서 버전 관리를 활성화하지 않은 경우 Amazon S3가 객체를 삭제합니다. 버전 관리를 활성화한 경우 Amazon S3가 삭제 마커를 추가하고 객체는 삭제되지 않습니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Java 코드 예제 테스트를 참조하십시오.

Copy
import java.io.IOException; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.DeleteObjectRequest; public class DeleteAnObjectNonVersionedBucket { private static String bucketName = "*** Provide a Bucket Name ***"; private static String keyName = "*** Provide a Key Name ****"; public static void main(String[] args) throws IOException { AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); try { s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName)); } catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException."); System.out.println("Error Message: " + ace.getMessage()); } } }

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

다음 Java 예제는 버전이 지정된 버킷에서 특정 객체 버전을 삭제합니다. deleteObject 요청은 버킷에서 특정 객체 버전을 제거합니다.

샘플을 테스트하려면 버킷 이름을 제공해야 합니다. 코드 샘플은 다음 작업을 수행합니다.

  1. 버킷의 버전 관리를 활성화합니다.

  2. 버킷에 샘플 객체를 추가합니다. 응답으로 Amazon S3가 새로 추가된 객체의 버전 ID를 반환합니다.

  3. deleteVersion 메서드를 사용하여 샘플 객체를 삭제합니다. DeleteVersionRequest 클래스는 객체 키 이름과 버전 ID를 모두 지정합니다.

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

Copy
import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.Random; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.BucketVersioningConfiguration; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.DeleteVersionRequest; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.PutObjectResult; import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest; public class DeleteAnObjectVersionEnabledBucket { static String bucketName = "*** Provide a Bucket Name ***"; static String keyName = "*** Provide a Key Name ****"; static AmazonS3Client s3Client; public static void main(String[] args) throws IOException { s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); try { // Make the bucket version-enabled. enableVersioningOnBucket(s3Client, bucketName); // Add a sample object. String versionId = putAnObject(keyName); s3Client.deleteVersion( new DeleteVersionRequest( bucketName, keyName, versionId)); } catch (AmazonServiceException ase) { System.out.println("Caught an AmazonServiceException."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException."); System.out.println("Error Message: " + ace.getMessage()); } } static void enableVersioningOnBucket(AmazonS3Client s3Client, String bucketName) { BucketVersioningConfiguration config = new BucketVersioningConfiguration() .withStatus(BucketVersioningConfiguration.ENABLED); SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest = new SetBucketVersioningConfigurationRequest( bucketName, config); s3Client.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest); } static String putAnObject(String keyName) { String content = "This is the content body!"; String key = "ObjectToDelete-" + new Random().nextInt(); ObjectMetadata metadata = new ObjectMetadata(); metadata.setHeader("Subject", "Content-As-Object"); metadata.setHeader("Content-Length", content.length()); PutObjectRequest request = new PutObjectRequest(bucketName, key, new ByteArrayInputStream(content.getBytes()), metadata) .withCannedAcl(CannedAccessControlList.AuthenticatedRead); PutObjectResult response = s3Client.putObject(request); return response.getVersionId(); } }