メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for Java を使用したオブジェクトの削除

以下のタスクは、AWS SDK for Java のクラスを使用して、1 つのオブジェクトを削除する手順を示しています。

オブジェクトの削除(バージョニング非対応のバケット)

1

AmazonS3Client クラスのインスタンスを作成します。

2

AmazonS3Client.deleteObject メソッドのいずれかを実行します。

バケット名とオブジェクト名をパラメーターとして指定するか、同じ情報を DeleteObjectRequest オブジェクトに指定し、そのオブジェクトをパラメーターとして渡すことができます。

バケットに対してバージョニングを有効にしていない場合は、オペレーションでオブジェクトが削除されます。バージョニングを有効にしている場合は、オペレーションで削除マーカーが追加されます。詳細については、「1 件のリクエストで 1 つのオブジェクトを削除」を参照してください。

次の 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(); } }