AWS Cloudwatch使用Docker容器进行日志记录 - NoCredentialProviders:链中没有有效的提供程序

use*_*855 8 amazon-web-services amazon-cloudwatch docker docker-compose amazon-cloudwatchlogs

我的docker-compose文件:

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

我已使用aws configure命令将我的AWS凭据添加到我的mac,并且凭据正确存储在〜/ .aws/credentials中

当我运行docker-compose时,我收到以下错误:

错误:for scraper无法启动服务scraper:无法初始化日志记录驱动程序:NoCredentialProviders:链中没有有效的提供程序.

已过时.有关详细消息,请参阅aws.Config.CredentialsChainVerboseErrors

错误:启动项目时遇到错误.

我相信这是因为我需要在Docker守护程序中设置AWS凭据,但我无法弄清楚如何在macOs Sierra上完成此操作.

poc*_*sar 7

我想通了.在滚动您自己的EC2实例(不使用Beanstalk等自动化解决方案)时,您需要为EC2实例分配一个角色,以便它能够与其他AWS服务进行通信.

政策

该策略是Docker文档在https://docs.docker.com/engine/admin/logging/awslogs/中提供的策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

那么您需要将此策略附加到角色

EC2角色

该角色是第一个名为"Amazon EC2"的角色,其内容为"允许EC2实例代表您调用AWS服务".

由于您只限制了对CloudWatch的访问权限,因此您很高兴.然后,在您的EC2列表中,使用"附加/替换IAM角色"将角色附加到您的实例:

IAM角色

附加IAM角色

你应该好好去!

  • 在新的 EC2 UI 中,“附加/替换 IAM 角色”已移至“安全”,您可以添加/编辑 IAM 角色 (2认同)