我有一个触发每周运行的Lambda,如果它连续运行超过7天,我想要一个CloudWatch警报。
我的想法是Alarm if < 1 invocation for 8 days
,但似乎不可能将其设置为超过24小时:
警报评估期(数据点数乘以期间) 度量标准)不得超过24小时。
是否有另一种方法可以确保执行超过24小时内触发的Lambdas?
答案 0 :(得分:3)
最长评估期为24小时。
您可以使用CloudWatch PutMetricData API创建自定义指标来解决这个问题。您可以发布自上次执行lambda函数以来经过的时间,然后在值超过8天时发出警报。
这样做的一种方法是让lambda函数在每次触发时将执行的时间戳存储到DynamoDB。然后,您可以创建一个新函数,该函数将从DynamoDB读取该时间戳,并将其与当前时间之间的差异发布到自定义度量标准(例如,每1小时触发一次lambda触发器)。
一旦您有新的自定义指标流动,您可以创建一个警报,如果一个1小时数据点的值超过8天,则会触发警报(这将解决您的初始问题)。您还可以将 将缺失数据视为 选项设置为 错误 - 违反阈值 (如果第二个lambda函数不会触发)。
您还应该在CloudWatch Events errors和Lambda errors上设置闹钟。如果调度或lambda本身出现问题,这将提醒您。但是我上面提到的自定义指标也会在人为错误的情况下提醒您,例如,有人会错误地删除或删除事件或函数。