単一のオブジェクトの削除 - Amazon Simple Storage Service

単一のオブジェクトの削除

Amazon S3 コンソールまたは DELETE API を使用して、S3 バケットから 1 つの既存のオブジェクトを削除できます。Amazon S3 でのオブジェクト削除の詳細については、「Amazon S3 オブジェクトの削除」を参照してください。

S3 バケット内のすべてのオブジェクトによりストレージコストが生じるため、不要になったオブジェクトを削除する必要があります。例えば、ログファイルを収集している場合は、不要になったファイルを削除することをお勧めします。ログファイルなどのオブジェクトを自動的に削除するライフサイクルルールをセットアップできます。詳細については、バケットのライフサイクル設定の指定 を参照してください。

Amazon S3 の機能と料金の詳細については、Amazon S3 料金を参照してください。

Amazon S3 コンソールを使用してバケットから 1 つのオブジェクトを削除するには、以下の手順に従ってください。

警告

Amazon S3 コンソールでオブジェクトまたは指定されたオブジェクトバージョンを完全に削除した場合、削除を元に戻すことはできません。

バージョニングが有効化または停止されているオブジェクトを削除するには
注記

バージョニングが停止されたバケット内のオブジェクトのバージョン ID が NULL とマークされている場合、S3 は以前のバージョンが存在しないためオブジェクトを完全に削除します。ただし、バージョニングが停止されたバケット内のオブジェクトに有効なバージョン ID が一覧表示されている場合、S3 は削除されたオブジェクトの削除マーカーを作成し、オブジェクトの以前のバージョンを保持します。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトを削除するバケットの名前を選択します。

  3. オブジェクトを選択した後、[削除] を選択します。

  4. [指定されたオブジェクト] に表示されているオブジェクトが削除されていることを確認するには、[オブジェクトを削除しますか?] テキスト ボックスに「delete」と入力します。

バージョニングが有効なバケット内の特定のオブジェクトバージョンを完全に削除するには
警告

Amazon S3 で指定されたオブジェクトバージョンを完全に削除した場合、削除を元に戻すことはできません。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトを削除するバケットの名前を選択します。

  3. 削除するオブジェクトを選択します。

  4. [バージョンを表示] トグルを選択します。

  5. オブジェクトバージョンを選択した後、[削除] を選択します。

  6. [指定されたオブジェクト] に表示されている特定のオブジェクトバージョンが完全に削除されていることを確認するには、[オブジェクトを削除しますか?] テキスト ボックスに 「完全に削除」 と入力します。Amazon S3 がその特定のオブジェクトバージョンを完全に削除します。

バージョニングが有効になっていない Amazon S3 バケット内のオブジェクトを完全に削除するには
警告

Amazon S3 でオブジェクトを完全に削除した場合、削除を元に戻すことはできません。また、バージョニングが有効になっていないバケットの場合、削除は恒久的です。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトを削除するバケットの名前を選択します。

  3. オブジェクトを選択した後、[削除] を選択します。

  4. [指定されたオブジェクト] に表示されているオブジェクトが完全に削除されていることを確認するには、[オブジェクトを削除しますか?] テキスト ボックスに [完全に削除] と入力します。

注記

オブジェクトの削除に問題がある場合は、「バージョニングされたオブジェクトを完全に削除する」を参照してください。

以下の例では、AWS SDK を使用してバケットからオブジェクトを削除する方法を示します。詳細については、Amazon Simple Storage Service API リファレンスDELETE Object を参照してください。

バケットで S3 バージョニングが有効化されている場合は、以下のオプションを使用できます。

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

  • バージョン ID を指定しないでオブジェクトを削除します。この場合、Amazon S3 によってオブジェクトに削除マーカーが追加されます。

S3 バージョニングの詳細については、S3 バケットでのバージョニングの使用 を参照してください。

Java
例 1: オブジェクトを削除する (バージョニング非対応のバケット)

この例では、バケットでバージョン管理が有効になっておらず、オブジェクトにバージョン ID がないことを前提としてます。削除リクエストで、オブジェクトキーのみを指定し、バージョン ID を指定しません。

ワーキングサンプルの作成とテストに関する手順については、Amazon S3 Java コード例のテスト を参照してください。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.DeleteObjectRequest; import java.io.IOException; public class DeleteObjectNonVersionedBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_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 は指定されたバージョンのみを削除します。

    注記

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

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; 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; import java.io.IOException; public class DeleteObjectVersionEnabledBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_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(); } } }
.NET

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

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

次の C# の例では、バージョニング非対応のバケットからオブジェクトを削除します。この例では、オブジェクトにバージョン ID がないため、バージョン ID を指定しないものとします。オブジェクトキーのみ指定します。

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

using Amazon; 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 deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message); } } } }
例 バージョニング対応バケットからのオブジェクトの削除

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

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

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

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

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

    注記

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

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

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

using Amazon; 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 deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting 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; } } }
PHP

このトピックでは、バージョン 3 の AWS SDK for PHP のクラスを使用して、バージョニング非対応のバケットからオブジェクトを削除する方法を示します。バージョニング対応のバケットから 1 つのオブジェクトを削除する方法については、REST API の使用 を参照してください。

この例では、AWS SDK for PHP の使用と PHP サンプルの実行 の手順を既に実行しており、AWS SDK for PHP が正しくインストールされていることを前提としています。PHP 例の実行については、このガイド内の PHP サンプルの実行 を参照してください。

次の PHP の例では、バケットからオブジェクトを削除します。この例で示す方法では、バージョニング非対応のバケットからオブジェクトを削除するため、削除リクエストではバケット名とオブジェクトキーのみを指定し、バージョン ID は指定しません。

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // 1. Delete the object from the bucket. try { echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL; $result = $s3->deleteObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); if ($result['DeleteMarker']) { echo $keyname . ' was deleted or does not exist.' . PHP_EOL; } else { exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL); } } catch (S3Exception $e) { exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL); } // 2. Check to see if the object was deleted. try { echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL; $result = $s3->getObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); echo 'Error: ' . $keyname . ' still exists.'; } catch (S3Exception $e) { exit($e->getAwsErrorMessage()); }
Javascript

この例では、バージョン 3 の AWS SDK for JavaScript のクラスを使用してオブジェクトを削除する方法を示します。AWS SDK for JavaScript の詳細については、AWS SDK for JavaScript の使用 を参照してください。

import { DeleteObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js" // Helper function that creates Amazon S3 service client module. export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY" }; export const run = async () => { try { const data = await s3Client.send(new DeleteObjectCommand(bucketParams)); console.log("Success. Object deleted.", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

1 件のリクエストで 1 つのオブジェクトを削除するには、DELETE API を使用します。詳細については、DELETE オブジェクトを参照してください。CLI を使用してオブジェクトを削除する方法の詳細については、delete−object」参照してください。

AWS SDK を使用して、1 つのオブジェクトを削除できます。ただし、アプリケーションで必要な場合は、REST リクエストを直接送信できます。詳細については、Amazon Simple Storage Service API リファレンスDELETE Object を参照してください。