我有一个用例,其中某个进程每6小时将一个文件放入一个S3存储桶。这个存储桶中已经有成千上万个文件,如果最近7个小时内未添加任何新文件,我想生成一个sns警报或其他信息。什么是合理的方法? 谢谢
答案 0 :(得分:6)
有一些潜在的方法:
每隔几分钟检查一次存储桶
配置Amazon CloudWatch Events每隔几分钟触发一次AWS Lambda函数(取决于您要报告的速度),该函数将获取存储桶列表并检查添加最后一个对象的时间戳。如果超过7小时,请发送警报。
这种方法非常简单,但是每隔几分钟就会做很多工作,包括在添加对象后的7个小时内。另外,如果您有很多对象,则可能会花费大量Lambda时间和API调用。
跟踪最新文件
尽管这种方法具有更多的组件,但实际上它是一种更简单的解决方案,因为它不必浏览S3中的对象列表。取而代之的是,它只记住何时添加了最后一个对象。
您可以想出一种甚至更智能的方法,而不是每隔几分钟检查一次,而是在7小时内安排警报功能。每当添加新文件时,它都会更改计划以将其重新放置7个小时。这就像不断地延迟牙医预约。 :)
使用Amazon CloudWatch警报
这是使用CloudWatch警报触发通知的更简单的方法。
SUM
为零时触发通知。还可以将其配置为在警报进入 INSUFFICIENT_DATA 状态时触发,以便在没有数据发送时正确触发(这很可能比度量标准为零,因为Lambda函数在以下情况下不会发送数据)没有创建对象)。唯一的缺点是警报时段只有几个选项。可以将其设置为6个小时,但我认为不能将其设置为7个小时。
如何提醒
关于如何提醒某人,向Amazon SNS主题发送消息是一个好主意。人们可以通过电子邮件,短信和其他各种方式进行订阅。
答案 1 :(得分:0)
@John Rotenstein描述的Amazon CloudWatch Alarm方法绝对是大多数用例中最简单的选项,并且效果很好。仅需注意的一件事:CloudWatch Alarms每个指标具有24小时限制(EvaluationPeriods *周期必须小于等于86400s)。因此,如果您希望您的存储桶每天收到的文件少于一次,则需要使用其他方法。