J'essaie de pousser une image docker dans un registre Amazon ECR. J'utilise le client docker Docker version 1.9.1, build a34a1d5
. J'utilise aws ecr get-login --region us-east-1
pour obtenir les crédits de connexion docker. Ensuite, je me connecte avec succès avec ces crédits comme suit:
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
Mais lorsque j'essaye de pousser mon image, j'obtiens l'erreur suivante:
$ 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
Je me suis assuré que l'utilisateur aws avait les autorisations appropriées. Je me suis également assuré que le référentiel permettait à cet utilisateur d'y accéder. Juste pour m'assurer que ce n'était pas un problème, j'ai configuré le registre pour permettre à tous les utilisateurs un accès complet. Rien ne change l' "no basic auth credentials"
erreur. Je ne sais pas comment commencer à déboguer cela car tout le trafic est crypté.
METTRE À JOUR
J'ai donc eu un peu d'Homer Simpson D'Oh au moment où j'ai réalisé la cause profonde de mon problème. J'ai accès à plusieurs comptes AWS. Même si j'utilisais aws configure
pour définir mes informations d'identification pour le compte sur lequel j'avais configuré mon référentiel, aws cli utilisait en fait les variables d'environnement AWS_ACCESS_KEY_ID
et AWS_SECRET_ACCESS_KEY
. Donc, quand je l'ai fait, aws ecr get-login
cela retournait un identifiant pour le mauvais compte. Je n'ai pas remarqué que les numéros de compte étaient différents jusqu'à ce que je revienne maintenant pour essayer certaines des réponses proposées. Lorsque je supprime les variables d'environnement, tout fonctionne correctement. Je suppose que la devise de l'histoire est que si vous rencontrez cette erreur, assurez-vous que le référentiel auquel vous vous connectez correspond à la balise que vous avez appliquée à l'image.