我的一个 Amazon Simple Storage Service (Amazon S3) 存储桶存储了数百万个对象。我想使用生命周期配置规则清空存储桶,这样我就无需支付存储费用。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
**注意:**本生命周期配置指南仅适用于通用的 Amazon S3 存储桶。目录存储桶具有不同的生命周期管理要求。表存储桶不支持生命周期配置规则。
**重要事项:**以下解决方案会永久删除您的 S3 存储桶中的所有数据。由于您无法恢复数据,因此请在删除前检查存储桶中的所有对象和数据。
要使用生命周期配置规则清空存储桶,请使用控制台或 AWS CLI。
使用控制台
您可以在控制台中创建生命周期配置规则,将对象的当前版本设为过期并永久删除对象的先前版本。要创建规则,请完成以下步骤:
- 打开 Amazon S3 控制台。
- 从通用存储桶列表中,选择要清空的存储桶。
- 选择 Management(管理)选项卡。
- 选择创建生命周期规则。
- 在生命周期规则名称中,输入规则名称。
- 在选择规则范围中,选择应用于桶中的所有对象。
- 选择我确认此规则将应用于桶中的所有对象。
- 对于生命周期规则操作,选择以下选项:
将对象的当前版本设为过期
永久删除非当前版本的对象
删除过期的对象删除标记或未完成的分段上传
- 在将对象的当前版本设为过期字段中,在创建对象以来的天数字段中输入 1。
- 在 Permanently delete noncurrent versions of objects(永久删除非当前版本的对象)字段中,对于 Days after objects become noncurrent(对象变为非当前对象以来的天数)字段,输入 1。
- 要删除所有版本,请将 Number of newer versions to retain (Optional)(要保留的较新版本的数量(可选))字段留空。
- 选择 Delete incomplete multipart uploads(删除未完成的分段上传),然后在 Number of days(天数)字段中输入 1。
- 选择创建规则。
- 要创建第二条生命周期规则,请重复步骤 4-7。
- 选择 Delete expired object delete markers or incomplete multipart uploads(删除过期的对象删除标记或未完成的分段上传)。
- 选择 Delete expired object delete markers(删除过期的对象删除标记)。
- 选择 Create rule(创建规则)。
Amazon S3 每天运行一次生命周期配置规则。在 Amazon S3 首次运行规则后,将标记删除所有符合过期条件的对象。您无需为标记删除的对象付费。
Amazon S3 异步将对象版本设为过期并移除删除标记。规则可能需要运行几天才能清空桶。有关在 Amazon S3 中异步删除对象的详细信息,请参阅即将过期的对象。
使用 AWS CLI
您可以使用 AWS CLI 创建生命周期规则来清空 S3 存储桶。完成以下步骤:
-
使用您的 JSON 内容创建文件(例如 lifecycle-rules.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"
}
]
}
-
运行 put-bucket-lifecycle-configuration 命令以创建或更新您的生命周期配置。以下命令使用名为 lifecycle-rules.json 的 JSON 文件:
aws s3api put-bucket-lifecycle-configuration --bucket delete-marker-testing-demo --lifecycle-configuration file://lifecycle-rules.json
注意: 您可以向 JSON 内容添加前缀筛选器,以便仅在前缀级别应用规则。以下是命令示例:
"Filter": { "Prefix": "folder1/"
},
相关信息
在启用了版本控制的存储桶中移除到期对象删除标记
管理对象的生命周期
我如何删除 Amazon S3 对象和存储桶?
删除通用存储桶
在存储桶上设置 S3 生命周期配置