削除マーカーの使用 - Amazon Simple Storage Service

削除マーカーの使用

Amazon S3 の削除マーカーは、単純な DELETE リクエストで指定された、バージョニングされたオブジェクトのプレースホルダー (またはマーカー) です。単純な DELETE リクエストとは、バージョン ID を指定しないリクエストです。オブジェクトがバージョニングが有効なバケット内にあるため、そのオブジェクトは削除されません。ただし、削除マーカーにより、Amazon S3 はオブジェクトが削除されたかのように動作します。削除マーカーに対しては、Amazon S3 API DELETE コールを使用できます。これを行うには、適切なアクセス許可を持つ AWS Identity and Access Management (IAM) ユーザーまたはロールを使用して DELETE リクエストを行う必要があります。

削除マーカーには、他のすべてのオブジェクトと同様に、キー名 (またはキー) とバージョン ID があります。ただし、削除マーカーは次のような点で他のオブジェクトとは異なります。

  • 削除マーカーには、データが関連付けられていません。

  • 削除マーカーには、アクセスコントロールリスト (ACL) の値が関連付けられていません。

  • 削除マーカーに対する GET リクエストを発行しても、削除マーカーにはデータがないため、GET リクエストでは何も取得されません。具体的には、GET リクエストで versionId を指定しない場合、404 (Not Found) エラーが表示されます。

削除マーカーにより、Amazon S3 内のストレージに対して最低料金が発生します。削除マーカーのストレージサイズは、その削除マーカーのキー名のサイズと同じです。キー名は一連の Unicode 文字です。キー名の UTF-8 エンコーディングでは、名前の文字ごとに 1~4 バイトのストレージがバケットに追加されます。削除マーカーは S3 Standard ストレージクラスに保存されます。

削除マーカーの保有数と、保存先のストレージクラスを確認する場合は、Amazon S3 ストレージレンズを使用できます。詳細については、Amazon S3 ストレージレンズを使用してストレージのアクティビティと使用状況を評価するおよびAmazon S3 Storage Lens のメトリクスに関する用語集を参照してください。

有効なキー名の詳細については、Amazon S3 オブジェクトに命名する を参照してください。削除マーカーの削除の詳細については、「削除マーカーの管理」を参照してください。

Amazon S3 のみが削除マーカーを作成することができ、バージョニングが有効なバケットまたは停止されたバケット内のオブジェクトに対して DeleteObject リクエストが送信されるたびにこの作成を行います。DELETE リクエストで指定したオブジェクトは実際には削除されず、代わりに削除マーカーがオブジェクトの最新バージョンになります。オブジェクトのキー名 (またはキー) が削除マーカーのキーになります。

リクエストで versionId を指定せずにオブジェクトを取得するときに、現在のバージョンが削除マーカーである場合、Amazon S3 は次のように応答します。

  • 404 (Not Found) エラー

  • レスポンスヘッダー、x-amz-delete-marker: true

リクエストで versionId を指定してオブジェクトを取得するときに、指定したバージョンが削除マーカーである場合、Amazon S3 は次のように応答します。

  • 405 (Method Not Allowed) エラー

  • レスポンスヘッダー、x-amz-delete-marker: true

  • レスポンスヘッダー、Last-Modified: timestamp (HeadObject または GetObject API オペレーションを使用する場合のみ)

x-amz-delete-marker: true レスポンスヘッダーから、アクセスしたオブジェクトが削除マーカーであったことがわかります。値が false である場合、オブジェクトの現在のバージョンまたは指定したバージョンは削除マーカーではないため、このレスポンスヘッダーは false を返しません。

Last-Modified レスポンスヘッダーには削除マーカーの作成時間が表示されます。

次の図は、現在のバージョンが削除マーカーであるオブジェクトに対する GetObject API コールから返される 404 (No Found) エラーと、レスポンスヘッダーに含まれる x-amz-delete-marker: true を示しています。

削除マーカーに対する GetObject コールが 404 (No Found) エラーを返すことを示す図。

リクエストで versionId を指定してオブジェクトに対して GetObject コールを行った場合、指定したバージョンが削除マーカーであると、Amazon S3 は 405 (Method Not Allowed) エラーで応答し、レスポンスヘッダーには x-amz-delete-marker: trueLast-Modified: timestamp が含まれます。

削除マーカーの GetObject コールが 405 (メソッドが許可されていません) エラーを返すことを説明する図

削除マーカー (およびオブジェクトのその他のバージョン) をリストするには、ListObjectVersions リクエストで versions サブリソースを使用するしかありません。次の図で、ListObjectsV2 リクエストや ListObjects リクエストは、現在のバージョンが削除マーカーであるオブジェクトを返さないことを示しています。

ListObjectsV2 コールまたは ListObjects コールが削除マーカーを返さないことを説明する図