amazon-web-services - 在 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
推荐阅读
- acumatica - 如何在项目报价屏幕上添加字段 PQ000025
- python - TensorFlow 两次打印日志信息
- javascript - 最小化 puppeteer 时我的代码不运行
- tensorflow - 如何使用 Keras 构建预训练的 CNN-LSTM 网络
- html - Boostrap flexbox 同宽子
- git - 推送到远程存储库(例如 Google 源存储库)时缺少 git 标签
- python - 将 .txt 文件拆分为元素
- python - Python/SQLAlchemy - 如何使用多个 WHERE 子句快速查询数据库?
- chart.js - 图表内的 Chart.js 自定义图例
- python - python中的魔术方法和__str__函数