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

削除マーカーの使用

Amazon S3 の削除マーカーは、シンプルな DELETE リクエストで指定された、バージョニングされたオブジェクトのプレースホルダー (マーカー) です。オブジェクトがバージョニングが有効なバケット内にあるため、そのオブジェクトは削除されません。ただし、削除マーカーによって、Amazon S3 はオブジェクトが削除されたかのように動作します。

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

  • 関連付けられたデータがない。

  • アクセスコントロールリスト (ACL) 値に関連付けられていない。

  • データがないため、GET リクエストから何も取得しない (エラー 404 を受け取る)。

  • 削除マーカーで使用できるオペレーションは、Amazon S3 API DELETE コールだけです。これを行うには、適切な許可を持つ AWS Identity and Access Management (IAM) ユーザーまたはロールを使用して DELETE リクエストを実行する必要があります。

削除マーカーにより、Amazon S3 内のストレージに対して最低料金が発生します。削除マーカーのストレージサイズは、その削除マーカーのキー名のサイズと同じです。キー名は一連の Unicode 文字です。UTF-8 エンコーディングでは、名前の各文字につき 1~4 バイトのストレージがバケットに追加されます。削除マーカーは S3 Standard ストレージクラスに保存されます。保持している削除マーカーの数と、それが保存されているストレージクラスを知りたい場合は、Amazon S3 Storage Lens を使用できます。詳細については、Amazon S3 ストレージレンズを使用してストレージのアクティビティと使用状況を評価する および Amazon S3 Storage Lens のメトリクスに関する用語集 を参照してください。

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

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

  • エラー 404 (オブジェクトが見つからない)

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

現在のバージョンが削除マーカーであるオブジェクトに対して API コールを行い、そのリクエストが削除マーカーに対して実行できないアクションであった場合、Amazon S3 は以下のように応答します。

  • 405 (Method Not Allowed) エラー

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

レスポンスヘッダーから、アクセスされたオブジェクトが削除マーカーであったことがわかります。値が false の場合、Amazon S3 はレスポンスにこのレスポンスヘッダーを含めないため、このレスポンスヘッダーが false を返すことはありません。

次の図は、最新バージョンが削除マーカーであるオブジェクトに対するシンプルな GET が、エラー 404「No Object Found」を返す方法を示しています。

削除マーカー (およびオブジェクトのその他のバージョン) をリストするには、GET Bucket versions リクエストで versions サブリソースを使用するしかありません。シンプルな GET は、削除マーカーオブジェクトを取得しません。次の図は、GET Bucket リクエストが、最新バージョンが削除マーカーであるオブジェクトを返さないことを示しています。