如何查看ECS Fargate集群中容器的内部运行日志?
Fargate容器登录及日志查看方案
核心说明
Fargate是AWS托管的无服务器容器运行环境,你无法直接SSH登录底层宿主节点,但支持直接进入运行中的容器内部,同时也有更便捷的无需登录的日志查看方式。
一、直接登录Fargate容器操作方法
前置要求
- 容器运行在Linux Fargate上,平台版本≥1.4.0,Windows Fargate暂不支持该功能
- 任务定义中已开启
enableExecuteCommand配置 - 你使用的IAM身份有
ecs:ExecuteCommand权限,任务执行角色已配置SSM服务相关权限 - 已安装配置好AWS CLI
操作命令
执行以下命令即可进入容器交互式shell:
aws ecs execute-command \ --cluster <你的ECS集群名称> \ --task <目标任务的ID> \ --container <目标容器的名称> \ --interactive \ --command "/bin/sh"
如果你的容器镜像自带bash,可将/bin/sh替换为/bin/bash。进入容器后即可直接操作内部文件、查看本地日志。
二、查看SpringBoot应用日志方案
方案1:无需登录容器(推荐)
绝大多数场景不需要进容器看日志,你只需要在任务定义的容器日志配置中选择awslogs日志驱动,配置对应的CloudWatch日志组和流前缀,Fargate会自动把容器的stdout/stderr输出同步到CloudWatch Logs。SpringBoot默认会把日志输出到stdout,配置完成后直接在CloudWatch控制台就能搜索、筛选所有应用日志,还能配置告警。
方案2:登录容器查看本地日志
如果你的SpringBoot日志是单独输出到容器内的指定文件,没有同步到stdout,可以用上面的exec命令进入容器后,用常规Linux命令查看日志,比如:tail -f /path/to/your/springboot/application.log
常见问题排查
- 执行exec命令报错的话,优先检查任务是否已经开启
enableExecuteCommand、平台版本是否符合要求、IAM权限是否配置正确 - 旧的运行中任务如果没有开启exec功能,需要更新任务定义重新部署后才能使用
- 已经停止的任务无法使用exec功能,停止前的日志如果已经配置了awslogs驱动依然可以在CloudWatch查看
内容的提问来源于stack exchange,提问作者Anil Kumar Keshavamurthy
相关产品推荐
相关产品推荐

