削除マーカーの使用
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
を示しています。
リクエストで versionId
を指定してオブジェクトに対して GetObject
コールを行った場合、指定したバージョンが削除マーカーであると、Amazon S3 は 405 (Method Not Allowed) エラーで応答し、レスポンスヘッダーには x-amz-delete-marker: true
と Last-Modified: timestamp
が含まれます。
削除マーカー (およびオブジェクトのその他のバージョン) をリストするには、ListObjectVersions リクエストで versions
サブリソースを使用するしかありません。次の図で、ListObjectsV2 リクエストや ListObjects リクエストは、現在のバージョンが削除マーカーであるオブジェクトを返さないことを示しています。