调度周期 > 1 天的 Lambda 调用的 CloudWatch 警报

CloudWatch alarm for invocation of Lambdas with scheduling periods > 1 day

我有一个每周触发到 运行 的 Lambda,如果它连续 7 天没有 运行,我想要一个 CloudWatch 警报。

我的想法是Alarm if < 1 invocation for 8 days但是好像不能设置超过24小时:

The alarm evaluation period (number of datapoints times the period of the metric) must be no longer than 24 hours.

是否有其他方法可以确保执行超过 24 小时的触发 Lambda?

最长评估期为 24 小时。

您可以使用 CloudWatch PutMetricData API 创建自定义指标来解决这个问题。您可以发布自上次执行 lambda 函数以来经过的时间,然后在该值超过 8 天时发出警报。

执行此操作的一种方法是让您的 lambda 函数在每次触发时将执行时间戳存储到 DynamoDB。然后您可以创建一个新函数,该函数将从 DynamoDB 读取该时间戳并将它与当前时间之间的差异发布到自定义指标(例如,让该 lambda 每 1 小时触发一次)。

一旦您有了新的自定义指标,您就可以创建一个警报,如果一个 1 小时数据点的值超过 8 天,该警报就会触发(这将解决您最初的问题)。您还可以将 Treat missing data as 选项设置为 bad - breaching threshold (如果第二个 lambda 函数未触发,这将提醒您)。

您还应该在 CloudWatch Events errors and Lambda errors 上设置闹钟。如果调度或 lambda 本身出现问题,这将提醒您。但是我上面提到的自定义指标也会在人为错误的情况下提醒您,例如有人错误地禁用或删除了事件或功能。