如何解决在 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 .....
解决方法
我会在这里做什么而不是在图像中烘焙凭据:
使用一个凭据来拉/推/标记图像,为什么不使用相同的凭据来推送图像。
如果您不想这样做:
创建一个 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。