分配标签后删除 S3 对象

Remove S3 object after assign tag

我想在分配标签 30 天后删除 AWS S3 对象。当我在创建过程中标记一个新文件时似乎很容易,但是如果该文件是在 30 多天前创建的并且我仍然希望符合保留策略(30 天)并且不要过早删除它怎么办。

我希望我可以对 Glacier 使用事务生命周期策略,然后删除文件,但它也基于创建日期。

还有没有不使用 lambda 的选项吗?

{
    "Rules": [
        {
            "Status": "Enabled", 
            "NoncurrentVersionExpiration": {
                "NoncurrentDays": 31
            }, 
            "NoncurrentVersionTransitions": [
                {
                    "NoncurrentDays": 1, 
                    "StorageClass": "GLACIER"
                }
            ], 
            "Filter": {
                "Tag": {
                    "Value": "true", 
                    "Key": "toDelete"
                }
            }, 
            "Expiration": {
                "Days": 31
            }, 
            "Transitions": [
                {
                    "Days": 1, 
                    "StorageClass": "GLACIER"
                }
            ], 
            "ID": "delete-tagged-toDelete-after-31days"
        }
    ]
}

没有"out-of-the-box"解决方案可以解决您的问题。

Amazon S3 生命周期规则基于创建日期。向对象添加标签不足以 "reset the clock" 生命周期规则。

一些想法:

  • 可能能够将对象复制到自身并添加标签。这可能应该是对象上的创建日期。
  • 您可以创建一个 AWS Lambda 函数,由 Amazon CloudWatch Events 规则定期触发,扫描存储桶中的对象并根据标签删除它们。该标签可以包含一个删除日期,Lambda 函数使用它来确定删除日期是否已过。