标记30天后删除s3文件



因此,使用我的应用程序,用户可以"软删除";上传的文件。这样做的目的是用deletedAt和expireAt值更新Mongo文档。可以恢复文件,这些文件将从mongo文档中删除。我需要的是一种在S3上标记对象的方法,以便在标记对象之日起30天后将其删除。一开始,我标记每个对象,并设置了生命周期规则。。然而,我现在明白了,它们只在对象的创建日期之后运行。

用我的S3存储桶设置这个系统的最佳(也是最有效(方法是什么?它真的每天调用Lambda函数,列出带有特定标记的所有对象并检查日期吗?可能有数千万个对象。

生命周期规则文档中隐藏了一些东西,为您提供了处理这些问题的方法。

首先,过期时间实际上是基于对象的上次修改时间戳:

AmazonS3只为每个对象维护最后修改的日期。例如,AmazonS3控制台在对象Properties窗格中显示Last Modified日期。最初创建新对象时,此日期反映对象的创建日期。如果替换对象,则日期会相应更改。因此,当我们使用术语"创建日期"时,它与术语"上次修改日期"同义。

因此,如果您确保;最后修改的";时间戳在您添加标签的同时发生更改,,而不是之后,您可以使用30天的过期时间。

更可靠的是,您可以创建指定日期而不是年龄的规则:

在S3生命周期规则中指定操作时,您可以指定希望Amazon S3执行该操作的日期。当特定日期到达时,AmazonS3将该操作应用于所有符合条件的对象(基于筛选条件(。

似乎没有一个例子显示这一点,文档只是说:

日期值必须符合ISO 8601格式。时间总是UTC午夜。

所以我认为您需要以编程方式创建如下规则:

<LifecycleConfiguration>
<Rule>
<ID>Expire-2022-01-01</ID>
<Tag>
<Key>expiry</Key>
<Value>2022-01-01</Value>
</Tag>
<Status>Enabled</Status>
<Expiration>
<Date>2022-01-01</Date>
</Expiration>
</Rule>
</LifecycleConfiguration>

如果我正确理解了文档,这个例子意味着任何带有";"到期";标签";2022-01-01";应在2022年1月1日UTC午夜删除。

如果为不同日期创建这些对象的列表,则可以通过添加适当的标记来标记将来要在特定时间删除的对象。你创建了多少规则取决于如果文件多保留几天有多重要。

最新更新