【问题标题】:AWS ECR push fails on Azure Devops due to authentication由于身份验证,AWS ECR 推送在 Azure Devops 上失败
【发布时间】:2020-11-26 11:18:10
【问题描述】:

我正在为 CI/CD 使用 Azure DevOps 管道。我正在尝试 Dockerize 并将我的 docker 映像推送到 AWS ECR。我已经在 Azure Devops 上添加了 Docker Registry(并且可以访问所有管道),我创建并使用了带有 AdministrativeAccess 的 IAM 用户,并向 Azure Devops 添加了凭据。但是,在我的 Docker Push 任务中,我收到了 unauthorized: authentication required 错误并且我的工作失败了。 这是我的推送任务

          - task: Docker@2
            displayName: "PUSH IMAGE TO AWS"
            inputs:
              containerRegistry: AWS
              repository: $(DOCKER_REPOSITORY_NAME)
              command: push
            enabled: true

【问题讨论】:

  • 您好,您有机会查看以下解决方案吗?进展如何?
  • 好的,非常感谢。正如你所说,我已经弄清楚添加新任务,而不是使用 Docker 推送任务,而是使用 Amazon ECR 推送任务

标签: amazon-web-services azure docker azure-devops amazon-ecr


【解决方案1】:

IAM 用户不能用于直接登录 AWS ECR。您将需要使用 AWS.AccessKeyIDAWS.SecretAccessKey 获取 Docker 身份验证令牌以登录 AWS ECR。见this document

将 docker 镜像推送到 AWS ECR 有两种解决方法。

1,如果您像您所做的那样在 azure 管道中使用 Docker 任务。您将需要添加一个脚本任务来获取身份验证令牌并首先登录 AWS ECR。见下文:

steps:
- script: |
    aws ecr get-login-password --region $(AWS_REGION) | docker login --username AWS --password-stdin $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com
  displayName: 'Login to AWS'
  env:
    AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
    AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)

- task: Docker@2
  displayName: Build docker image
  inputs:
    repository: $(DOCKER_REPOSITORY)
    command: buildAndPush

详细步骤请查看this blog

2,更方便的解决方法是使用AWS Toolkit for Azure DevOpsAmazon ECR Push 任务)。此任务将自动获取身份验证令牌并登录 docker 客户端。因此,在您构建映像后,您可以使用此任务将其推送到 Amazon ECR。

要使用 Amazon ECR 推送任务,您需要创建一个服务连接(AWS 类型)。

请参阅this thread 了解更多信息。

【讨论】:

  • 最后我使用了 Amazon ECR Push 任务
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 2020-04-30
  • 2017-01-03
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多