如何通过CloudFormation基于Lambda Duration指标创建CloudWatch告警
修复方案
核心问题根因
- 命名空间大小写不匹配:CloudWatch 命名空间是大小写敏感的,AWS Lambda 官方指标的标准命名空间为
AWS/Lambda(首字母大写),你模板中配置的小写aws/lambda无法匹配到官方生成的指标数据,这是告警无数据的核心原因。 - 阈值单位错误:Lambda Duration 指标的单位为毫秒,要实现运行超过 1 分钟触发告警的需求,阈值需要换算为 60000,你测试时设置的
Threshold: 0逻辑上可触发告警,但未匹配到数据时自然无状态变化。 - 维度匹配问题:如果你的 Lambda 配置了版本或别名,手动创建的告警会自动携带
Resource维度,你需要在 CloudFormation 模板中同步添加该维度才能匹配到对应指标。
修正后的模板代码
Resources: testAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: test-alarm AlarmDescription: "Lambda运行时长超过1分钟触发告警" ComparisonOperator: GreaterThanThreshold EvaluationPeriods: 1 DatapointsToAlarm: 1 MetricName: Duration Namespace: AWS/Lambda # 修正为官方标准大写命名空间 Period: 60 Statistic: Maximum Threshold: 60000 # 1分钟 = 60000毫秒 Dimensions: - Name: FunctionName Value: 'hello world' # 若Lambda使用了版本/别名,请取消注释下面的配置,替换为实际的版本/别名值 # - Name: Resource # Value: 'hello world:your_version_or_alias' TreatMissingData: notBreaching
验证方式
部署修正后的模板后,打开 CloudWatch 对应告警的详情页,点击「查看指标」即可看到对应 Lambda 的 Duration 数据点即代表关联成功,后续触发规则即可正常触发告警。
内容的提问来源于stack exchange,提问作者Teh__docco
相关产品推荐
相关产品推荐

