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

AWS ECS部署报错“Essential container in task exited”排查求助

解决AWS ECS部署时"Essential container in task exited"错误及日志排查方案

1. 查看任务停止原因

进入AWS ECS控制台,定位到失败的任务,查看停止原因字段,这里会直接显示容器退出的错误码(如1表示应用启动失败、137表示内存不足被杀死)或具体触发原因。

2. 排查CloudWatch Logs无日志问题

  • 检查执行角色权限:确认ecsTaskExecutionRole是否包含CloudWatch Logs相关权限,需添加以下策略语句:
    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:ap-southeast-2:625875865989:log-group:/ecs/docker-api-task:*"
    }
    
  • 确认日志组存在:手动登录CloudWatch控制台,检查是否存在/ecs/docker-api-task日志组。若未创建,可能是角色权限不足导致自动创建失败,需手动创建或修复权限。
  • 本地验证镜像启动:如果容器启动过快导致日志未上传,本地运行镜像查看启动日志:
    docker run -p 3000:3000 625875865989.dkr.ecr.ap-southeast-2.amazonaws.com/imember-app-backend:latest
    
    观察控制台输出,确认应用是否能正常启动、是否有报错信息。

3. 查看ECS实例本地日志

如果容器未成功上传日志到CloudWatch,登录任务所在的EC2实例,直接查看Docker或ECS代理日志:

  • 查看容器日志:
    # 先获取容器ID
    docker ps -a
    # 查看对应容器的日志
    docker logs <容器ID>
    
  • 查看ECS代理日志,排查任务启动过程中的错误:
    cat /var/log/ecs/ecs-agent.log | grep docker-api-task
    

4. 检查任务定义配置细节

  • 端口监听验证:确认容器内的应用确实在3000端口监听,可本地运行镜像后用curl localhost:3000测试是否有响应。
  • 环境变量检查:任务定义中environment为空,若应用依赖特定环境变量(如数据库连接、配置参数),需补充到任务定义中。
  • 资源配置确认:任务分配了1CPU和3GB内存,检查EC2实例是否有足够的剩余CPU、内存资源运行该任务。

5. 验证ECR镜像可用性

在EC2实例上执行镜像拉取命令,确认镜像能正常获取:

docker pull 625875865989.dkr.ecr.ap-southeast-2.amazonaws.com/imember-app-backend:latest

若拉取失败,检查ECR权限或镜像是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:17:47