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

AWS CodePipeline部署至ECS持续卡在进行中,如何排查解决?

排查CodePipeline部署ECS卡住的问题

以下是常见的问题原因及修复步骤:

1. 检查imagedefinitions.json格式与内容

CodePipeline部署ECS完全依赖该文件定位镜像,格式或内容错误会直接导致部署停滞:

  • 确保文件为标准JSON结构,示例正确格式:
    [
      {
        "name": "你的ECS容器名称",
        "imageUri": "1111111111.dkr.ecr.eu-west-2.amazonaws.com/node-api:latest"
      }
    ]
    
  • name字段必须与ECS服务任务定义中的容器名称完全匹配(大小写敏感)
  • 验证imageUri的准确性,包括ECR仓库ID、区域、镜像名及标签
  • 通过CodeBuild构建日志或S3工件桶,确认该文件已正确生成并包含在构建输出中

2. 验证CodePipeline部署角色权限

CodePipeline的服务角色需要足够权限完成ECS服务更新:

  • 进入IAM控制台,找到CodePipeline使用的服务角色
  • 确保角色附加AmazonECSDeployRolePolicy托管策略,或自定义策略包含以下核心权限:
    • ecs:UpdateService
    • ecs:DescribeServices
    • iam:PassRole(用于传递ECS任务执行角色)

3. 排查ECS服务本身的部署障碍

部署卡住大多是ECS服务无法完成任务更新流程:

  • 进入ECS集群的服务详情页,查看事件标签,是否有任务启动失败、镜像拉取错误等日志
  • 检查任务标签,查看新任务的状态:
    • 若任务启动失败,查看任务详情的「停止原因」,常见问题包括:
      • ECR镜像拉取权限不足(确认任务执行角色拥有ecr:GetDownloadUrlForLayer、ecr:BatchGetImage权限)
      • Fargate资源配额不足(CPU/内存配置超出可用额度)
      • VPC子网/安全组配置错误(无法访问ECR或负载均衡器)
  • 调整服务的部署配置:
    若最小健康百分比设为100%、最大百分比设为100%,会导致无法启动新任务替换旧任务,建议调整为最小50%、最大200%

4. 确认CodePipeline部署阶段配置

  • 检查部署阶段指定的集群名称、服务名称是否与实际ECS资源完全一致(大小写敏感)
  • 确认imagedefinitions.json的文件名和路径正确,若文件在构建输出的子目录中,需填写相对路径(如build/imagedefinitions.json)

内容的提问来源于stack exchange,提问作者Wai Yan Hein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:50:13