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

Terraform部署AWS CodeDeploy ECS环境时部署停滞问题求助

排查AWS CodeDeploy ECS部署停滞在Install阶段的问题

可能的原因及排查步骤

1. 任务定义权限问题

  • 检查ECS任务执行角色是否具备拉取新nginx镜像的权限:确保角色包含AmazonEC2ContainerRegistryReadOnly权限(若使用ECR),或对应第三方镜像源的访问权限(如Docker Hub需配置网络出口或凭证)。
  • 验证Terraform中任务执行角色的策略配置,示例正确配置:
    resource "aws_iam_role_policy_attachment" "ecs_task_execution_policy" {
      role       = aws_iam_role.ecs_task_execution_role.name
      policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
    }
    

2. CodeDeploy部署组配置缺失

  • 确认部署组关联了正确的负载均衡目标组:Terraform中aws_codedeploy_deployment_group的load_balancer_info必须指向ECS服务绑定的目标组,且目标组健康检查规则匹配nginx配置(默认路径为/)。
  • 检查部署组的健康阈值设置:若最小健康百分比设为100%且当前任务数为1,新任务无法调度会导致部署停滞。示例合理配置:
    resource "aws_codedeploy_deployment_group" "ecs_deployment_group" {
      # ...其他基础配置
      deployment_config_name = "CodeDeployDefault.ECSAllAtOnce"
      load_balancer_info {
        target_group_info {
          name = aws_lb_target_group.ecs_target_group.name
        }
      }
      auto_rollback_configuration {
        enabled = true
        events  = ["DEPLOYMENT_FAILURE"]
      }
    }
    

3. ECS服务与任务定义关联问题

  • 确认ECS服务的部署控制器类型为CODE_DEPLOY:这是CodeDeploy管理ECS部署的必要前提,Terraform配置示例:
    resource "aws_ecs_service" "ecs_service" {
      name            = "ecs-service"
      cluster         = aws_ecs_cluster.ecs_cluster.id
      task_definition = aws_ecs_task_definition.ecs_task_definition.arn
      desired_count   = 1
      deployment_controller {
        type = "CODE_DEPLOY"
      }
      # ...负载均衡、网络配置等
    }
    
  • 验证更新后的任务定义ARN是否被ECS服务正确引用,避免手动修改任务定义后未同步Terraform配置。

4. VPC网络连通性问题

  • 检查ECS任务所在子网的网络出口:若使用私有子网,需配置NAT网关或ECR VPC端点(com.amazonaws.region.ecr.dkr和com.amazonaws.region.ecr.api),确保任务能拉取镜像。
  • 确认安全组规则允许任务与负载均衡、镜像仓库的通信:比如开放容器端口给目标组,允许出站流量到镜像仓库端口。

5. 日志与事件排查

  • 查看CodeDeploy部署详情的事件日志:即使无报错,也可能存在任务启动失败的隐性事件(如容器退出但未触发告警)。
  • 检查CloudWatch日志中ECS任务的启动日志:搜索镜像拉取、容器启动相关的错误信息,比如权限不足、端口冲突等。

6. Terraform配置一致性问题

  • 执行terraform plan检查是否存在配置漂移:比如手动修改AWS资源后,Terraform配置与实际资源状态不一致,导致部署逻辑冲突。
  • 确保更新任务定义后执行了terraform apply,将新配置同步到AWS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:11:05