

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

# 刪除啟用版本控制功能之儲存貯體中的物件
<a name="DeletingObjectVersions"></a>

您可以隨時從 Amazon S3 儲存貯體中刪除物件版本。針對明確定義生命週期的物件，您還可以定義生命週期組態規則，以要求 Amazon S3 讓目前物件版本過期，或永久移除非目前的物件版本。當儲存貯體已啟用版本控制或暫停版本控制時，生命週期組態動作的運作方式如下所示：
+ 此 `Expiration` 動作會套用至目前物件版本。Amazon S3 並不會刪除目前物件版本，而是新增*刪除標記*，將目前版本保留為非目前版本，這之後會成為目前版本。
+ `NoncurrentVersionExpiration` 動作會套用至非目前物件版本，而 Amazon S3 會永久移除這些物件版本。您無法復原永久移除的物件。

如需 S3 生命週期的詳細資訊，請參閱 [管理物件的生命週期](object-lifecycle-mgmt.md) 和 [S3 生命週期組態範例](lifecycle-configuration-examples.md)。

若要查看您的儲存貯體有多少個目前和非目前物件版本，您可以使用 Amazon S3 Storage Lens 指標。S3 Storage Lens 是一種雲端儲存體分析功能，您可以用來了解整個組織使用物件儲存體的情況及其活動情形。如需詳細資訊，請參閱[使用 S3 Storage Lens 最佳化儲存成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-optimize-storage.html?icmpid=docs_s3_user_guide_DeletingObjectVersions.html)。如需完整的指標清單，請參閱 [S3 Storage Lens 指標詞彙表](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html)。

**注意**  
 標準 Amazon S3 費率適用於所存放和傳送物件的每個版本，包含非目前物件版本。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

## 刪除要求使用案例
<a name="delete-request-use-cases"></a>

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

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

  下圖顯示簡單 `DELETE` 不會實際移除指定的物件。相反地，Amazon S3 會插入刪除標記。  
![\[顯示刪除標記插入的圖例。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled.png)
+ 若要永久刪除已使用版本控制的物件，您必須使用 `DELETE Object versionId`。

  下圖顯示刪除所指定的物件版本會永久移除該物件。  
![\[圖表顯示 DELETE Object versionId 如何永久刪除特定物件版本。\]](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)

## 刪除物件版本
<a name="delete-object-version"></a>

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

### 使用 S3 主控台
<a name="deleting-object-versions"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在 **Buckets** (儲存貯體) 清單中，選擇包含該物件的儲存貯體名稱。

1. 在 **Objects** (物件) 清單中，選擇物件的名稱。

1. 選擇 **Versions** (版本)。

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

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

1. 選擇 **Delete** (刪除)。

1. 在 **Permanently delete objects? (永久刪除物件？)** 中輸入 **permanently delete**。
**警告**  
永久刪除物件版本的動作無法復原。

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

   Amazon S3 刪除物件版本。

### 使用 AWS SDKs
<a name="delete-obj-version-version-enabled-bucket-sdks"></a>

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

如需使用 AWS SDKs的詳細資訊，請參閱 [AWS 開發人員中心](https://aws.amazon.com/code/)。

------
#### [ 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
```

------

### 使用 REST API
<a name="delete-obj-version-enabled-bucket-rest"></a>

**刪除物件的特定版本**
+ 在 `DELETE` 中，指定版本 ID。

**Example — 刪除特定版本**  
下列範例會刪除 `photo.gif` 的 `UIORUnfnd89493jJFJ` 版本。  

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

### 使用 AWS CLI
<a name="delete-obj-version-enabled-bucket-cli"></a>

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

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

如需 `delete-object` 的詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)。

如需刪除物件版本的詳細資訊，請參閱下列主題：
+ [使用刪除標記](DeleteMarker.md)
+ [移除刪除標記，使舊版本成為目前版本](ManagingDelMarkers.md#RemDelMarker)
+ [刪除已啟用 MFA Delete 之儲存貯體中的物件](UsingMFADelete.md)