无法部署AWS ECS服务:部署失败求助
ECS部署nginxdemos/hello失败&503错误排查方向
1. 任务定义基础配置核查
- 端口映射确认:nginxdemos/hello默认暴露80端口,需确保任务定义中容器的80端口已映射到主机端口(如30000),且服务负载均衡配置里的目标组端口与该主机端口一致。
- 镜像地址校验:检查任务定义的容器镜像地址是否为
nginxdemos/hello(注意拼写,避免类似nginex的笔误),公共镜像无需额外权限,但Fargate模式下需确保执行角色具备拉取公共镜像的出站权限。 - 资源分配检查:给任务分配至少0.25vCPU和0.5GB内存,避免因资源不足导致容器启动失败。
2. 容器启动日志分析
找到集群中失败的任务,查看CloudWatch容器日志,排查是否存在镜像拉取失败、端口占用、权限限制等启动报错。本地能正常运行不代表AWS环境无限制,比如SELinux策略、网络拦截等都可能导致启动失败。
3. 负载均衡与目标组配置检查
- 健康检查配置:目标组健康检查路径需设为
HTTP:80/(对应容器80端口或主机映射端口),若路径错误会导致目标被标记为不健康,LB返回503。 - 目标注册状态:查看目标组的注册目标,确认EC2实例(EC2模式)或Fargate任务ENI的状态是否为
healthy,unhealthy状态优先排查健康检查和容器启动情况。 - LB监听规则:确认负载均衡监听规则已正确指向目标组,比如HTTP 80端口流量是否转发至对应目标组,无错误路径规则。
4. 网络与安全组排查
- 安全组规则:
- 容器所在EC2实例/Fargate任务的安全组,需允许负载均衡安全组访问容器映射的主机端口。
- 负载均衡安全组需允许外部流量访问80/443端口。
- Fargate模式下,任务安全组需允许出站HTTPS 443流量以拉取Docker Hub镜像。
- VPC子网配置:确认任务部署的子网具备公网访问能力(或配置NAT网关),Fargate模式需确保子网能分配公网IP或通过NAT访问公网。
5. ECS服务部署配置核查
- 部署模式匹配:区分EC2/Fargate模式,Fargate需配置任务网络模式为
awsvpc,EC2模式可使用bridge模式。 - 服务期望任务数:确认服务期望任务数大于0,无自动伸缩规则导致任务被终止。
- 任务停止原因:在服务“部署”标签下查看失败任务的停止原因,AWS会给出具体提示(如资源不足、网络错误等)。
内容的提问来源于stack exchange,提问作者Nomad
相关产品推荐
相关产品推荐

