【发布时间】:2021-11-30 21:15:28
【问题描述】:
几天来,我一直在寻找一种策略来考虑 S3 中的大规模对象删除场景。例如,删除超过 400K 的对象。
我目前有一个类似于以下结构的存储桶:
- .../FOO/${customerID}/../myObject.ext
- .../ACME/${customerID}/../myObject.ext
- .../XPTO/${customerID}/../myObject.ext
也就是说,在大多数情况下,我通过 customerID 对“文件夹”进行了隔离
我一直在寻找一些同步的解决方案,具有低延迟和良好的性能。
我找到了一些使用生命周期规则策略的解决方案,但我必须定期为每个客户创建动态删除策略,然后再删除它们
测试桶当前版本控制被禁用(但我可以在必要时启用它)。
我使用 Java SDK 创建了批量删除,但是在某些情况下我需要删除超过 400k 的对象。这最终会非常耗时。
有什么建议吗?
【问题讨论】:
-
你有多少不同的“路径”?您有客户 ID 或路径列表吗?
-
感谢您回复@ErmiyaEskandary。我有几个“路径”。但是这些路径是由 customerID 隔离的。删除由内部作业执行,该作业将检查哪个客户将删除数据。
-
你真的关心它需要多长时间吗?在您决定删除这些对象时(例如,通过暂停客户帐户或从数据库表中删除关联的客户 ID),您能否有效地从应用程序中隐藏这些对象?
-
@jarmod 我需要从客户端物理删除所有数据(包括 S3 中的工件)。这是由于公司的内部合规性。
-
生命周期规则似乎是实现这一目标的最直接的方法。他们不适合你有什么原因吗?
标签: amazon-web-services amazon-s3 aws-java-sdk