我有一个用例,其中某个进程每 6 小时将一个文件放入 S3 存储桶。这个存储桶中已经有数千个文件,如果在过去 7 小时内没有添加新文件,我想生成一个 sns 警报或其他内容。什么是合理的方法?
谢谢
最佳答案
有几种可能的方法:
每隔几分钟检查一次桶
将 Amazon CloudWatch Events 配置为每隔几分钟触发一次 AWS Lambda 函数(取决于您希望报告的速度),该函数获取存储桶列表并检查添加最后一个对象的时间戳。如果超过 7 小时,则发送警报。
这种方法非常简单,但每隔几分钟就会做很多工作,包括在添加对象后的 7 小时内。另外,如果您有很多对象,这会消耗大量 Lambda 时间和 API 调用。
跟踪上一个新文件
虽然这种方法有更多的组件,但它实际上是一个更简单的解决方案,因为它永远不必查看 S3 中的对象列表。相反,它只记住最后一个对象的添加时间。
您可以想出一个更聪明的方法,而不是每隔几分钟检查一次,而是在 7 小时内安排一次警报功能。每当添加新文件时,它都会更改计划以将其重新放置 7 小时。这就像不断推迟牙医预约。 :)
使用 Amazon CloudWatch 警报
这是一种更简单的方法,它使用 CloudWatch 警报来触发通知。
SUM
在过去 6 小时内为零时触发通知。还将其配置为在警报进入 INSUFFICIENT_DATA 状态时触发,以便在未发送数据时正确触发(这比指标为零的可能性更大,因为 Lambda 函数在未创建对象时不会发送数据)。 唯一的缺点是警报期只有几个选项。可以设置为6小时,但我认为不能设置为7小时。
如何提醒
至于如何提醒某人,向 Amazon SNS 主题发送消息是个好主意。人们可以通过电子邮件、短信和其他各种方式订阅。
关于amazon-web-services - 监视 S3 存储桶在过去 x 小时内丢失新文件的最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959737/