削除マーカーは、DeleteObjectリクエストで指定されるプレースホルダーです。 バージョン管理が有効または一時停止されているバケット内のオブジェクトが削除されていることを示します。
オブジェクトとの比較
削除マーカーには、オブジェクトと同様にオブジェクト名 (またはキー) とバージョンIDがありますが、次の点でオブジェクトとは異なります。
- 削除マーカーには、データが含まれません。
- 削除マーカーにはアクセス制御リスト (ACL) が設定されていません。
- 削除マーカーに対して GetObject リクエストを開始した場合、データが含まれないため、コンテンツは返されません。 現在のバージョンが削除マーカーのオブジェクトに対して GetObject リクエストを開始した場合、404 および対応するエラーメッセージが返されます。
oss:DeleteObjectVersion
権限のみを持つユーザーは、削除マーカーに対する削除操作のみを実行できます。
バージョン管理が有効または一時停止されているバケット内のオブジェクトに対してDeleteObjectリクエストを開始すると、削除マーカーが生成されます。 DeleteObjectリクエストで削除するオブジェクトのバージョンIDを指定しない場合、object Storage Service (OSS) は、オブジェクトを削除するのではなく、オブジェクトに現在のバージョンとして削除マーカーを割り当てます。
説明 バージョン管理が有効になっているバケットに保存されているオブジェクトは削除できません。 ただし、削除マーカーを持つオブジェクトを削除済みオブジェクトと見なすことができます。
削除マーカーの削除
次のセクションでは、バージョン管理が有効なバケットの削除マーカーを削除する方法について説明します。
DeleteObjectリクエストでオブジェクトの削除マーカーのバージョンIDを指定しない場合、OSSは削除マーカーを削除せず、オブジェクトの現在のバージョンとして新しい削除マーカーをオブジェクトに割り当てます。 次の図は、オブジェクトに複数の削除マーカーを設定できることを示しています。
説明 バージョン管理が有効なバケットでは、オブジェクトは複数の削除マーカーを持つことができ、削除マーカーは一意のバージョンIDに対応します。
削除マーカーを完全に削除するには、DeleteObject リクエストにバージョン ID を含める必要があります。 次の図に示すように、DeleteObject リクエストではバージョン ID 333333 の削除マーカーが永久に削除されます。 次に、バージョン222222がオブジェクトの現在のバージョンになります。
Java SDK、Python SDK、PHP SDK、Node.js SDK、オブジェクトの特定のバージョンと削除マーカーを削除するには、さまざまなプログラミング言語のOSS SDKを使用します。NET SDK、Go SDK、およびC ++ SDK。