Я хочу создавать и развертывать образы Docker из Azure DevOps в AWS ECR.
Я следовал этому руководству - https://www.devguides.dev/how-to-build-and-deploy-docker-images-from-azure-devops-to-aws-ecr/
Я получаю следующую ошибку: An error occurred (InvalidSignatureException) when calling the GetAuthorizationToken operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
Я вручную проверил и запустил команду aws ecr-get-login-password локально, используя тот же ключ доступа и секрет AWS, и она возвращает временный пароль, поэтому я знаю, что разрешения и ключи верны.
Я убедился, что правильно установил переменные и что они считываются, распечатав их для просмотра в оболочке Azure bash - они были правильными.
Какие-либо предложения?
Нужно ли мне предоставлять данные для входа в AWS где-нибудь еще в Azure?
Ниже приведен yaml сборки конвейера:
trigger:
branches:
include:
- build-and-push-azure-to-aws
pool:
vmImage: 'ubuntu-latest'
variables:
- group: dev
- name: DOCKER_REPOSITORY
value: $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/$(DOCKER_REPOSITORY_NAME)
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
Dockerfile: Dockerfile
tags: |
latest
Вот ошибка, которую я получаю:
==============================================================================
Task : Command line
Description : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version : 2.164.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
Generating script.
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /home/vsts/work/_temp/043d91c2-1246-45f3-909b-6594561cfbf1.sh
An error occurred (InvalidSignatureException) when calling the GetAuthorizationToken operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
- script: aws ecr get-login-password --region $(AWS_REGION)
в своем конвейере, каков будет результат? Кроме того, вы можете указать учетные данные с помощью конечной точки сервиса (типа AWS) и использовать AWS CLI, задачи сценария AWS Shell для выполнения команды в AWS. - person Cece Dong - MSFT   schedule 20.07.2020