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

mat*_*rns 7 amazon-s3 amazon-web-services aws-sdk

我在S3(不常访问)中有一个包含20亿个对象的存储桶.在没有花费数年的时间内,在控制台或api中删除它太大了.

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

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

小智 15

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

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

  • 在浏览器开发工具或Cloudtrail中,您可以看到Empty按钮是通过控制台列出前缀并发送DeleteObjects请求以获取结果来实现的。ListObjectsV2 请求不是免费的。此外,如果这些对象从非标准存储类别中提前删除,则将收取提前删除费用。 (2认同)

A.K*_*han 7

如果您有可用的所有对象的列表,那么您当然可以使用多删除对象操作.显然这个API是免费的.我将创建AWS Step Functions状态机来遍历文件并一次删除1000个对象.1000似乎是极限.

它将需要大约2M步进功能事务来删除存储桶中的所有对象.根据阶梯函数的定价,它将花费你大约50美元+ Lambda调用的成本大约1美元,因此总成本约为51美元.

更新

使用Lambda或Step函数可能不是最具成本效益的选项,因为您需要从某些来源(如S3)读取文件(包含对象键).所以我认为从本地机器或任何EC2 linux屏幕运行脚本似乎是最好的选择.

  • 对任何这样做的人的重大警告:我们后来才意识到我们为这个存储桶启用了版本控制......呃。多对象删除只是为每个对象添加了“删除标记”。总大小刚刚增加,对象数量增加了一倍!已禁用版本控制并再次运行... (2认同)

Pen*_*Bow 7

过期生命周期规则是免费的。从最初的功能公告来看:

\n
\n

与标准删除请求一样,Amazon S3 不会因使用对象过期而向您收取费用。

\n
\n

  • 删除请求和策略是免费的,但如果在最短计费存储持续时间之前删除对象,则可能会导致标准以外的存储类别产生提前删除费用。 (2认同)