使用Pulumi创建Route 53健康检查告警遇CloudWatch自定义指标不支持错误
解决Route53健康检查关联自定义CloudWatch告警的报错问题
报错原因
Route53的CLOUDWATCH_METRIC类型健康检查有个硬性限制:不能关联用metricQueries定义的复合指标告警,只能对接单一指标的CloudWatch告警,且告警必须直接配置metric的基础参数,不能通过metricQueries构建复合查询。
修正后的代码
1. 调整CloudWatch MetricAlarm配置
删掉metricQueries,改用直接配置metric的属性:
const otHealthCheck = new aws.cloudwatch.MetricAlarm("prd198-custom-alarm", { alarmDescription: "service is down", comparisonOperator: "GreaterThanOrEqualToThreshold", evaluationPeriods: 1, insufficientDataActions: [], datapointsToAlarm: 1, okActions: [], alarmActions: [], // 替换metricQueries为直接的metric参数 metricName: "ERRORS", namespace: "prd198-custom", dimensions: { ERRORCODE: "500", }, period: 120, statistic: "Sum", // Pulumi的AWS provider中参数为statistic而非stat threshold: 1, });
2. 修复Route53健康检查的语法错误
原代码中cloudwatchAlarmRegion的值缺失闭合引号,补上即可:
const autoFailoverPrimary = new aws.route53.HealthCheck("prd198-Primary", { cloudwatchAlarmName: "prd198-custom-alarm", cloudwatchAlarmRegion: "us-east-1", // 补上缺失的闭合引号 insufficientDataHealthStatus: "Unhealthy", type: "CLOUDWATCH_METRIC", });
重要注意事项
- Route53健康检查仅支持关联单指标CloudWatch告警,使用
metricQueries的复合指标告警会直接触发你遇到的错误。 - 确保CloudWatch告警的
statistic参数属于Route53支持的类型:Sum、Average、SampleCount、Maximum、Minimum均兼容。 - 通过
putMetricData发送自定义指标时,维度、命名空间需与告警配置完全匹配,否则告警无法正常获取数据。
内容的提问来源于stack exchange,提问作者gaurav bansal
相关产品推荐
相关产品推荐

