使用刪除標記 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用刪除標記

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(找不到)錯誤。

刪除標記會累算在 Amazon S3 中因儲存而收取的最低費用中。刪除標記的儲存大小等於刪除標記的金鑰名稱大小。金鑰名稱是一連串的 Unicode 字元。金鑰名稱的 UTF-8 編碼會將 1 到 4 個位元組的儲存空間新增至名稱中每個字元的儲存貯體。刪除標記會存放在 S3 標準儲存類別中。

如果您想要了解您有多少個刪除標記以及存放它們的儲存類別,則可以使用 Amazon S3 Storage Lens。如需詳細資訊,請參閱 使用 Amazon S3 Storage Lens 評估儲存活動和使用量Amazon S3 Storage Lens 指標詞彙表

如需金鑰名稱的詳細資訊,請參閱「建立物件索引鍵名稱」。如需刪除刪除標記的資訊,請參閱「管理刪除標記」。

只有 Amazon S3 才能建立刪除標記,而且只要您對啟用或暫停版本控制的儲存貯體中的物件傳送 DeleteObject 要求,就會這麼做。DELETE 請求中所指定的物件實際上並不會刪除。相反地,刪除標記會成為物件的目前版本 物件的金鑰名稱 (或金鑰) 會成為刪除標記的金鑰。

如果您未在請求中指定 versionId 而取得物件,且其目前版本是刪除標記,則 Amazon S3 會回應以下內容:

  • 404 (找不到) 錯誤

  • 回應標頭 x-amz-delete-marker: true

如果您在請求中指定 versionId 而取得物件,且指定的版本是刪除標記,則 Amazon S3 會回應以下內容:

  • 405(不允許的方法)錯誤

  • 回應標頭 x-amz-delete-marker: true

  • 回應標頭 Last-Modified: timestamp (僅在使用HeadObjectGetObjectAPI 作業時)

x-amz-delete-marker: true 回應標頭會告訴您所存取的物件是刪除標記。此回應標頭永遠不會傳回 false,因為當值為 false 時,物件的目前或指定版本不是刪除標記。

Last-Modified 回應標頭會提供刪除標記的建立時間。

下圖顯示目前版本為刪除標記的物件上的 GetObject API 呼叫回應 404 (找不到) 錯誤,且回應標頭包含 x-amz-delete-marker: true 的情形。

圖中顯示對刪除標記的 GetObject 呼叫傳回 404 (找不到) 錯誤。

如果您在請求中指定 versionId 來對物件進行 GetObject 呼叫,且指定的版本是刪除標記,Amazon S3 會回應 405 (方法不允許) 錯誤,且回應標頭包含 x-amz-delete-marker: trueLast-Modified: timestamp

顯示GetObject呼叫刪除標記傳回 405 (不允許方法) 錯誤的插圖。

列出刪除標記 (以及其他版本的物件) 的唯一方式是在 versions 要求中使用 ListObjectVersions 子資源。下圖顯示 ListObjectsV2ListObjects 請求不會傳回其目前版本是刪除標記的物件。

顯示ListObjectsV2或ListObjects呼叫如何傳回任何刪除標記的插圖。