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

AWS ECS部署React应用至EC2实例触发熔断故障排查

问题排查与解决建议

针对你遇到的ECS部署熔断问题,结合手动运行正常的情况,从以下几个方向排查:

1. 实例资源是否充足

你的任务定义给容器分配了1024 CPU单位和1024MB内存,但EC2实例需要预留资源给ECS Agent、系统进程等。如果用的是t2.micro这类1vCPU/1GB内存的实例,剩余资源根本不足以启动任务,直接触发部署熔断。

  • 检查ECS集群内实例的剩余资源:在ECS控制台集群页面,查看实例的可用CPU和可用内存指标
  • 调整任务资源分配:如果实例资源有限,把cpu和memory调低,比如改成256 CPU单位和512 MB内存后重试部署

2. 主机端口冲突

任务定义里hostPort设为80,若EC2实例上已有进程占用该端口(比如之前手动启动的容器未停止、实例自带web服务),ECS任务会因无法绑定端口启动失败。

  • 登录EC2实例,执行netstat -tulpn | grep :80检查80端口占用情况
  • 若端口被占用,要么停止占用进程,要么修改任务定义的hostPort为其他空闲端口(比如3000),或设为0启用动态端口映射

3. 补充日志配置定位启动失败原因

当前任务定义未配置日志驱动,容器启动失败后无法查看具体错误信息,建议添加日志配置将容器日志输出到CloudWatch:
修改容器定义部分,新增logConfiguration:

"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "/ecs/my-app",
        "awslogs-region": "eu-north-1",
        "awslogs-stream-prefix": "ecs"
    }
}
  • 提前在CloudWatch创建对应日志组/ecs/my-app
  • 确保ecsTaskExecutionRole已附加AmazonECSTaskExecutionRolePolicy托管策略(包含CloudWatch日志写入权限)
    部署后查看CloudWatch日志,即可明确容器启动失败的具体原因(如镜像拉取失败、依赖缺失等)

4. 验证IAM执行角色权限

尽管任务定义包含ECR拉取属性,仍需确认ecsTaskExecutionRole权限完整:

  • 检查角色是否附加AmazonECSTaskExecutionRolePolicy托管策略
  • 确认策略包含ECR的GetDownloadUrlForLayer、BatchGetImage、BatchCheckLayerAvailability权限,以及CloudWatch日志相关权限
  • 若使用自定义策略,确保未遗漏上述必要权限

5. 检查EC2实例的ECS Agent状态

ECS Agent负责在实例上启动任务,若Agent状态异常会导致任务无法启动:

  • 登录EC2实例,执行sudo systemctl status ecs(Amazon Linux 2)检查Agent运行状态
  • 若Agent未运行,执行sudo systemctl start ecs重启服务
  • 查看Agent日志:cat /var/log/ecs/ecs-agent.log,排查镜像拉取、容器启动相关错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:25:25