当对象更改存储类时,AWS S3 Bucket通知



我正在寻找一种在s3中的对象更改存储类时收到通知的方法。我以为会有一个bucket事件通知,但我不认为这是一个选项。如何知道对象何时从STANDARD移动到GLACIER?我们的系统依赖于不在GLACIER中的对象。如果它们更改为GLACIER,我们需要意识到并相应地处理它们。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html#supported-通知事件类型

您可以使用S3访问日志来捕获生命周期中的更改,但我认为仅此而已:

AmazonS3服务器访问日志可以在S3存储桶中启用以捕获S3与生命周期相关的操作,例如对象转换到另一个存储类

取自AWS文档-生命周期和其他桶配置

当然,您可以为存储类转换滚动自己的通知——尽管可能比您希望的要复杂一些。。。。您需要一个单独的bucket来写入访问日志。在新的日志桶中设置一个S3通知,用于创建对象,以触发lambda函数来处理每个新的日志文件。在lambda函数中,使用Athena查询日志并发出SNS警报或在代码中执行一些纠正操作。

不过也有一些限制需要注意——请参阅尽力而为日志记录意味着你可能在几个小时内无法获得日志


21年5月28日更新

如果日志在上,您应该会看到各种生命周期操作在+/-几个小时内记录下来。如果没有,你肯定符合将物体转换为冰川的最低标准吗?(如从标准冰川过渡到冰川需要30天(。

关于:

特定请求的日志记录可能在请求实际上已被处理,或者可能无法在全部的

考虑S3的最终一致性模型和关于数据持久性的SLA-S3中的任何对象都有数据丢失的可能性。我认为丢失日志记录的风险相对较低,但这是可能发生的。

你也可以选择一种更积极的方法——使用cloudwatch事件触发的lambda函数中的s3api(类似cron的调度(来扫描bucket中的所有对象,并采取相应的措施(发送电子邮件、采取纠正措施等(。请记住,这可能会变得昂贵,这取决于您运行lambda的频率和您的bucket中有多少对象,但根据您的使用情况,低容量甚至可能在免费层中。

自2021年11月起,您现在可以通过AWS EventBridge进行此操作。

只需在s3存储桶上创建一个新规则,即可处理对象存储类更改事件。

请参阅https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/

最新更新