我将 Azure DevOps 管道用于 CI/CD。我正在尝试 Dockerize 并将我的 docker 映像推送到 AWS ECR。我已经在 Azure Devops 上添加了 Docker Registry(并且可以访问所有管道),我创建并使用了 IAM 用户和 AdministrativeAccess,并向 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
IAM 用户不能用于直接登录 AWS ECR。您将需要使用AWS.AccessKeyID
和AWS.SecretAccessKey
获取 Docker 身份验证令牌以登录 AWS ECR。请参阅此文档。
将 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
请查看此博客中的详细步骤。
2、更方便的解决方法是使用AWS Toolkit for Azure DevOps(Amazon ECR Push任务)。此任务将自动获取身份验证令牌并登录 docker 客户端。因此,在构建映像后,您可以使用此任务将其推送到 Amazon ECR。
要使用 Amazon ECR 推送任务,您需要创建一个服务连接(AWS类型)。
有关更多信息,请参阅此线程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句