Estou tentando enviar uma imagem do docker para um registro do Amazon ECR. Estou usando o cliente docker Docker versão 1.9.1, build a34a1d5
. Eu uso aws ecr get-login --region us-east-1
para obter os creds de login do docker. Então eu logo com sucesso com esses creds da seguinte maneira:
docker login -u AWS -p XXXX -e none https://####.dkr.ecr.us-east-1.amazonaws.com
WARNING: login credentials saved in /Users/ar/.docker/config.json
Login Succeeded
Mas quando tento enviar minha imagem, recebo o seguinte erro:
$ docker push ####.dkr.ecr.us-east-1.amazonaws.com/image:latest
The push refers to a repository [####.dkr.ecr.us-east-1.amazonaws.com/image] (len: 1)
bcff5e7e3c7c: Preparing
Post https://####.dkr.ecr.us-east-1.amazonaws.com/v2/image/blobs/uploads/: no basic auth credentials
Verifiquei se o usuário do aws tinha as permissões corretas. Também assegurei-me de que o repositório permitisse que o usuário enviasse para ele. Apenas para garantir que não foi um problema, configurei o registro para permitir acesso total a todos os usuários. Nada muda o "no basic auth credentials"
erro. Não sei como começar a depurar isso, pois todo o tráfego é criptografado.
ATUALIZAR
Então, tive um momento do Homer Simpson D'Oh quando percebi a causa raiz do meu problema. Eu tenho acesso a várias contas da AWS. Embora eu estivesse usando aws configure
para definir minhas credenciais para a conta em que havia configurado meu repositório, o aws cli estava realmente usando as variáveis de ambiente AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
. Então, quando o fiz aws ecr get-login
, estava retornando um login para a conta errada. Não percebi que os números das contas eram diferentes até que voltei agora para tentar algumas das respostas propostas. Quando removo as variáveis de ambiente, tudo funciona corretamente. Eu acho que o lema da história é que, se você acertar esse erro, verifique se o repositório em que você está acessando corresponde à marca que você aplicou à imagem.