刪除啟用版本控制功能之儲存貯體中的物件 - Amazon Simple Storage Service

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

刪除啟用版本控制功能之儲存貯體中的物件

您可以隨時從 Amazon S3 儲存貯體中刪除物件版本。針對明確定義生命週期的物件,您還可以定義生命週期組態規則,以要求 Amazon S3 讓目前物件版本過期,或永久移除非目前的物件版本。當您的儲存貯體已啟用版本控制或版本控制暫停時,生命週期組態動作的運作方式如下:

  • Expiration 動作會套用至目前物件版本。Amazon S3 並不會刪除目前物件版本,而是新增刪除標記,將目前版本保留為非目前版本,這之後會成為目前版本。

  • NoncurrentVersionExpiration 動作會套用至非目前物件版本,而 Amazon S3 會永久移除這些物件版本。您無法復原永久移除的物件。

如需 S3 生命週期的詳細資訊,請參閱 管理物件的生命週期S3 生命週期組態的範例

若要查看您的儲存貯體有多少個目前和非目前物件版本,您可以使用 Amazon S3 Storage Lens 指標。S3 Storage Lens 是一種雲端儲存體分析功能,您可以用來了解整個組織使用物件儲存體的情況及其活動情形。如需詳細資訊,請參閱使用 S3 Storage Lens 最佳化儲存成本。如需完整的指標清單,請參閱 S3 Storage Lens 指標詞彙表

注意

一般 Amazon S3 費率適用於儲存和傳輸的物件的每個版本,包括非目前物件版本。如需詳細資訊,請參閱 Simple Storage Service (Amazon S3) 定價

刪除要求使用案例

DELETE 要求的使用案例如下:

  • 啟用版本控制時,簡單 DELETE 無法永久刪除物件。(簡單 DELETE 請求是指未指定版本 ID 的請求。) 相反地,Amazon S3 會在儲存貯體中插入刪除標記,而該刪除標記會成為具有新 ID 的目前物件版本。

    當您嘗試其目前版本為刪除標記的 GET 物件時,Amazon S3 的行為就如同已刪除物件 (即使尚未清除也是一樣) 並傳回 404 錯誤。如需詳細資訊,請參閱使用刪除標記

    下圖顯示簡單 DELETE 不會實際移除指定的物件。相反地,Amazon S3 會插入刪除標記。

    顯示刪除標記插入的圖解。
  • 若要永久刪除已使用版本控制的物件,您必須使用 DELETE Object versionId

    下圖顯示刪除所指定的物件版本會永久移除該物件。

    顯示如何DELETE Object versionId永久刪除特定物件版本的圖表。

刪除物件版本

您可以使用主控台 AWS SDKs、 API或 刪除 Amazon S3 REST 中的物件版本 AWS Command Line Interface。

  1. 登入 AWS Management Console 並在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. Buckets (儲存貯體) 清單中,選擇包含該物件的儲存貯體名稱。

  3. Objects (物件) 清單中,選擇物件的名稱。

  4. 選擇 Versions (版本)。

    Amazon S3 會顯示該物件的所有版本。

  5. 選取要永久刪除版本之 Version ID (版本 ID) 旁邊的核取方塊。

  6. 選擇 Delete (刪除)。

  7. Permanently delete objects? (永久刪除物件?) 中輸入 permanently delete

    警告

    永久刪除物件版本的動作無法復原。

  8. 選擇 Delete objects (刪除物件)。

    Amazon S3 刪除物件版本。

如需使用適用於 Java、. NET和 的 AWS SDKs刪除物件的範例PHP,請參閱 刪除 Amazon S3 物件。從未使用版本控制和啟用版本控制的儲存貯體中刪除物件的範例相同。但是,對於啟用版本控制的儲存貯體,Amazon S3 會指派一個版本號碼。否則,版本編號會是空值。

如需使用其他 的相關資訊 AWS SDKs,請參閱AWS 開發人員中心

Python

下列 Python 程式碼範例會透過刪除其所有版本,永久刪除已建立版本的物件。

def permanently_delete_object(bucket, object_key): """ Permanently deletes a versioned object by deleting all of its versions. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that contains the object. :param object_key: The object to delete. """ try: bucket.object_versions.filter(Prefix=object_key).delete() logger.info("Permanently deleted all versions of object %s.", object_key) except ClientError: logger.exception("Couldn't delete all versions of %s.", object_key) raise
刪除物件的特定版本
  • DELETE 中,指定版本 ID。

範例 — 刪除特定版本

下列範例會刪除 photo.gifUIORUnfnd89493jJFJ 版本。

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 0

下列命令會將名為 test.txt 的物件從名為 amzn-s3-demo-bucket1 的儲存貯體中刪除。若要移除特定版本的物件,您必須是儲存貯體擁有者,且必須使用版本 ID 子資源。

aws s3api delete-object --bucket amzn-s3-demo-bucket1 --key test.txt --version-id versionID

如需詳細資訊,delete-object請參閱 delete-objectAWS CLI 命令參考 中。

如需刪除物件版本的詳細資訊,請參閱下列主題: