You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform部署问题:EC2无法连接至Elastic Container Service

排查ECS容器实例未注册问题的关键步骤

1. 检查EC2实例的IAM角色权限

EC2实例必须关联具备ECS注册能力的IAM角色,至少包含以下核心权限:

  • ecs:RegisterContainerInstance
  • ecs:DeregisterContainerInstance
  • ecs:SubmitContainerStateChange
  • ecs:SubmitTaskStateChange
  • ecr:GetAuthorizationToken(若使用ECR镜像)
  • logs:CreateLogStream、logs:PutLogEvents(日志推送)

用AWS CLI验证实例关联的角色:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

返回角色名称后,检查该角色的权限策略是否完整。

2. 验证ECS代理的运行状态与配置

ECS代理是实例注册到集群的核心组件,执行以下命令检查运行状态:

sudo docker ps | grep amazon/amazon-ecs-agent

若代理未运行,手动启动:

sudo service docker start
sudo start ecs

同时检查代理配置文件/etc/ecs/ecs.config,确保ECS_CLUSTER参数与你的集群名称完全一致,无拼写或大小写错误。

3. 排查网络与安全组限制

  • 安全组需允许EC2实例出站访问HTTPS(443端口),ECS代理需通过该端口连接AWS ECS服务端点。
  • 验证VPC DNS设置已启用,实例可解析ecs.<region>.amazonaws.com域名,执行:
nslookup ecs.us-east-1.amazonaws.com
  • 检查VPC网络ACL,确保未阻断443端口的出站流量。

4. 分析ECS代理日志定位错误

日志路径通常为/var/log/ecs/ecs-agent.log,过滤错误信息:

sudo grep -i "error" /var/log/ecs/ecs-agent.log

常见错误包括权限不足、集群名称不匹配、网络连接失败等,日志会直接指出问题根源。

5. 核对Terraform脚本的集群配置

检查aws_ecs_cluster资源的名称,与EC2实例用户数据中注入的集群名称完全一致:

user_data = <<EOF
#!/bin/bash
echo "ECS_CLUSTER=${aws_ecs_cluster.my_cluster.name}" >> /etc/ecs/ecs.config
EOF

确保用户数据正确注入,没有变量引用错误。

6. 用CLI确认集群注册状态

通过AWS CLI直接查询集群的容器实例:

aws ecs list-container-instances --cluster <你的集群名称>

若返回空列表,结合前面的日志、权限检查定位问题;若有实例ID但控制台未显示,可能是控制台缓存,刷新后重试。


内容的提问来源于stack exchange,提问作者user3447228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:07:09