Установите драйвер журнала awslogs в контейнер докеров

Я хочу передать журналы контейнера в AWS Cloud Watch.

Я не могу установить учетные данные AWS в Docker Desktop для Mac.

Docker Version : Version 19.3.5 
Mac OS Version : 10.14.6

Я создал ~/.aws/credentials файла с учетными данными AWS.

aws_access_key_id : XXXXXXX,
aws_secret_access_key" : XXXXXXXX

Я пытался запустить Докер следующими способами:

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"
}
}

В ходе расследования я обнаружил, что мне нужно установить учетные данные AWS внутри демона Docker, а на моем хосте Docker их недостаточно. Как видите, я пытался сделать это с громкостью, но безуспешно.

Я запускаю Docker на своем Mac, есть ли у кого-нибудь идеи, как решить эту проблему?


person Shalom Balulu    schedule 24.03.2020    source источник


Ответы (3)


У меня такая же проблема.

Как вы правильно предположили, недостаточно предоставить клиенту учетные данные aws. Согласно документации докеров:

Вы должны предоставить учетные данные AWS демону Docker.

Теперь при запуске докера на компьютере Mac есть 3 разных сценария:

  • Среда MacOS (разумеется, учетные данные отсюда не экспортируются)
  • Среда виртуальной машины (Oracle VirtualBox с boot2docker)
  • Среда контейнера (здесь пробовали смонтировать .aws / credentials, но не сработали)

Я попробую установить учетные данные в среде виртуальной машины, и посмотрю, поможет ли это.

Если я не ошибаюсь, демон docker работает в среде виртуальной машины, поэтому установка кредитов AWS потенциально может исправить это.

ОБНОВИТЬ:

Рабочее временное исправление с помощью сторонней библиотеки: https://github.com/nearform/docker-cloudwatch/blob/master/index.js.

person Daniel Martinez    schedule 24.03.2020

Вы можете попробовать добавить переменную среды в файл 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>
person Tomasz Breś    schedule 13.05.2020

Похоже, в вашей команде docker run отсутствует опция -t. Посмотрите на это , отправляющее журналы в облачные часы

person codinnvrends    schedule 13.06.2020