AWS ECS Fargate CloudFormation自动扩缩容失败,CloudWatch数据不足
ECS Fargate自动扩缩容CloudWatch告警无数据问题解决
核心错误定位
你提供的CloudFormation配置中,AutoScalingPolicy的ResourceLabel存在语法错误:
ResourceLabel: !Sub "${LoadBalancer.LoadBalancerFullName}}/${TargetGroup.TargetGroupFullName}"
这里${LoadBalancer.LoadBalancerFullName}}多了一个额外的闭合大括号},导致生成的资源标签格式不符合要求,Application Auto Scaling无法正确关联到ALB的RequestCountPerTarget指标,最终导致告警显示「数据不足」。
修复方案
- 修正CloudFormation模板中的
ResourceLabel字段,移除多余的}:
ResourceLabel: !Sub "${LoadBalancer.LoadBalancerFullName}/${TargetGroup.TargetGroupFullName}"
- 更新CloudFormation栈,应用修正后的配置。
- 等待5-10分钟(CloudWatch指标与告警的同步延迟),随后测试页面重载,观察自动扩缩容是否正常触发,告警是否能正常获取数据。
额外排查点(若修正后仍异常)
- 确认AWS托管角色
AWSServiceRoleForApplicationAutoScaling_ECSService拥有读取CloudWatch指标、修改ECS服务期望任务数的权限(默认该角色权限足够,可通过IAM控制台验证)。 - 检查ECS服务与目标组的关联是否正常,目标组健康检查配置正确,且任务处于健康状态(仅健康任务会被计入
ALBRequestCountPerTarget的目标计数)。 - 对比手动创建的告警与CloudFormation生成的告警,确认两者的
LoadBalancer和TargetGroup维度值完全一致。
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

