Ошибка извлечения Docker AWS ECR неавторизован: требуется аутентификация

Я вошел в репозиторий AWS ECR и запустил команду pull, но выдал эту ошибку

# $(aws ecr get-login --no-include-email)
Login Succeeded

# docker pull 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1                                        
Pulling repository 432354543235.dkr.ecr.us-east-1.amazonaws.com/abc-example:1.1.1
unauthorized: authentication required

person user3847894    schedule 06.05.2018    source источник
comment
Я бы проверил регион, используемый для получения токена, и посмотрел, совпадает ли он с регионом репозитория.   -  person Qasim Sarfraz    schedule 06.05.2018
comment
@QasimSarfraz, да, я уже проверил это, и это соответствует региону.   -  person user3847894    schedule 06.05.2018
comment
Определены ли у вас какие-либо политики для репозитория? Или может быть что-то не так с $HOME/.docker/config.json?   -  person Qasim Sarfraz    schedule 06.05.2018
comment
После рекомендации Касима Сарфраза я удалил старую запись авторизации из $HOME/.docker/config.json, и это сработало. У меня была такая же проблема с вами, после того как ключи аутентификации команды входа в систему обновляются в config.json, но все еще там находятся некоторые старые записи.   -  person mustafa.yavuz    schedule 21.02.2019


Ответы (2)


У Amazon есть хорошо задокументированные способы использования интерфейса командной строки AWS. чтобы позволить докеру пройти аутентификацию в реестре Amazon ECR.

Однако get-login сейчас устарел. Вместо этого вам нужно будет использовать get-login-password.

Они отмечают в своей документации, что вы можете передать токен аутентификации команде входа в docker. Вам также потребуется указать URI реестра Amazon ECR, по которому вы хотите пройти аутентификацию.

Например

$ aws ecr get-login-password --region us-east-1 \
  | docker login --username AWS --password-stdin \
  123456789012.dkr.ecr.us-east-1.amazonaws.com

Затем я могу вытащить изображение в соответствии с registry/repository[:tag].

Реестр представляет собой комбинацию идентификатора вашей учетной записи и регионального ECR. конечная точка, например:

123456789012.dkr.ecr.us-east-1.amazonaws.com

Репозиторий — это название места для хранения изображений, например:

myrepo

Тег — это обычные метаданные изображения, например. : latest

Ниже приведен полный пример аутентификации и извлечения изображения:

$ aws ecr get-login-password --region ap-southeast-2 \
  | docker login --username AWS --password-stdin \
  123456789012.dkr.ecr.ap-southeast-2.amazonaws.com

$ docker pull 123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
latest: Pulling from myrepo
5bed26d33875: Pull complete
Digest: sha256:aabbccdd
Status: Downloaded newer image for 123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/myrepo:latest
person lantrix    schedule 06.04.2020

aws ecr get-login --no-include-email

Это печатает только команду входа в систему. Вам нужно выполнить команду входа в систему, возвращенную этим вызовом.

Попробуй это

eval $(aws ecr get-login --no-include-email)

person Anand    schedule 13.05.2018