由于身份验证,AWS ECR 推送在 Azure Devops 上失败
AWS ECR push fails on Azure Devops due to authentication
我正在为 CI/CD 使用 Azure DevOps 管道。我正在尝试 Dockerize 并将我的 docker 图像推送到 AWS ECR。我已经在 Azure Devops 上添加了 Docker Registry(并且可以访问所有管道),我创建并使用了具有 AdministrativeAccess 的 IAM 用户,并向 Azure Devops 添加了凭据。然而,在我的 Docker 推送任务中,我收到 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。参见 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 DevOps (Amazon ECR Push任务)。此任务将获取身份验证令牌并自动登录 docker 客户端。因此,在构建镜像后,您可以使用此任务将其推送到 Amazon ECR。
要使用 Amazon ECR 推送任务,您需要创建服务连接(AWS 类型)。
有关详细信息,请参阅 。
我正在为 CI/CD 使用 Azure DevOps 管道。我正在尝试 Dockerize 并将我的 docker 图像推送到 AWS ECR。我已经在 Azure Devops 上添加了 Docker Registry(并且可以访问所有管道),我创建并使用了具有 AdministrativeAccess 的 IAM 用户,并向 Azure Devops 添加了凭据。然而,在我的 Docker 推送任务中,我收到 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。参见 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 DevOps (Amazon ECR Push任务)。此任务将获取身份验证令牌并自动登录 docker 客户端。因此,在构建镜像后,您可以使用此任务将其推送到 Amazon ECR。
要使用 Amazon ECR 推送任务,您需要创建服务连接(AWS 类型)。
有关详细信息,请参阅