AWS ECS Fargate服务创建失败:ECSService CREATE_FAILED 求助排查
ECS Fargate服务创建失败:Deployment Circuit Breaker触发问题排查与解决
可能的原因
ECS部署断路器触发本质是连续多次任务启动失败,触发AWS的部署保护机制,停止继续尝试。常见诱因包括:
- 镜像拉取失败:Docker镜像地址错误、私有镜像无拉取权限、镜像本身损坏或不存在
- 资源超出免费套餐配额:Fargate免费套餐仅支持每月750小时的t2.micro/t3.micro等价资源,若任务配置了更高规格(如t2.small)或CPU/内存超出最小限制(0.25vCPU/0.5GB)会直接失败
- 网络配置错误:任务所在VPC无公网访问能力(无法拉取镜像)、安全组未开放必要端口(导致健康检查失败)、子网未关联互联网网关/NAT网关
- IAM权限缺失:任务执行角色缺少拉取ECR镜像、写入CloudWatch日志的权限
- 健康检查不合理:容器启动慢但健康检查初始延迟过短,多次检查失败触发断路器
- 容器启动逻辑错误:容器内启动命令/ENTRYPOINT配置错误,导致容器启动后立即退出
解决步骤
查看任务失败详情
- 进入ECS控制台,找到对应集群的「任务」页面,查看最近失败的任务记录
- 点击任务ID,查看「停止原因」和CloudWatch日志(若已配置),这是定位问题的核心依据
验证镜像配置
- 确认任务定义中的镜像地址完全正确(ECR镜像格式应为
123456789012.dkr.ecr.region.amazonaws.com/repo:tag) - 本地测试镜像可用性:执行
docker run --rm <镜像地址>,排除镜像本身的问题 - 私有镜像需确保任务执行角色拥有
ecr:GetDownloadUrlForLayer、ecr:BatchGetImage等权限
- 确认任务定义中的镜像地址完全正确(ECR镜像格式应为
检查资源与配额
- 任务定义选择
0.25 vCPU / 0.5 GB规格,匹配免费套餐的t2.micro等价资源 - 进入AWS「我的账户」→「配额」页面,确认当前区域的Fargate任务配额未耗尽
- 任务定义选择
排查网络配置
- 确保任务所在子网关联互联网网关(公网场景)或NAT网关(私有子网场景)
- 安全组需开放容器服务端口,同时允许出站访问互联网(0.0.0.0/0)
- 任务定义的网络模式中开启「分配公有IP」,确保任务能拉取公网镜像
确认IAM角色权限
- 检查任务执行角色是否附加
AmazonECSTaskExecutionRolePolicy托管策略 - 自定义策略需包含以下核心权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
- 检查任务执行角色是否附加
调整健康检查规则
- 延长健康检查的「初始延迟时间」(如从0秒改为30秒),增加「重试次数」,适配容器启动速度
- 确保健康检查的路径、端口与容器实际服务端口一致
临时调整断路器设置
- 调试阶段可暂时关闭部署断路器(不建议长期关闭),或提高「失败阈值」,以便获取更多失败日志信息
内容的提问来源于stack exchange,提问作者Gnopor
相关产品推荐
相关产品推荐

