

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

# 刪除 Amazon S3 物件
<a name="DeletingObjects"></a>

您可以使用 Amazon S3 主控台、 AWS SDKs、 AWS Command Line Interface (AWS CLI) 或 REST API，直接從 Amazon S3 刪除一或多個物件。例如，如果您要收集日誌檔案，最好在不再需要它們時將其刪除。您可以[設定 S3 生命週期規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)來自動刪除日誌檔案等物件。

若要刪除物件，您可以使用下列其中一個 API 操作：
+ **刪除單一物件** – Amazon S3 提供 `DELETE` (`DeleteObject`) API 操作，以用來透過單一 HTTP 要求刪除一個物件。
+ **刪除多個物件** – Amazon S3 提供多物件刪除 (`DeleteObjects`) API 操作，以用來透過單一 HTTP 要求來刪除最多 1,000 個物件。

從未啟用版本控制的儲存貯體中刪除物件時，您只提供物件金鑰名稱。不過，從已啟用版本控制的儲存貯體中刪除物件時，您可以提供物件的版本 ID，以刪除物件的特定版本。

## 刪除物件之前要考慮的最佳實務
<a name="DeletingObjects-best-practices"></a>

刪除物件之前，請考慮下列最佳實務：
+ 啟用 [儲存貯體版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)。[S3 版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)新增了對簡單 `DeleteObject` 請求的保護，以防止意外刪除。對於使用版本控制的儲存貯體，如果您刪除物件的目前版本，或者刪除請求未指定特定版本 ID，則 Amazon S3 不會永久刪除物件。反之，S3 會新增刪除標記，發出物件的軟刪除。然後，刪除標記會成為具有新版本 ID 的目前 (或最新) 物件版本。如需詳細資訊，請參閱[從已啟用版本控制的儲存貯體中刪除物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html)。
+ 如果您想要刪除大量物件，或以程式設計方式根據物件建立日期刪除物件，請[在儲存貯體上設定 S3 生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。若要監控這些刪除，建議您[使用 S3 生命週期事件通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html)。當您設定 S3 生命週期通知時，`s3:LifecycleExpiration:Delete` 事件類型會在刪除儲存貯體中的物件之後通知您。當 S3 生命週期組態永久刪除物件版本時，它也會通知您。`s3:LifecycleExpiration:DeleteMarkerCreated` 事件類型會在 S3 生命週期建立刪除標記時通知您。從使用版本控制的儲存貯體中刪除物件的目前版本時，會建立刪除標記。
+ 對 S3 生命週期組態進行任何更新之前，請確認生命週期已完成所有預定物件上的動作。如需詳細資訊，請參閱[在儲存貯體上設定 S3 生命週期組態](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)中的**更新、停用或刪除生命週期規則**一節。
**注意**  
S3 生命週期規則必須套用至正確的物件子集，以防止意外刪除。您可以在建立生命週期規則時，依字首、物件標籤或物件大小篩選物件。
+ 考慮限制使用者從儲存貯體中移除或刪除物件。若要限制使用者，您需要在 [Amazon S3 儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)中明確拒絕使用者執行下列動作的許可：
  + `s3:DeleteObject`、`s3:DeleteObjectVersion` (控制誰可以使用 API 請求刪除物件)
  + `s3:PutLifecycleConfiguration` (控制誰可以新增 S3 生命週期過期規則)
+ 考慮使用 [S3 複寫](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)來建立資料的多個複本，並一次將其複寫到多個位置。您可以視需要選擇許多目的地儲存貯體。此外，如果意外刪除物件，您仍然會有資料的複本。
+ 避免將物件版本 IDs傳送至未版本控制的儲存貯體。此外，請務必在所有儲存貯體 （包括未版本的儲存貯體） 上正確設定 `s3:DeleteObject`和 `s3:DeleteObjectVersion`許可。

## 從已啟用版本控制的儲存貯體中刪除物件
<a name="DeletingObjectsfromaVersion-EnabledBucket"></a>

如果儲存貯體已啟用版本控制，則儲存貯體中可以有同一個物件的多個版本。使用已啟用版本控制的儲存貯體時，`Delete` API 操作會啟用下列選項：
+ **指定未使用版本控制的刪除要求** — 您只指定物件的索引鍵，而非版本 ID。在此情況下，Amazon S3 會對物件的目前版本建立刪除標記，並在回應中傳回其版本 ID。這會讓物件從儲存貯體中消失。如需物件版本控制與刪除標記概念的資訊，請參閱「[使用 S3 版本控制保留多個版本的物件](Versioning.md)」。
+ **指定已建立版本的刪除請求** – 同時指定金鑰和版本 ID。在此情況下，可能會有下列結果：
  + 如果版本 ID 對應至特定物件版本，則 Amazon S3 會刪除物件的特定版本。
  + 如果版本 ID 映射至物件的刪除標記，則 Amazon S3 會將刪除標記刪除。將刪除標記刪除之後，物件會重新出現在您的儲存貯體中。

## 從已暫停版本控制的儲存貯體中刪除物件
<a name="Deleting-objects-versioning-suspended-bucket"></a>

如果您的儲存貯體已暫停版本控制，`Delete` API 操作的運作方式會與已啟用版本控制的儲存貯體相同 (不包括目前版本具有 null 版本 ID 的情況)。如需詳細資訊，請參閱[刪除暫停版本控制之儲存貯體中的物件](DeletingObjectsfromVersioningSuspendedBuckets.md)。

## 從無版本控制的儲存貯體中刪除物件
<a name="Deleting-objects-unversioned-bucket"></a>

如果您的儲存貯體無版本控制，您可以在 `Delete` API 操作中指定物件的金鑰，Amazon S3 會永久刪除該物件。若要防止永久刪除物件，請[啟用儲存貯體版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)。

對於未版本的儲存貯體，如果儲存貯體政策中明確拒絕 `s3:DeleteObject`或 `s3:DeleteObjectVersion`許可，則任何 `DeleteObjects`、 `DeleteObject`或 `DeleteObjectVersion`請求都會導致`403 Access Denied`錯誤。

## 刪除啟用 MFA 功能之儲存貯體中的物件
<a name="DeletingObjectsfromanMFA-EnabledBucket"></a>

刪除已啟用多重要素驗證 (MFA) 之儲存貯體中的物件時，請注意以下項目：
+ 如果您提供無效的 MFA 字符，則請求一律會失敗。
+ 如果您擁有已啟用 MFA 的儲存貯體，並且提出已使用版本控制的刪除請求 (您提供物件索引鍵與版本 ID)，則在未提供有效的 MFA 字符時，請求會失敗。此外，對已啟用 MFA 的儲存貯體使用多物件 `Delete` API 操作時，如有任何刪除是已使用版本控制的刪除請求 (即您指定物件金鑰與版本 ID)，則在未提供 MFA 權杖時，整個請求會失敗。

但是，在下列情況下，要求會成功：
+ 如果您擁有已啟用 MFA 的儲存貯體，並且提出未使用版本控制的刪除請求 (您不是要刪除有版本控制的物件)，且不提供 MFA 字符，刪除會成功。
+ 如果您有只指定未使用版本控制物件的多物件刪除請求，要在已啟用 MFA 的儲存貯體中執行刪除作業，而您不提供 MFA 字符，刪除會成功。

如需 MFA Delete 的資訊，請參閱「[設定 MFA Delete](MultiFactorAuthenticationDelete.md)」。

**Topics**
+ [刪除物件之前要考慮的最佳實務](#DeletingObjects-best-practices)
+ [從已啟用版本控制的儲存貯體中刪除物件](#DeletingObjectsfromaVersion-EnabledBucket)
+ [從已暫停版本控制的儲存貯體中刪除物件](#Deleting-objects-versioning-suspended-bucket)
+ [從無版本控制的儲存貯體中刪除物件](#Deleting-objects-unversioned-bucket)
+ [刪除啟用 MFA 功能之儲存貯體中的物件](#DeletingObjectsfromanMFA-EnabledBucket)
+ [刪除單一物件](delete-objects.md)
+ [刪除多個物件](delete-multiple-objects.md)