从 S3 IA 中删除 20 亿个对象的最便宜方法

Cheapest way to delete 2 billion objects from S3 IA

我在 S3(不经常访问)中有一个包含 20 亿个对象的存储桶。它太大了,无法在控制台或 api 上删除而不需要几年时间。

我可以创建一个生命周期规则来使对象过期并删除,但计算器预测这将花费我 >20,000 美元。那是对的吗?有没有更好的方法来删除桶?

如果有帮助,我有一个有效包含该存储桶中所有对象列表的文件。

2021 年更新:

@MAP 下面的回答指出现在有一个“清空”按钮。我还没有测试过,但看起来像是要走的路(一旦测试我会接受这个答案):

如果您有所有可用对象的列表,那么您当然可以使用 Multi Delete Object action. Apparently this API is free. I would create AWS Step Functions state machine to loop 通过文件并一次删除 1000 个对象。 1000 似乎是限制。

删除桶中的所有对象需要大约 2M 步函数事务。根据 pricing for step function it will cost you around + cost of Lambda invocations 大约 1 美元,因此总成本约为 51 美元。

更新

使用 Lambda 或 Step Functions 可能不是最具成本效益的选择,因为这两种方式都需要从 S3 等来源读取文件(包含对象键)。所以我认为 运行 来自本地机器或任何 EC2 linux 屏幕的脚本似乎是最好的选择。

删除操作是免费的。您可以创建一个生命周期 自动执行批量删除的策略。

我会先从少量对象开始,然后检查计费报告以 100% 确认删除不会收费,然后再进行其余操作。

在 2021 年,遇到此问题的任何人都可能会受益于知道 AWS 控制台现在提供了一个 empty 按钮。

Select 存储桶并单击“清空”按钮,所有版本化或未版本化的对象都将 emptied/deleted。根据对象的数量,它可能需要几分钟到几天的时间。

过期生命周期规则是免费的。来自原文feature announcement

As with standard delete requests, Amazon S3 doesn’t charge you for using Object Expiration.