バージョニングが有効なバケットからのオブジェクトバージョンの削除
オブジェクトのバージョンは Amazon S3 バケットからいつでも削除できます。さらに、明確なライフサイクルが定義されているオブジェクトのライフサイクル設定ルールを定義することにより、最新のオブジェクトバージョンを有効期限切れにしたり、以前のオブジェクトバージョンを完全に削除したりするよう Amazon S3 にリクエストできます。バケットでバージョニングが有効であるか、バージョニングが停止されている場合、ライフサイクル設定アクションは次のように動作します。
-
Expiration
アクションは、最新のオブジェクトバージョンに適用されます。Amazon S3 は、最新のオブジェクトバージョンを削除するのではなく、削除マーカーを追加してそれを最新バージョンにします。これにより、最新バージョンは以前のバージョンとして保持されます。 -
NoncurrentVersionExpiration
アクションは、以前のオブジェクトバージョンに適用されます。Amazon S3 はこれらのオブジェクトバージョンを完全に削除します。完全に削除したオブジェクトは復元できません。
S3 ライフサイクルの詳細については、「オブジェクトのライフサイクルの管理」および「S3 ライフサイクル設定の例」を参照してください。
バケットにある現在のオブジェクトバージョンと最新でないオブジェクトバージョンの数を確認するには、Amazon S3 ストレージレンズメトリクスを使用できます。S3 ストレージレンズは、オブジェクトストレージの使用状況とアクティビティを組織全体で可視化するために使用できるクラウドストレージの分析機能です。詳細については、「S3 Storage Lens を使用したストレージコストの最適化」を参照してください。メトリクスの完全なリストについては、「S3 Storage Lens のメトリクスに関する用語集」を参照してください。
注記
通常の Amazon S3 料金は、最新ではないオブジェクトのバージョンなど、保存または移行されるオブジェクトのバージョンごとに適用されます。詳細については、「Amazon S3 の料金
リクエストのユースケースを削除する
DELETE
リクエストには次のユースケースがあります。
-
バージョニングが有効になっている場合、単純な
DELETE
はオブジェクトを完全に削除することはできません (単純なDELETE
リクエストとは、バージョン ID を指定しないリクエストです)。代わりに、Amazon S3 はバケットに削除マーカーを挿入します。このマーカーが新しい ID を持つオブジェクトの最新バージョンになります。最新バージョンが削除マーカーであるオブジェクトを
GET
しようとすると、Amazon S3 は、オブジェクトが (消去されていなくても) 削除されたものとして動作し、エラー 404 を返します。詳細については、「削除マーカーの使用」を参照してください。次の図は、シンプルな
DELETE
が、指定したオブジェクトを実際には削除しないことを示しています。代わりに、Amazon S3 は削除マーカーを挿入します。 -
バージョニングされたオブジェクトを完全に削除するときは、必ず
DELETE Object versionId
を使用します。次の図は、指定したオブジェクトバージョンを削除することによって、そのオブジェクトを完全に削除する方法を示しています。
オブジェクトバージョンを削除するには
Amazon S3 内のオブジェクトバージョンは、コンソール、AWS SDK、REST API、または AWS Command Line Interface を使用して削除できます。
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。
-
オブジェクト一覧から、オブジェクトの名前を選択します。
-
[バージョン] を選択します。
Amazon S3 にオブジェクトのバージョンがすべて表示されます。
-
完全に削除するバージョンのバージョン ID の横のチェックボックスをオンにします。
-
[削除] を選択します。
-
[オブジェクトを完全に削除しますか?] に、
permanently delete
と入力します。警告
オブジェクトバージョンを完全に削除すると、アクションを元に戻すことができません。
-
[オブジェクトの削除] を選択します。
Amazon S3 がオブジェクトのバージョンを削除します。
AWS SDK for Java、.NET、PHP を使用してオブジェクトを削除する例については、Amazon S3 オブジェクトの削除 を参照してください。バージョニングが無効なバケットと有効なバケットでオブジェクトを削除する場合の例は、同一です。ただし、バージョニングが有効なバケットには、Amazon S3 がバージョン番号を割り当てます。それ以外の場合、バージョン番号は null になります。
他の AWS SDK の使用の詳細については、「AWS デベロッパーセンター
オブジェクトの特定のバージョンを削除するには
-
DELETE
でバージョン ID を指定します。
例 - 特定のバージョンの削除
次の例では、photo.gif
のバージョン UIORUnfnd89493jJFJ
を削除します。
DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 0
次のコマンドは、
という名前のバケットから test.txt という名前のオブジェクトを削除します。特定のバージョンのオブジェクトを削除するには、バケット所有者として、バージョン ID サブリソースを使用する必要があります。amzn-s3-demo-bucket1
aws s3api delete-object --bucket
amzn-s3-demo-bucket1
--key test.txt --version-idversionID
delete-object
に関する詳細については、「AWS CLI コマンドリファレンス」の「delete-object」を参照してください。
オブジェクトバージョンの削除の詳細については、以下のトピックを参照してください。