Как запускать команды с учетными данными AWS в докере на EC2? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть EC2, у которого есть постоянный доступ к S3 через профиль:

aws s3 ls --profile myprofile s3://

На том же EC2 я создал Docker-контейнер и установил aws cli. Создан тот же файл ~./aws/config с тем же содержимым, что и на хосте ec2, но эта команда из контейнера Docker теперь выдает ошибку:

aws s3 ls --profile myprofile s3://
Error when retrieving credentials from Ec2InstanceMetadata: No credentials found in credential_source referenced in profile myprofile

Как включить доступ к S3 внутри контейнера?

1 Ответ

0 голосов
/ 02 июля 2019

Есть несколько вариантов сделать это, и в зависимости от вашего склонности к риску возможная уязвимость поможет определить, как двигаться дальше.

Вы можете пойти по пути создания файла credentialsвнешне со статическими учетными данными и копированием их в ~/.aws/ во время сборки.Вы даже можете использовать переменные в файле и передать их с помощью ENV или ARG.

Если вы используете docker-compose, то файлы .env вступают в игру, с почти такой же идеей, каквыше.

Вы можете позвонить в службу метаданных EC2 для получения временных учетных данных, у меня нет особого опыта в этом, но здесь есть некоторая информация: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-retrieval

Вы можететакже cat > ~/.aws из файла, хотя это было бы болезненно, и делайте некоторые вариации переменных ENV на уровне CLI или с .env, ENV или ARG

ЕСЛИ вы используете ECS для запуска ваших контейнеров наВ верхней части EC2 вы можете передать переменные как valueFrom в определении задачи / определении контейнера, чтобы получить их из хранилища параметров Systems Manager (в виде открытого текста), или вы можете зашифровать свои параметры с помощью ключа KMS или использовать секреты открытого текста изДиспетчер секретов и введите их для своих переменных.

С помощью вышеизложенного вы можете COPY файл с переменными значениями credentials и передавать переменные ENV как $(keys) в своемDockerfile, а затем вставьте их из Secrets Manager или Parameter Store, чтобы обеспечить дополнительную безопасность.

...