J'ai une image de menu fixe personnalisée téléchargée sur ECS. J'ai ouvert les autorisations pour essayer de résoudre ce problème (je le verrouillerai une fois que je pourrai le faire fonctionner). J'essaye de déployer l'image de docker sur un haricot élastique. J'ai un environnement de beanstalk élastique activé par docker mis en place. Selon la documentation AWS, si je récupère mon image dans AWS, je n'ai pas besoin de transmettre les informations d'identification. Je télécharge donc mon fichier Dockerrun.aws.json et tente de l'installer. Il échoue avec l'erreur:
La commande a échoué sur l'instance. Code de retour: 1 Sortie: Échec de l'authentification auprès de la caisse enregistreuse électronique pour le registre '434875166128' dans 'us-east-1'. Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh a échoué. Pour plus de détails, consultez /var/log/eb-activity.log à l'aide de la console ou de l'interface de ligne de commande EB.
Les informations /var/log/eb-activity.log ne contiennent rien d’utile.
Voici mon fichier Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "{id000xxxx}.dkr.ecr.us-east-1.amazonaws.com/my-repo:1.0.0",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "4000"
}
],
"Logging": "/var/log/app-name"
}
J'ai également essayé d'ajouter l'authentification avec le fichier dockercfg.json dans S3. Cela n'a pas fonctionné pour moi non plus.
Notez que j'utilise un compte professionnel au lieu d'un compte personnel. Il est donc possible que certains écarts soient également inconnus.
Merci!
Mise à jour: Mon utilisateur dispose également d'autorisations complètes. Par conséquent, rien ne devrait empêcher les autorisations.
J'avais le même problème.
Solution: Dans AWS -> IAM -> Roles - >
, choisissez le rôle que votre beanstalk utilise.
Dans mon cas, il était réglé sur aws-elasticbeanstalk-ec2-role
Sous Autorisations pour le rôle, attachez une stratégie: AmazonEC2ContainerRegistryReadOnly
Dans ECR, il n'est pas nécessaire d'accorder d'autorisations à ce rôle.
Vous pouvez initialiser les rôles de service nécessaires pour le haricot élastique (aws-elasticbeanstalk-ec2-role, aws-elasticbeanstalk-service-role, AWSServiceRoleForECS) en utilisant la console new de Elastic Beanstalk. Vous devez le faire une seule fois sur chaque compte AWS:
J'ai corrigé le message "Echec de la commande sur l'instance. Code de retour: 1 Sortie: Échec de l'authentification auprès d'ECR pour le registre" et une autre erreur étrange ("L'ID de clé d'accès AWS que vous avez fourni n'existe pas dans nos enregistrements. (ElasticBeanstalk :: ManifestDownloadError)." ") en utilisant la console NEW. J'ai toujours eu cette erreur avec l'ancien.