【问题标题】:AWS CodePipeline Docker push command returns 'no basic auth credentials'AWS CodePipeline Docker 推送命令返回“无基本身份验证凭证”
【发布时间】:2022-11-30 18:57:58
【问题描述】:

我正在使用 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 的截图:

【问题讨论】:

  • 顺便说一句,当我在本地环境中执行所有步骤时,我不会收到此错误。当我尝试通过 CodeBuild 执行此操作时,它给了我这个错误。

标签: amazon-web-services amazon-ecs aws-codepipeline aws-codebuild amazon-ecr


【解决方案1】:

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

你应该尝试使用reference link中提到的版本0.2

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

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2018-11-26
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多