У меня есть конвейер битбакета, который должен иметь несколько учетных данных aws для разных обязанностей.
В первых строках у меня есть собственное изображение ECR. Чтобы вытащить его, я создал пользователя AWS только с разрешениями только на чтение ECR. Параметры access-key и secret-key являются ключами этого пользователя.
И в этот образ ECR я встроил учетные данные другого пользователя AWS для выполнения остальной работы (отправка изображения и т. Д.). Но каким-то образом учетные данные, которые я использовал для получения базового образа, тоже выполнялись поэтапно. Из-за этой ситуации запрещается размещение изображения.
Я попытался использовать export AWS_PROFILE = deployment, но это не помогло.
Применяются ли учетные данные для извлечения базового изображения по всему конвейеру?
И как мне выйти из этой ситуации?
Спасибо.
image:
name: <ECR Image>
aws:
access-key: $AWS_ACCESS_KEY_ID
secret-key: $AWS_SECRET_ACCESS_KEY
pipelines:
- step:
name: "Image Build & Push"
services:
-docker
script:
- export AWS_PROFILE=deployment
- export ENVIRONMENT=beta
- echo "Environment is ${ENVIRONMENT}"
- export DOCKER_IMAGE_BUILDER="${BITBUCKET_REPO_SLUG}:builder"
- make clean
- make build BUILD_VER=${BITBUCKET_TAG}.${BITBUCKET_BUILD_NUMBER} \ APP_NAME=${BITBUCKET_REPO_SLUG} \
DOCKER_IMAGE_BUILDER=${DOCKER_IMAGE_BUILDER}
- make test
- docker tag ....
- docker push .....
Что бы я сделал здесь вместо того, чтобы запекать учетные данные внутри изображений:
Используйте одни учетные данные для извлечения / проталкивания / добавления тегов к изображению, почему бы не использовать их для проталкивания изображения.
Если вы не хотите этого делать:
Создайте роль IAM и дайте это разрешение на теги / отправку изображений и возьмите эту роль из ранее экспортируемых учетных данных. Нет необходимости запекать учетные данные в изображениях.
Я нашел следующий пример в документации
Привет, спасибо за ваш ответ, позвольте мне объяснить мою ситуацию немного подробнее, у нас есть много репозиториев внутри проекта bitbucket. И, к сожалению, Bitbucket не имеет переменных уровня проекта для управления кредитами AWS оттуда. Написание кредитов к каждому проекту — долгий и малоэффективный процесс. Поскольку мы используем одну и ту же учетную запись с другими командами, учетные данные уровня рабочей области также не должны использоваться. Кроме того, использование базового образа ECR требует кредитов, и я планирую написать их на уровне рабочей области, чтобы все проекты могли его использовать. Его следует только читать. Есть ли способ перезаписать кредиты в этом деле? — person Oguzhan Aygun; 05.01.2021
и профиль, который вы упомянули в вопросе, имеет правильные учетные данные, в этом случае вам просто нужно пройти аутентификацию (отсутствует в общей конфигурации) и соответствующим образом пометить. здесь есть рабочая конфигурация, которую я использую для своего собственного конвейера. — person Oguzhan Aygun; 05.01.2021
Еще раз привет, что вы имеете в виду под общей конфигурацией? Да, я пробовал, как упоминал ранее, но, к сожалению, не сработало. мой экспорт AWS_PROFILE = комментарий развертывания не влияет. — person Oguzhan Aygun; 06.01.2021
если профиль не работает, попробуйте экспортировать их напрямую, как в показанном мной примере, плюс подключите get-caller-identity cli, чтобы проверить, какие учетные данные используются. — person Oguzhan Aygun; 06.01.2021