[英]AWS CodePipeline Docker push command returns 'no basic auth credentials'
我正在使用 CodePipeline 将我的图像推送到 ECR,它从 GitHub 获取存储库,并在将其推送到 ECR 之前尝试构建它。 我想出了如何通过aws ecr get-login-password
命令登录 AWS ECR。 但主要问题是,在 post_build 阶段,当我尝试运行命令 docker push 时。 它返回给我的错误是:没有基本的身份验证凭据
我的 buildspec.yml 文件:
phases:
install:
runtime-versions:
nodejs: 16
pre_build:
commands:
- echo Installing Dependencies
- npm install
- docker logout
- aws ecr get-login-password || docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
build:
commands:
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
post_build:
commands:
- echo Pushing the docker image
- docker -v
- aws --version
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
- printf '[{"name":"%s","imageUrl":"%s"}]' $CONTAINER_NAME $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json
artifacts:
files: imagedefinitions.json
来自 AWS Codebuild 的截图:
在 buildspec 版本 0.1 中, “CodeBuild 在构建环境中默认 shell 的单独实例中运行每个命令。这意味着每个命令都与所有其他命令隔离运行” 。 这就是为什么预构建阶段的 ecr 登录不会影响构建后阶段的原因
您应该尝试使用参考链接中提到的版本 0.2
您也可以尝试在构建后阶段运行 ecr login,我想它可能会起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.