在docker容器上设置awslogs日志驱动程序

问题描述 投票:0回答:2

我想将我的容器日志传递到AWS Cloud Watch。

我无法在Mac的Docker桌面中设置AWS凭证。

Docker Version : Version 19.3.5 
Mac OS Version : 10.14.6

我已经使用AWS凭证创建了~/.aws/credentials文件。

aws_access_key_id : XXXXXXX,
aws_secret_access_key" : XXXXXXXX

我尝试通过以下方式运行Docker:

docker run --name flask -v ${HOME}/.aws/:/root/.aws/:ro -d --log-driver=awslogs --log-opt awslogs-region=XXXX --log-opt awslogs-group=XXXX --log-opt awslogs-create-group=true flask-image

配置策略的IAM用户是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

但是出现以下错误:

docker: Error response from daemon: failed to initialize logging driver: failed to create Cloudwatch log stream: NoCredentialProviders: no valid providers in chain. Deprecated.
    For verbose messaging see aws.Config.CredentialsChainVerboseErrors.

我也已添加到docker.json文件。

并且在Docker Daemon文件中放入AWS日志记录选项。

{
"log-driver" : "awslogs",
"log-opts" : {
"awslogs-region" : "xxxx",
"awslogs-group" : "xxxxx",
"awslogs-stream" : "xxxxx"
}
}

[从调查中发现,我需要在Docker守护程序内设置AWS凭证,而在我的Docker主机上设置的凭证还不够。如您所见,我尝试使用该卷执行此操作,但没有成功。

我在Mac上运行Docker,有人知道如何解决此问题吗?

docker amazon-cloudwatch docker-container aws-cloudwatch-log-insights docker-logs
2个回答
0
投票

我本人也遇到同样的问题。

如您所建议,仅向客户端提供aws凭证是不够的。按照码头工人documentation

您必须向Docker守护程序提供AWS凭证

现在,在Mac机器上运行docker时有3种不同的情况:

  • MacOS环境(不用说,不会从此处导出凭据)
  • VM环境(运行boot2docker的Oracle VirtualBox运行)
  • 容器环境(在此处尝试安装.aws /凭据,但不起作用)

我将尝试在VM环境中安装凭据,看是否有帮助。

如果我没记错的话,docker守护程序正在VM环境上运行,因此在此处安装AWS凭证可能会修复它。

更新:

使用第三方库的临时修订:https://github.com/nearform/docker-cloudwatch/blob/master/index.js


0
投票

您可以尝试将环境变量添加到指向您的凭证文件的docker.service文件中。

调用命令以找到docker.service文件:

# systemctl status docker.service
 docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)

编辑/lib/systemd/system/docker.service文件。

[Service]部分中添加:

[Service]
Environment=AWS_SHARED_CREDENTIALS_FILE=<path_to_aws_credentials_file>
© www.soinside.com 2019 - 2024. All rights reserved.