Учетные данные контейнера ECS

Недавно я столкнулся с проблемой принятия роли из контейнера ECS.

Роль задачи моей задачи ECS имела политику принятия роли в целевой учетной записи, и я также следовал шагам и способам устранения неполадок из документации AWS (см. здесь) Однако я все еще не мог принять роль.

Моя основная проблема заключалась в том, что процесс не мог увидеть переменную AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, поэтому он не мог получить учетные данные из роли.

Согласно документации AWS:

Переменная окружения AWS_CONTAINER_CREDENTIALS_RELATIVE_URI доступна только для процессов PID 1 внутри контейнера. Если в контейнере запущено несколько процессов или процессов init (таких как сценарий-обертка, сценарий запуска или супервизор), переменная окружения недоступна для процессов, не имеющих PID 1.

Чтобы установить переменную окружения так, чтобы она была доступна для процессов, не имеющих PID 1, экспортируйте переменную окружения в файл .profile. Например, выполните следующую команду для экспорта переменной в Dockerfile для вашего образа контейнера:

RUN echo 'export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)' >> /root/.profile

Теперь дополнительные процессы могут получить доступ к переменной окружения.

Как было предложено, я попробовал добавить команду в Dockerfile, но …. не помог. Я также попытался добавить то же самое в сценарий docker entypoint … то же самое. Я пробовал разные вещи, но все равно ничего.

Мой контейнер работал как часть конвейера gitlab (см. Gitlab Runner Job), и единственный способ заставить его работать — это экспортировать AWS_CONTAINER_CREDENTIALS_RELATIVE_URI в задании конвейера.

Например.

test-job1:
  stage: test
  script:
    - export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)
    - aws s3 ls --profile cross-account-role

Войти в полноэкранный режим Выйти из полноэкранного режима

На данный момент это единственный способ получить учетные данные от роли задания. Это не элегантно, но это работает.

Если у кого-то была такая же проблема и ему удалось найти лучшее решение, я буду рад услышать от вас, а если я хоть немного помог решить вашу проблему, то я буду еще более счастлив.

CIAO!


Ссылки

  • https://aws.amazon.com/premiumsupport/knowledge-center/ecs-iam-role-another-account/
  • https://aws.amazon.com/premiumsupport/knowledge-center/ecs-iam-task-roles-config-errors/
  • https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html

Оцените статью
Procodings.ru
Добавить комментарий