S3 生命周期策略删除没有特定标签值的所有对象



在阅读此 S3 生命周期策略文档时,我发现可以删除包含特定键=值对的 S3 对象,例如,

<LifecycleConfiguration>
<Rule>
<Filter>
<Tag>
<Key>key</Key>
<Value>value</Value>
</Tag>
</Filter>
transition/expiration actions.
...
</Rule>
</LifecycleConfiguration>

但是是否可以创建一个类似的规则来删除不在键=值对中的任何对象?例如,每当访问我的对象时,我都可以使用当前日期更新它的标签,例如object-last-accessed=07-26-2019。然后,我可以创建一个 Lambda 函数,该函数每天删除当前的 S3 生命周期策略,然后创建一个新的生命周期策略,该策略在过去 30 天内的每一天都有一个标签,然后我的生命周期策略将自动删除过去 30 天内未访问的任何对象;访问超过 30 天的任何内容的日期值都将早于生命周期策略中的任何值,因此将被删除。

这是我想要的示例(请注意,我添加了所需的字段<exclude>

<LifecycleConfiguration>
<Rule>
<Filter>
<exclude>
<Tag>
<Key>last-accessed</Key>
<Value>07-30-2019</Value>
</Tag>
...
<Tag>
<Key>last-accessed</Key>
<Value>07-01-2019</Value>
</Tag>
<exclude>
</Filter>
transition/expiration actions.
...
</Rule>
</LifecycleConfiguration>

像我这样的虚构<exclude>值可能吗?我想删除过去 30 天内未访问过的任何 S3 对象(这与超过 30 天的对象不同)。

据我了解,这是可能的,但通过不同的机制。

我的解决方案是采用稍微不同的方法,在每个对象上设置一个标签,然后根据需要更改该标签。 因此,在您的实例中,当创建对象时,将对象上次访问设置为"默认",通过 S3 触发器对一段 Lambda 或将对象写入 S3 时执行此操作。

访问对象时,将标记值更新为当前日期。

如果您已经有一个装满对象的存储桶,则可以使用 S3 batch 将标签设置为当前日期,并将其用作增量参考点,假设上次访问的文件是从中获取的

https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html

现在,将生命周期规则设置为在 10 天(或您想要的任何时间)后删除带有"默认"标签的对象。 添加其他规则以删除标记为该日期后 10 天的文件。您需要定期更新生命周期规则,但一次可以创建 1000 个。 此文档提供了规则正式的详细信息 https://docs.aws.amazon.com/AmazonS3/latest/API/API_LifecycleRule.html 我会建议这样的事情

<LifecycleConfiguration>
<Rule>
<ID>LastAccessed Default Rule</ID>
<Filter>
<Tag>
<Key>object-last-accessed</Key>
<Value>default</Value>
</Tag>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Days>10</Days> 
</Expiration>
</Rule>
<Rule>
<ID>Last Accessed 2020-05-19 Rule</ID>
<Filter>
<Tag>
<Key>object-last-accessed</Key>
<Value>2020-05-19</Value>
</Tag>
</Filter>
<Status>Enabled</Status>
<Expiration>
<Date>2020-05-29</Date> 
</Expiration>
</Rule>
</LifecycleConfiguration>

进一步阅读此内容,当我遇到此问题时,另一种方法是仅使用对象锁定保留模式,该模式允许您在存储桶上设置默认保留期,然后在访问文件时更改该保留期。这在版本级别有效,即每个版本保留一段时间而不是整个文件,因此可能不适合所有版本。 更多详情请见 https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes

最新更新