我们有一个巨大的S3桶,里面有数十亿个物品。目前它没有应用任何项目生命周期策略,因此项目将永久存储。我们想要清除超过半年的物品并进一步定期进行。使用S3生命周期策略这样的任务看起来很容易,但是将策略应用于现有的大型存储桶或生命周期策略是否安全(在性能和可用性方面)应该只安全地应用于新存储桶?
答案 0 :(得分:3)
就性能而言,这应该是一个安全的操作,无论存储桶大小或受影响的对象数量,因为生命周期策略是在后台异步处理,分阶段处理。
到期对象:一般注意事项
当对象到达其生命周期的末尾时,Amazon S3将其排队以进行删除并异步删除它。到期日期与Amazon S3删除对象的日期之间可能存在延迟。您不需要为与已过期的对象关联的存储时间付费。
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
答案 1 :(得分:2)
在使用生命周期删除启用版本控制的存储桶上的数十亿个对象时,我遇到过性能问题,尤其是EMR,JetS3t和S3控制台。删除的当前版本添加了删除标记对象,并成为以前的版本,然后生命周期的先前版本删除设置将清除以前的版本。删除标记是添加的另一个对象,必须在控制台或存储桶列表中进行过滤。所以我们得到对象数量的2倍,直到它们都被删除。我们还支付先前版本存储的标准费用,直到删除为止。
列出对象的任何应用程序都可能需要过滤当前,删除标记和以前的版本。我发现S3控制台会挂起,直到我选择" Versions:Show"。在某些情况下,hadoop 1.x和JetS3t将会超时,直到大多数删除标记清除以前的版本,特别是从存储桶根目录。
对于启用版本控制的存储桶,我建议您通过将生命周期间隔设置为大来逐渐删除,然后逐渐减少间隔。我还发现使用生命周期不是即时的,并且需要几天(至少)来移除大量对象。
我使用AWS Marketplace中的http://www.insight4storage.com/来监控我的存储类型和每个存储桶的版本和前缀。它通过按前缀和每个桶显示当前和以前的版本,IA,RRS和Glacier存储,帮助我跟踪生命周期进度。