Правильная конфигурация пользователя для контейнера aws-cli

#docker #aws-cli #windows-subsystem-for-linux #docker-volume #pengwin

#docker #aws-cli #windows-subsystem-for-linux #docker-volume #pengwin

Вопрос:

В документации AWS CLI v2 представлены опции и руководство по установке / настройке cli с помощью docker. Руководство достаточно простое, чтобы следовать, и контейнер отлично работает с ключевыми элементами, являющимися

  • монтирование локального .aws каталога для предоставления учетных данных контейнеру
  • требуется монтаж $pwd для любых операций ввода-вывода

Я использую его для s3 и понял, что любые файлы, которые я копирую на свой локальный диск с s3, отображаются как принадлежащие root .

 >docker run --rm -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
download: s3://xxx/hello to ./hello
>ls -l
total 0
-rw-r--r-- 1 root root 0 Oct  2 09:43 hello
  

Это имеет смысл, поскольку процесс выполняется как root в контейнере, но не идеально. В контейнере нет другого пользователя, поэтому я не могу просто запустить «как» kirk .

 >docker run --rm -u kirk -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
docker: Error response from daemon: unable to find user kirk: no matching entries in passwd file.
  

Есть ли способ смонтировать том «как» пользователя или путем делегирования пользовательского доступа к контейнеру? Мне все равно (и я не уверен, что могу контролировать) пользователя внутри контейнера, но я бы хотел, чтобы процесс выполнялся в контексте пользователя в хост-системе. Какой здесь правильный подход?

Ответ №1:

Вы можете запустить контейнер от имени пользователя, которого нет внутри изображения, используя числовые значения для -u ${UID}:${GID} . Например:

 docker run --rm 
    -u 1000:1000 
    -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} 
    -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} 
    -v ${PWD}:/aws:rw 
    amazon/aws-cli s3 cp s3://devops-example/lolz.gif .
  

… скопирует файл как UID 1000 GID 1000.

Примечание: использование AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY переменных среды и для передачи учетных данных вместо монтирования файла учетных данных. Полный список переменных среды доступен здесь .

AWS CLI копировать как UID: GID 1000