gpt4 book ai didi

amazon-web-services - 使用 Docker 配置 bitbucket 管道以连接到 AWS

转载 作者:行者123 更新时间:2023-12-01 06:02:11 25 4
gpt4 key购买 nike

我正在尝试设置 Bitbucket 管道以部署到 ECS,如下所示:https://confluence.atlassian.com/bitbucket/deploy-to-amazon-ecs-892623902.html

这些说明说明了如何推送到 Docker 集线器,但我想将镜像推送到 Amazon 的镜像存储库。我已经在我的 Bitbucket 参数列表中设置了 AWS_SECRET_ACCESS_KEY 和 AWS_ACCESS_KEY_ID,我可以在本地运行这些命令而没有问题(在 ~/.aws/credentials 中定义的键)。但是,我不断收到错误消息“没有基本身份验证凭据”。我想知道它是否没有以某种方式识别变量。这里的文档:http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html比如说:

AWS CLI 使用供应商链在多个不同位置查找 AWS 凭证,包括系统或用户环境变量和本地 AWS 配置文件。所以我不确定为什么它不起作用。我的 bitbucket 管道配置是这样的(我没有包含任何不必要的东西):

      - export IMAGE_NAME=$AWS_REPO_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/my/repo-name:$BITBUCKET_COMMIT
# build the Docker image (this will use the Dockerfile in the root of the repo)
- docker build -t $IMAGE_NAME .
# authenticate with the AWS repo (this gets and runs the docker login command)
- eval $(aws ecr get-login --region $AWS_DEFAULT_REGION)
# push the new Docker image to the repo
- docker push $IMAGE_NAME

有没有办法指定要使用的 aws ecr get-login 的凭据?我什至试过这个,但它不起作用:
      - mkdir -p ~/.aws
- echo -e "[default]\n" > ~/.aws/credentials
- echo -e "aws_access_key_id = $AWS_ACCESS_KEY_ID\n" >> ~/.aws/credentials
- echo -e "aws_secret_access_key = $AWS_SECRET_ACCESS_KEY\n" >> ~/.aws/credentials

谢谢

最佳答案

尝试这个:

bitbucket-pipeline.yml

pipelines:
custom:
example-image-builder:
- step:
image: python:3
script:
- export CLONE_ROOT=${BITBUCKET_CLONE_DIR}/../example
- export IMAGE_LOCATION=<ENTER IMAGE LOCATION HERE>
- export BUILD_CONTEXT=${BITBUCKET_CLONE_DIR}/build/example-image-builder/dockerfile
- pip install awscli
- aws s3 cp s3://example-deployment-bucket/deploy-keys/bitbucket-read-key .
- chmod 0400 bitbucket-read-key
- ssh-agent bash -c 'ssh-add bitbucket-read-key; git clone --depth 1 git@bitbucket.org:example.git -b master ${CLONE_ROOT}'
- cp ${CLONE_ROOT}/requirements.txt ${BUILD_CONTEXT}/requirements.txt
- eval $(aws ecr get-login --region us-east-1 --no-include-email)
- docker build --no-cache --file=${BUILD_CONTEXT}/dockerfile --build-arg AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} --build-arg AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} --tag=${IMAGE_LOCATION} ${BUILD_CONTEXT}
- docker push ${IMAGE_LOCATION}

options:
docker: true

dockerfile
FROM python:3
MAINTAINER Me <me@me.me>
COPY requirements.txt requirements.txt
ENV DEBIAN_FRONTEND noninteractive
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
RUN apt-get update && apt-get -y install stuff
ENTRYPOINT ["/bin/bash"]

我的时间不多了,所以现在我不仅仅包含了你问题的答案。但这将是一个足够好的模板来工作。如果有任何您不明白的行,请在评论中提出问题,我将编辑答案。

关于amazon-web-services - 使用 Docker 配置 bitbucket 管道以连接到 AWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com