AWS ECS集群EC2实例未显示、任务Pending问题排查求助
ECS EC2实例未加入集群及任务Pending问题排查
以下是针对问题的核心排查方向,结合你的操作和Terraform配置逐一验证:
ECS Agent与IAM角色权限
- 确认EC2实例关联的IAM角色包含ECS实例所需权限:必须附加
AmazonEC2ContainerServiceforEC2Role托管策略,或自定义策略涵盖ecs:RegisterContainerInstance、ecs:DeregisterContainerInstance、ecs:Submit*等核心动作。Terraform中需确保IAM角色的信任策略允许ec2.amazonaws.com扮演该角色,且权限策略正确关联。 - 登录EC2实例查看ECS Agent日志(
/var/log/ecs/ecs-agent.log),搜索RegisterContainerInstance相关报错,排查是否存在集群名称不匹配、权限拒绝或网络连接失败等问题。 - 验证实例用户数据的实际生效内容:在EC2控制台实例详情的“用户数据”栏,确认
ECS_CLUSTER的值与你创建的ECS集群名称完全一致,避免Terraform变量渲染错误。
- 确认EC2实例关联的IAM角色包含ECS实例所需权限:必须附加
网络连通性深度验证
- 在EC2实例上执行
curl https://ecs.${你的区域}.amazonaws.com(替换为实际区域,如ecs.us-east-1.amazonaws.com),检查是否能正常访问ECS服务端点。若失败:- 确认子网路由表配置:公有子网路由表需包含指向IGW的0.0.0.0/0路由;私有子网需指向NAT Gateway。
- 检查安全组出站规则:允许HTTPS(443端口)流量到0.0.0.0/0。
- 检查VPC的DNS设置:确保
enableDnsHostnames和enableDnsSupport均设为true,否则实例无法解析ECS服务域名。
- 用
nslookup ecs.${你的区域}.amazonaws.com测试域名解析,若失败需检查VPC DNS配置或实例的DNS服务器设置。
- 在EC2实例上执行
Auto Scaling Group配置校验
- 确认ASG关联的Launch Template/Configuration正确,且其中的用户数据确实注入了正确的ECS集群名称。
- 检查ASG的实例是否部署在ECS集群关联的子网内,同时子网的网络ACL需允许:
- 出站HTTPS(443)流量到ECS服务端点
- 入站流量来自ECS控制平面(可参考AWS官方的ECS端口要求)
区域一致性检查
确保Terraform配置中ECS集群、EC2实例、ASG等所有资源的AWS区域完全一致,跨区域实例无法加入集群。任务Pending额外排查(若实例最终加入集群)
- 检查任务定义的CPU、内存需求是否超过EC2实例的可用资源。
- 确认任务执行角色拥有拉取容器镜像的权限(如访问ECR的
ecr:GetDownloadUrlForLayer、ecr:BatchGetImage等动作)。
内容的提问来源于stack exchange,提问作者thomasmelison
相关产品推荐
相关产品推荐

