我的一个 Amazon Simple Storage Service(Amazon S3)桶存储了数百万个对象。我想使用生命周期配置规则来清空桶,这样我就无需支付存储费用。
解决方法
**重要信息:**以下解决方案会永久删除您的 Amazon S3 桶中的所有数据。由于您无法恢复数据,因此请在删除前检查存储桶中的所有对象和数据。
要使用生命周期配置规则清空存储桶,请使用控制台或 CLI。
使用控制台
您可以在控制台中创建生命周期配置规则,将对象的当前版本设为过期并永久删除对象的先前版本。要创建规则,请完成以下步骤:
- 打开 Amazon S3 控制台。
- 从桶列表中,选择要清空的桶。
- 选择管理选项卡。
- 选择创建生命周期规则。
- 在生命周期规则名称中,输入规则名称。
- 在选择规则范围中,选择应用于桶中的所有对象。
- 选择我确认此规则将应用于桶中的所有对象。
- 对于 Lifecycle rule actions(生命周期规则操作),选择以下选项: Expire current versions of objects(将对象的当前版本设为过期)Permanently delete noncurrent versions of objects(永久删除对象的非当前版本)Delete expired object delete markers or incomplete multipart uploads(删除过期的对象删除标记或未完成的分段上传)
- 在 Expire current versions of objects(将对象的当前版本设为过期)字段中,对于 Days after object creation(创建对象以来的天数)字段,输入 1。
- 在永久删除非当前版本的对象字段中,在对象变为非当前对象以来的天数字段中输入 1。
- 将**要保留的较新版本的数量(可选)**字段留空以删除所有版本。
- 选择删除未完成的分段上传,然后在天数字段中输入 1。
- 选择创建规则。
- 要创建第二条生命周期规则,请重复步骤 4-7。
- 选择以下选项: 删除过期的对象删除标记或未完成的分段上传。
- 选择删除过期的对象删除标记。
- 选择创建规则。
Amazon S3 每天运行一次生命周期规则。在 Amazon S3 首次运行规则后,所有符合过期条件的对象都将被标记为删除。您无需为标记为删除的对象付费。
Amazon S3 异步将对象版本设为过期并移除删除标记。规则可能需要运行几天才能清空桶。有关在 Amazon S3 中异步删除对象的详细信息,请参阅即将过期的对象。
使用 CLI
您可以使用 AWS 命令行界面 (AWS CLI),通过以下步骤创建生命周期规则以清空您的 S3 存储桶:
- 使用您的 JSON 内容创建文件(例如 lifecycle-rules.json)。
JSON 示例:
{
"Rules": [{
"Expiration": {
"Days": 1
},
"ID": "FullDelete",
"Filter": {
"Prefix": ""
},
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 1
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 1
}
},
{
"Expiration": {
"ExpiredObjectDeleteMarker": true
},
"ID": "DeleteMarkers",
"Filter": {
"Prefix": ""
},
"Status": "Enabled"
}
]
}
- 在 AWS CLI 命令中使用 JSON 文件:
aws s3api put-bucket-lifecycle-configuration --bucket delete-marker-testing-demo --lifecycle-configuration file://lifecycle-rules.json
注意: 您可以添加前缀以仅在前缀级别应用规则,例如:
"Filter": {
"Prefix": "folder1/"
},
相关信息
在启用了版本控制的存储桶中移除到期对象删除标记
管理对象的生命周期
我如何删除 Amazon S3 对象和存储桶?
删除存储桶
在存储桶上设置 S3 生命周期配置