对象更改存储类时的 AWS S3 存储桶通知?

时间:2021-05-07 18:07:38

标签: amazon-web-services amazon-s3 boto3

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

https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html#supported-notification-event-types

1 个答案:

答案 0 :(得分:0)

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

<块引用>

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

取自 AWS 文档 - life-cycle and other bucket config

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

虽然有一些限制需要注意 - 请参阅 best effort logging means you might not get logs for a few hours


28/5/21 更新

如果日志打开,您应该会看到 various lifecycle operations 在它们发生 +/- 几个小时后被记录。如果不是,您肯定满足最低 criteria for transitioning objects to glacier 要求吗? (例如从标准过渡到冰川需要 30 天)。

至于:

<块引用>

特定请求的日志记录可能会在很长时间之后交付 请求已实际处理,或者可能不会在 全部。

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

您还可以采用更主动的方法 - 使用由 cloudwatch 事件触发的 lambda 函数中的 s3 api(cron 之类的调度)来扫描存储桶中的所有对象并执行相应的操作(发送电子邮件、采取纠正措施等) )。请记住,这可能会变得昂贵,具体取决于您运行 lambda 的频率以及您的存储桶中有多少对象,但根据您的使用情况,免费层中甚至可能包含少量对象。

相关问题