刪除標記(Delete Marker)是用於受版本控制的對象(Object)的預留位置, 即DELETE請求中命名的標記符。
刪除標記與Object的差異
與其他任何Object一樣,刪除標記同樣有檔案名稱(Key) 和版本ID,但刪除標記在以下方面與其他Object不同:
沒有關聯的資料。
沒有關聯的存取控制清單(ACL)值。
由於刪除標記不包含資料,因此GET請求檢索不到任何內容。如果Object的目前的版本為刪除標記,則對該Object發起GET請求時會返回404錯誤。
僅具有
oss:DeleteObjectVersion
許可權的RAM使用者才能對刪除標記執行DELETE操作。
對已開啟版本控制或已暫停版本控制的Bucket中的Object發送DeleteObject請求時,OSS將為Object建立刪除標記。如果在DeleteObject請求中未指定Object的版本ID,則不會刪除Object ,而是建立刪除標記作為Object的目前的版本。
無法直接刪除已開啟版本控制的Bucket中的Object ,但刪除標記可以將Object視為已刪除。
如何刪除“刪除標記”
以下內容介紹如何在已開啟版本控制的Bucket中刪除“刪除標記”。
如果在DeleteObject請求中未指定刪除標記的版本ID,則OSS不會刪除“刪除標記”,而是插入刪除標記作為Object的目前的版本。刪除標記可以進行累積,如下圖所示。
在已開啟版本控制的Bucket中,相同的Object可能有多個刪除標記,且刪除標記將對應唯一的版本ID。
如果在DeleteObject請求中指定版本ID ,則該指定版本的Object將被永久刪除,如下圖所示(即刪除versionId=333333的刪除標記,versionId=222222的版本成為Object的目前的版本)。
您可以通過Java SDK、Python SDK、PHP SDK、Node.js SDK、.NET SDK、Go SDK、C++ SDK刪除指定版本Object及其刪除標記。