跳至内容

为什么我的 Amazon ECS 容器日志没有传送到 CloudWatch Logs?

1 分钟阅读
0

我的 Amazon Elastic Container Service (Amazon ECS) 容器日志未按预期出现在 Amazon CloudWatch Logs 中。

解决方法

修改 awslogs 日志驱动程序

awslogs 日志驱动程序添加到任务定义中的 logConfiguration 参数中。对于具有多个容器的 Amazon ECS 任务,请为每个容器配置 logConfiguration 参数。

如果您有 Amazon Elastic Compute Cloud (Amazon EC2) 启动类型,请将您的 Amazon ECS 容器实例更新到 1.9.0 或更高版本

如果您的容器实例不使用经过 Amazon ECS 优化的亚马逊机器映像 (AMI),请运行以下环境变量来启动容器代理:

ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

**注意:**在容器实例上指定 awslogs 日志驱动程序。

有关详细信息,请参阅安装 Amazon ECS 容器代理

添加必要的 IAM 角色权限

AWS Fargate 启动类型

AmazonECSTaskExecutionRolePolicy 策略附加到您的 Amazon ECS 任务执行 AWS Identity and Access Management (IAM) 角色。该策略包括必要的 logs:CreateLogStreamlogs:PutLogEvents 权限。或者,创建自定义 IAM 策略并添加必要的权限。

没有任务执行 IAM 角色的 Amazon EC2 启动类型任务

AmazonEC2ContainerServiceforEC2Role 策略附加到容器实例 IAM 角色。该策略包含必要的 logs:CreateLogStreamlogs:PutLogEvents 权限。或者,创建自定义 IAM 策略并添加必要的权限。

使用任务执行 IAM 角色的 Amazon EC2 启动类型任务

对于容器代理配置,将 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE 参数更新为 true

**注意:**容器代理参数的默认值在 1.16.0-1 或更高版本的 Amazon ECS 优化的 AMI 上为 true,在 Windows 上为 false

检查网络配置

如果您的任务在没有互联网网关的 Amazon Virtual Private Cloud (Amazon VPC) 中使用 awslogs 日志驱动程序,请为 CloudWatch Logs 创建接口 VPC 端点。选择 com.amazonaws.Region.logs 作为服务。

检查容器日志级别配置

awslogs 日志驱动程序将 STDOUTSTDERR I/O 流从 Docker 传递到 CloudWatch Logs。

要配置日志,请更新您的应用程序,将日志发送到 STDOUTSTDERR I/O 流。然后,在容器构建期间,通过环境变量或配置文件配置应用程序的日志级别。

相关信息

Amazon ECS 的监控工具

如何解决 Amazon ECS 或 Amazon EKS 容器日志缺失的问题?

将 Amazon ECS 日志发送到 CloudWatch

AWS 官方已更新 7 个月前