繁体   English   中英

AWS CodePipeline Docker 推送命令返回“无基本身份验证凭证”

[英]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 的截图:

AWS Codebuild 错误图像

在 buildspec 版本 0.1 中, “CodeBuild 在构建环境中默认 shell 的单独实例中运行每个命令。这意味着每个命令都与所有其他命令隔离运行” 这就是为什么预构建阶段的 ecr 登录不会影响构建后阶段的原因

您应该尝试使用参考链接中提到的版本 0.2

您也可以尝试在构建后阶段运行 ecr login,我想它可能会起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM