从Docker容器登录到AWS Cloudwatch

use*_*855 5 amazon-ec2 amazon-web-services docker docker-compose amazon-cloudwatchlogs

我在AWS EC2实例上有几个以docker-compose运行的Docker容器。我希望将日志发送到AWS CloudWatch。我也遇到了问题,将日志从docker容器从运行Sierra的Mac上从Docker容器传输到AWS CloudWatch,因此我已移至运行Amazon AMI的EC2实例。

我的docker-compose文件:

version: '2'
services:
  scraper:
  build: ./Scraper/
  logging:
    driver: "awslogs"
    options:
       awslogs-region: "eu-west-1"
       awslogs-group: "permission-logs"
       awslogs-stream: "stream"
  volumes:
    - ./Scraper/spiders:/spiders
Run Code Online (Sandbox Code Playgroud)

当我运行docker-compose up时,出现以下错误:

scraper_1 | 警告:“ awslogs”日志驱动程序无可用日志

但容器正在运行。没有日志显示在AWS CloudWatch流上。我已将IAM角色分配给运行docker-containers的EC2容器。

现在我对应该做的事情完全不知所措,并且会提出任何建议。

小智 6

awslogs不使用ECS工作。

您需要配置 AWS 凭证(用户应具有适当的 IAM 角色 [cloudwatch logs])。

我使用了本教程,它对我有用:https : //wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/


tal*_*nes -6

您使用的 AWS 日志驱动程序awslogs适用于 EC2 容器服务 (ECS)。它不适用于普通 EC2。请参阅文档

我建议创建一个单节点ECS 集群。确保该集群中的 EC2 实例具有角色,并且该角色提供写入 Cloudwatch 日志的权限。

容器中记录的任何内容都stdout将被驱动程序捕获awslogs并流式传输到 Cloudwatch 日志。

  • 我在常规 EC2 实例上使用它,不需要 ECS。 (2认同)
  • 这个答案应该被删除,它会导致大多数在这个问题上挣扎的人走上一条错误的道路。 (2认同)