如何查看ECS服务创建日志?部署Rails应用遇配置问题需排查
ECS服务部署日志排查步骤
以下是针对ECS服务创建失败的核心排查日志路径:
1. 查看失败任务的容器日志
这是排查启动问题最直接的方式:
- 登录ECS控制台,进入目标集群的任务标签页,筛选出
STOPPED/FAILED状态的任务,点击任务ID进入详情 - 在任务详情的容器模块,点击对应容器名称,切换到日志标签,这里会展示容器启动时的stdout/stderr输出(前提是任务定义配置了日志驱动)
- 如果未配置日志驱动,需要先在任务定义的容器配置中添加
logConfiguration:指定awslogs驱动,配置对应的日志组、区域和流前缀,确保容器日志能输出到CloudWatch
2. 直接查看CloudWatch日志组
- 打开CloudWatch控制台,找到任务定义中指定的日志组,查看最新的日志流,里面会包含镜像拉取失败、Rails启动报错、环境变量缺失等关键信息
3. 查看任务级别的事件详情
- 在ECS任务详情页的事件标签,会记录任务生命周期的具体错误,比如:
- 镜像拉取失败(如镜像不存在、ECR权限不足)
- 安全组端口未开放导致无法健康检查
- 任务执行角色权限缺失
4. 验证IAM权限
- 检查ECS任务执行角色是否具备必要权限:
- 拉取ECR镜像的权限(可附加
AmazonEC2ContainerRegistryReadOnly托管策略) - 写入CloudWatch日志的权限(可附加
CloudWatchLogsFullAccess或自定义细粒度策略) - 可通过命令行验证:
aws iam simulate-principal-policy --policy-source-arn <任务执行角色ARN> --action-names ecr:GetDownloadUrlForLayer ecr:BatchGetImage logs:CreateLogStream logs:PutLogEvents
- 拉取ECR镜像的权限(可附加
5. 排查网络配置问题
- 确认任务使用的安全组开放了Rails应用的端口(如3000)以及容器健康检查端口
- 检查任务所在子网是否有互联网访问能力(若需拉取公网镜像,需配置NAT网关)
- 验证端口映射配置:主机端口与容器端口是否冲突,是否正确映射
内容的提问来源于stack exchange,提问作者ldhoax
相关产品推荐
相关产品推荐

