首页 > 解决方案 > 在 Bitbucket 管道中使用不同的 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 .....

标签: amazon-web-servicesbitbucketamazon-eksbitbucket-pipelines

解决方案


我会在这里做什么而不是在图像中烘焙凭据:

使用一个凭据来拉/推/标记图像,为什么不使用相同的凭据来推图像。

如果这是你不想做的事情:

创建一个 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

推荐阅读