删除包含数千个文件/密钥的 Amazon AWS S3 存储桶

删除包含数千个文件/密钥的 Amazon AWS S3 存储桶

有没有一种简单的方法可以删除其中包含数万个对象的 Amazon S3 存储桶?我尝试使用 --recursive 和 --force 的 s3cmd,但它内存膨胀,并且已经运行了几天却收效甚微。

答案1

删除包含数千或数百万个项目的 Amazon S3 存储桶的新方法是使用新的对象过期规则

您甚至可以从 AWS 控制台执行此操作。只需转到要删除的存储桶的属性,打开“生命周期”选项卡并设置一个没有前缀且到期时间为 1 天的新到期规则。等待一天,对象将被删除。如果您有数百万个(就像我的情况一样),您可能需要几天时间才能让所有对象真正消失,但是,您会很高兴地注意到,在 24 小时的到期期限后,您不再需要为这些存储的项目付费。

注意:此方法的唯一限制是,如果启用了版本控制,则无法设置生命周期规则。

对象过期

答案2

亚马逊最近添加了一项新功能“多对象删除”,允许通过单个 API 请求一次删除最多 1,000 个对象。这应该可以简化从存储桶中删除大量文件的过程。

新功能的文档可在此处获得:http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?multiobjectdeleteapi.html

目前,您必须手动使用 API 进行请求,但我希望 s3cmd 等工具最终会更新以直接支持该功能。

答案3

将空目录同步到带有--delete标志的存储桶。

mkdir tmp-empty-dir
aws s3 sync --delete tmp-empty-dir/ s3://my-bucket

那么存储桶将为空并且可以被删除。

答案4

我用这个Java小程序执行此操作。您可以轻松选择所有文件并将其删除。

相关内容