

# 清空通用存储桶
<a name="empty-bucket"></a>

您可以使用 Amazon S3 控制台、AWS SDK 或 AWS Command Line Interface（AWS CLI）清空通用存储桶的内容。清空通用存储桶时，您将删除所有对象，但会保留存储桶。清空存储桶的操作无法撤消。当正在执行清空存储桶操作时添加到存储桶的对象可能被删除。必须先删除存储桶中的所有对象（包括所有对象版本和删除标记），然后才能删除存储桶本身。

在清空已启用或暂停 S3 版本控制的通用存储桶时，存储桶中的所有对象的所有版本都将被删除。有关更多信息，请参阅 [使用启用版本控制的存储桶中的对象](manage-objects-versioned-bucket.md)。

清空存储桶时，我们建议您同时移除所有未完成的分段上传。您可以使用分段上传将非常大的对象（最大 50TB）分成多个分段上载，以提高吞吐量并更快地从网络问题中恢复。如果分段上传过程未完成，则未完成的分段将保留在桶中（处于不可用状态）。这些未完成的分段将产生存储成本，直到上载过程完成或删除未完成的分段。有关更多信息，请参阅 [在 Amazon S3 中使用分段上传来上传和复制对象](mpuoverview.md)。

作为最佳实践，我们建议配置生命周期规则，使超过特定天数的对象和未完成分段上传过期。当您创建生命周期规则以使未完成分段上传过期时，我们建议以 7 天作为一个良好的起点。有关更多信息，请参阅 [在存储桶上设置 S3 生命周期配置](how-to-set-lifecycle-configuration-intro.md)。

 生命周期到期是一个异步过程，因此规则可能需要花数天时间运行，然后存储桶才能为空。在 Amazon S3 首次运行该规则后，所有符合过期条件的对象都将被标记为删除。您不再为那些标记为删除的对象付费。有关更多信息，请参阅[如何使用生命周期配置规则清空 Amazon S3 存储桶？](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)。

## 使用 S3 控制台
<a name="empty-bucket-console"></a>

您可以使用 Amazon S3 控制台来清空通用存储桶，这将删除存储桶中的所有对象，而不删除存储桶。

**清空 S3 存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**通用存储桶**。

1. 在存储桶列表中，选择要清空的存储桶的名称旁边的选项，然后选择**清空**。

1. 在 **Empty bucket（清空存储桶）**页面上，通过在文本字段中输入存储桶名称来确认要清空存储桶，然后选择 **Empty（清空）**。

1. 在**清空桶：状态**页面上监控桶清空过程的进度。

## 使用 AWS CLI
<a name="empty-bucket-awscli"></a>

仅在存储桶未启用存储桶版本控制时，才可使用 AWS CLI 清空通用存储桶。如果未启用版本控制，您可以将 `rm`（删除）AWS CLI命令与 `--recursive` 参数结合使用来清空存储桶（或删除部分带特定键名前缀的对象）。

以下 `rm` 命令将删除拥有键名前缀 `doc` 的对象，例如，`doc/doc1` 和 `doc/doc2`。

```
$ aws s3 rm s3://bucket-name/doc --recursive
```

使用以下命令删除所有对象，而无需指定前缀。

```
$ aws s3 rm s3://bucket-name --recursive
```

有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[将高级别 S3 命令与 AWS CLI 结合使用](https://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html)。

**注意**  
您无法从启用了版本控制的存储桶中删除对象。当您删除一个对象时（此命令将执行的操作），Amazon S3 将添加一个删除标记。有关 S3 存储桶版本控制的更多信息，请参阅[使用 S3 版本控制保留对象的多个版本](Versioning.md)。

## 使用 AWS 开发工具包
<a name="empty-bucket-awssdks"></a>

您可以使用 AWS SDK 来清空通用存储桶或移除部分拥有特定键名称前缀的对象。

有关如何使用适用于 Java 的 AWS SDK清空存储桶的示例，请参阅[删除通用存储桶](delete-bucket.md)。该代码将删除所有对象（不论存储桶是否启用了版本控制），然后删除存储桶。要只清空存储桶，请确保删除用来删除存储桶的语句。

有关使用其他 AWS SDK 的更多信息，请参阅[用于 Amazon Web Services 的工具](https://aws.amazon.com/tools/)。

## 使用生命周期配置
<a name="empty-bucket-lifecycle"></a>

要清空大型通用存储桶，我们建议您使用 S3 生命周期配置规则。生命周期到期是一个异步过程，因此规则可能需要花数天时间运行，然后才能清空存储桶。在 Amazon S3 首次运行该规则后，所有符合过期条件的对象都将被标记为删除。您不再为那些标记为删除的对象付费。有关更多信息，请参阅[如何使用生命周期配置规则清空 Amazon S3 存储桶？](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)。

如果使用生命周期配置清空存储桶，则配置应包括[当前版本、非当前版本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/versioning-workflows.html)、[删除标记](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)和[未完成的分段上传](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)。

您可以添加生命周期配置规则，以使所有对象或部分拥有特定键名前缀的对象过期。例如，要删除存储桶中的所有对象，您可以将生命周期规则设置为使对象在创建一天后过期。

Amazon S3 支持一个存储桶生命周期规则，您可以使用该规则停止未在启动后的指定天数内完成的分段上传。我们建议您配置此生命周期规则以最大限度地降低存储成本。有关更多信息，请参阅 [配置存储桶生命周期配置以删除未完成的分段上传](mpu-abort-incomplete-mpu-lifecycle-config.md)。

有关使用生命周期配置清空存储桶的更多信息，请参阅[在存储桶上设置 S3 生命周期配置](how-to-set-lifecycle-configuration-intro.md)和[即将过期的对象](lifecycle-expire-general-considerations.md)。

## 清空配置了 AWS CloudTrail 的通用存储桶
<a name="empty-bucket-cloudtrail"></a>

AWS CloudTrail 跟踪 Amazon S3 通用存储桶中的对象级数据事件，例如删除对象。如果您使用通用存储桶作为记录 CloudTrail 事件的目标并从同一个存储桶中删除对象，则在清空存储桶的同时可能正在创建新对象。为了防止这种情况，请停止 AWS CloudTrail 跟踪。有关让 CloudTrail 跟踪停止记录事件的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[关闭跟踪的日志记录](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-delete-trails-console.html)。

停止将 CloudTrail 跟踪添加到存储桶中的另一种备选方法是：将 `s3:PutObject` 语句添加到存储桶策略中。如果您想稍后在存储桶中存储新对象，则需要删除此拒绝 `s3:PutObject` 语句。有关更多信息，请参阅《IAM 用户指南》**中的 [对象操作](security_iam_service-with-iam.md#using-with-s3-actions-related-to-objects) 和 [IAM JSON 策略元素：效果](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html)。