削除マーカーは、DeleteObject リクエストによって指定されるプレースホルダーです。バージョン管理が有効または一時停止になっているバケット内のオブジェクトが削除されたことを示すために使用されます。削除マーカーに関する知識は、バージョン管理の効果的な管理に役立ちます。削除マーカーは、削除されたオブジェクトの適切な処理を促進し、データの正確な追跡と回復を可能にします。
オブジェクトとの比較
削除マーカーは、オブジェクトと同様にオブジェクト名(またはキー)とバージョン ID を持ちますが、次の点でオブジェクトとは異なります。
削除マーカーはデータを保存しません。
削除マーカーには、アクセス制御リスト(ACL)が設定されていません。
削除マーカーにはデータが保存されていないため、GetObject リクエストを実行してもコンテンツは取得されません。削除マーカーが現在のバージョンであるオブジェクトに対して GetObject リクエストを開始すると、404 と対応するエラーメッセージが返されます。
oss:DeleteObjectVersion
権限を持つユーザーのみが、削除マーカーに対して削除操作を実行できます。
バージョン管理が有効または一時停止になっているバケット内のオブジェクトに対して DeleteObject リクエストを開始すると、オブジェクトの削除マーカーが生成されます。削除するオブジェクトのバージョン ID を指定しない場合、Object Storage Service(OSS)はオブジェクトを削除する代わりに、削除マーカーをオブジェクトの現在のバージョンとして割り当てます。
バージョン管理が有効になっているバケットに保存されているオブジェクトは削除できません。ただし、削除マーカーが付いたオブジェクトは、削除されたオブジェクトと見なすことができます。
削除マーカーの削除
次のセクションでは、バージョン管理が有効なバケットの削除マーカーを削除する方法について説明します。
DeleteObject リクエストでオブジェクトのバージョン ID を指定しない場合、OSS は新しい削除マーカーをオブジェクトの現在のバージョンとして割り当てます。次の図は、1 つのオブジェクトに複数の削除マーカーが存在できることを示しています。
バージョン管理が有効なバケットでは、1 つのオブジェクトに複数の削除マーカーが存在でき、削除マーカーは一意のバージョン ID に対応します。
削除マーカーを完全に削除するには、DeleteObject リクエストにバージョン ID を含める必要があります。次の図は、DeleteObject リクエストによってバージョン ID が 333333 の削除マーカーが完全に削除される様子を示しています。その後、バージョン 222222 がオブジェクトの現在のバージョンになります。
オブジェクトの特定のバージョンとオブジェクトの削除マーカーを削除するには、さまざまなプログラミング言語に対応した以下の OSS SDK を使用できます。Java SDK、Python SDK、PHP SDK、Node.js SDK、.NET SDK、Go SDK、および C++ SDK。