Использование разных учетных данных aws в конвейере Bitbucket

У меня есть конвейер битбакета, который должен иметь несколько учетных данных 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 .....

См. также:  MongoDB - не авторизован в общем кластере, несмотря на роль atlasAdmin
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Oguzhan Aygun

    Что бы я сделал здесь вместо того, чтобы запекать учетные данные внутри изображений:

    Используйте одни учетные данные для извлечения / проталкивания / добавления тегов к изображению, почему бы не использовать их для проталкивания изображения.

    Если вы не хотите этого делать:

    Создайте роль IAM и дайте это разрешение на теги / отправку изображений и возьмите эту роль из ранее экспортируемых учетных данных. Нет необходимости запекать учетные данные в изображениях.

    Я нашел следующий пример в документации

        script:
    
        # build the image
        - docker build -t my-docker-image .
    
        # use the pipe to push to AWS ECR
        - pipe: atlassian/aws-ecr-push-image:1.2.2
            variables:
            AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
            AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
            AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
            IMAGE_NAME: my-docker-image
            TAGS: '${BITBUCKET_TAG} latest'G
    

    Привет, спасибо за ваш ответ, позвольте мне объяснить мою ситуацию немного подробнее, у нас есть много репозиториев внутри проекта 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

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: