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

AWS ECS CLI无法将EC2实例加入集群问题求助

解决ECS CLI部署时EC2实例无法加入集群的问题

你遇到的这个问题在自定义VPC环境下很常见——EC2实例能启动,但就是没法注册到ECS集群,导致抛出No Container Instances were found错误。我帮你梳理几个最可能的原因和对应的排查解决步骤:

1. 安全组出站规则限制了ECS通信

EC2实例要和AWS ECS控制平面完成注册,必须能正常通信。你的安全组sg-094607105993d0351得确保允许以下出站流量:

  • 允许HTTPS(443端口)访问AWS ECS服务端点(对应你的eu-west-1区域)
  • 允许HTTPS访问镜像仓库(比如Amazon ECR),不然实例拉取不到容器镜像
  • 允许对169.254.169.254的HTTP访问,这是实例元数据服务的默认地址,ECS代理需要靠它获取配置信息

检查&修复:
登录AWS控制台找到这个安全组,查看出站规则。如果没有上述规则,先临时添加一条允许所有出站流量的规则测试,确认是安全组问题后,再缩小范围到必要的端口和服务。

2. EC2实例的IAM角色权限不足

ECS实例必须关联ecsInstanceRole这个专属IAM角色,且该角色要附带AmazonEC2ContainerServiceforEC2Role托管权限。虽然你用了--capability-iam让CLI自动创建角色,但可能出现:

  • 角色创建成功,但没正确关联到启动的EC2实例
  • 角色权限被修改过,丢失了必要的权限

检查&修复:

  • 到EC2控制台找到你的实例,查看「IAM角色」标签,确认是否关联了ecsInstanceRole
  • 如果没关联,手动给实例附加该角色;如果角色不存在,重新运行ecs-cli up时确保--capability-iam参数生效,或者手动创建角色并绑定托管权限

3. 子网的网络连通性有问题

EC2实例需要访问互联网才能下载ECS代理、拉取镜像并和ECS控制平面通信,你的子网得满足:

  • 如果是公有子网:路由表必须关联Internet Gateway(IGW),且实例分配了公网IP
  • 如果是私有子网:必须配置NAT Gateway,路由表要指向NAT Gateway,让实例通过NAT访问外网

检查&修复:

  • 到VPC控制台查看子网对应的路由表,确认有指向IGW或NAT Gateway的路由条目
  • 用abc-key密钥对登录EC2实例,尝试执行curl https://ecs.eu-west-1.amazonaws.com,如果无法访问,说明网络连通性是核心问题

4. ECS代理配置或用户数据异常

ECS CLI启动实例时会注入用户数据,用来配置ECS代理指向你的abc集群。如果用户数据没正确执行,代理就不知道要注册到哪个集群。

检查&修复:

  • 登录实例查看ECS代理日志:cat /var/log/ecs/ecs-agent.log,看有没有连接ECS端点失败、集群名称配置错误这类报错
  • 查看用户数据执行日志:cat /var/log/cloud-init-output.log,确认里面存在ECS_CLUSTER=abc的配置条目

按这个顺序排查,大概率能定位到问题。优先检查安全组和网络连通性,这两个是最常见的诱因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:12:58