16

我的码头工人撰写文件:

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

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

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

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

已弃用。有关详细消息,请参阅 aws.Config.CredentialsChainVerboseErrors

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

我相信这是因为我需要在 Docker 守护进程中设置 AWS 凭证,但我无法弄清楚这是如何在 macOS Sierra 上完成的。

4

1 回答 1

21

我想通了。在滚动您自己的 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": "*"
    }
  ]
}

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

EC2 角色

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

由于您仅限制对 CloudWatch 的访问,因此您可以开始了。然后,在您的 EC2 列表中,使用“附加/替换 IAM 角色”将该角色附加到您的实例:

IAM 角色

附加 IAM 角色

你应该很高兴去!

于 2017-07-23T04:14:08.317 回答