用Dockerconfigurationbitbucketstream水线连接到AWS

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

这些指令说如何推到Docker中心,但我想把图像推到亚马逊的图像回购。 我已经在我的Bitbucket参数列表中设置了AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID,并且我可以在本地运行这些命令而没有任何问题(在〜/ .aws / credentials中定义的键)。 但是,我不断收到错误“没有基本的身份validation凭据”。 我想知道如果它不以某种方式识别variables。 这里的文档: http : //docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html说:

AWS CLI使用提供程序链来查找许多不同位置的AWS凭证,包括系统或用户环境variables以及本地AWSconfiguration文件。 所以我不知道为什么它不工作。 我的bitbucketstream水线configuration是这样(我没有包括任何不必要的东西):

- 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 

谢谢

尝试这个:

到位桶,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"] 

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

我遇到过同样的问题。 错误主要是由于旧版本的awscli。 你需要使用更新的awscli的docker镜像。 对于我的项目我使用linkmobility / maven-awscli

  1. 您需要在Bitbucket中设置Environnmentvariables

  2. 你的pipe道的小改动

图片:Docker-Image-With-awscli

  • eval $(aws ecr get-login –no-include-email –region $ {AWS_DEFAULT_REGION})