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

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

バージョニング非対応のバケットからオブジェクトを削除すると、オブジェクトは完全に削除されます。バケットでバージョニングが有効化されている場合は、以下のオプションを使用できます。

  • バージョン ID を指定して、オブジェクトの特定のバージョンを削除します。

  • バージョン ID を指定しないでオブジェクトを削除します。Amazon S3 によって削除マーカーが追加されます。削除マーカーの詳細については、「オブジェクトのバージョニング」を参照してください。

以下の例では、バージョニング対応および非対応のバケットからオブジェクトを削除する方法を示します。バージョニングの詳細については、「オブジェクトのバージョニング」を参照してください。

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

次の C# の例では、バージョニング非対応のバケットからオブジェクトを削除します。この例では、オブジェクトにバージョン ID がないため、バージョン ID を指定しないものとします。オブジェクトキーのみ指定します。有効なサンプルを作成してテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectNonVersionedBucketTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); DeleteObjectNonVersionedBucketAsync().Wait(); } private static async Task DeleteObjectNonVersionedBucketAsync() { try { var deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(deleteObjectRequest); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }

例 バージョニング対応バケットからのオブジェクトの削除

次の C# の例では、バージョニング対応のバケットからオブジェクトを削除します。オブジェクトのキー名とバージョン ID を指定してオブジェクトの特定のバージョンを削除します。

このコードでは、以下のタスクを実行します。

  1. 指定したバケットのバージョニングを有効にします (バージョニングがすでに有効になっている場合は、何もしません)。

  2. サンプルオブジェクトをバケットに追加します。レスポンスとして、Amazon S3 は新しく追加されたオブジェクトのバージョン ID を返します。この例では、このバージョン ID を削除リクエストで使用します。

  3. オブジェクトのキー名とバージョン ID の両方を指定してサンプルオブジェクトを削除します。

    注記

    オブジェクトのバージョン ID は、ListVersions リクエストを送信して取得することもできます。

    var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName });

有効なサンプルを作成してテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectVersion { private const string bucketName = "*** versioning-enabled bucket name ***"; private const string keyName = "*** Object Key Name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateAndDeleteObjectVersionAsync().Wait(); } private static async Task CreateAndDeleteObjectVersionAsync() { try { // Add a sample object. string versionID = await PutAnObject(keyName); // Delete the object by specifying an object key and a version ID. DeleteObjectRequest request = new DeleteObjectRequest { BucketName = bucketName, Key = keyName, VersionId = versionID }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(request); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task<string> PutAnObject(string objectKey) { PutObjectRequest request = new PutObjectRequest { BucketName = bucketName, Key = objectKey, ContentBody = "This is the content body!" }; PutObjectResponse response = await client.PutObjectAsync(request); return response.VersionId; } } }