amazon-web-services - fargate - docker aws
Implementación de AWS Docker (2)
Estaba teniendo el mismo problema.
Solución: En AWS -> IAM -> Roles - >
elija el rol que está usando su beanstalk.
En mi caso, se configuró para aws-elasticbeanstalk-ec2-role
Bajo Permisos para el rol, adjunte la política: AmazonEC2ContainerRegistryReadOnly
En la ECR no es necesario otorgar ningún permiso para este rol.
Tengo una imagen acoplable personalizada cargada en ECS. Abrí los permisos para intentar solucionar este problema (lo bloquearé nuevamente una vez que pueda hacer que esto funcione). Estoy intentando desplegar la imagen de la ventana acoplable al beanstalk elástico. Tengo una ventana acoplable habilitada para el entorno beanstalk. De acuerdo con los documentos de AWS, si estoy extrayendo mi imagen dentro de AWS, no necesito pasar las credenciales. Así que subo mi archivo Dockerrun.aws.json e intento instalarlo. Falla con el error:
El comando falló en la instancia. Código de retorno: 1 Salida: No se pudo autenticar con la ECR para el registro ''434875166128'' en ''us-east-1''. Falló el enganche /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh. Para obtener más detalles, consulte /var/log/eb-activity.log mediante la consola o EB CLI.
La información /var/log/eb-activity.log no tiene nada de útil.
Aquí está mi archivo 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"
}
También he intentado agregar la autenticación con el archivo dockercfg.json en S3. Tampoco me funcionó.
Tenga en cuenta que estoy usando una cuenta comercial en lugar de una cuenta personal, por lo que también puede haber algunas variaciones desconocidas.
¡Gracias!
Actualización: mi usuario también tiene permisos completos en este momento, por lo que no debería haber ningún tipo de permiso que interfiera.
Puede inicializar las funciones de servicio necesarias para el beanstalk elástico (aws-elasticbeanstalk-ec2-role, aws-elasticbeanstalk-service-role, AWSServiceRoleForECS) utilizando la nueva consola de Elastic Beanstalk. Debe hacer esto solo una vez en cada cuenta de AWS:
- Ve a la consola elástica de beanstalk.
- Acepte el "nuevo diseño": en la parte superior de la consola, si ve un mensaje "estamos probando un nuevo diseño", opte por aceptar utilizar la nueva versión de la consola. Advertencia, parece que no se puede retroceder a la vieja consola.
- Inicie el asistente Crear nueva aplicación y use una aplicación de ejemplo predeterminada en la tecnología.
- Complete todos los pasos del asistente hasta la reanudación y observe el panel de seguridad: verá los dos roles "aws-elasticbeanstalk-ec2-role" y "aws-elasticbeanstalk-service-role". Y finalice el asistente para crear la aplicación de muestra.
- Después de un tiempo, la aplicación debería estar ejecutándose.
- En caso de emergencia, vaya a la consola de IAM y elimine las funciones aws-elasticbeanstalk-ec2-role y aws-elasticbeanstalk-service-role y ejecute el asistente nuevamente.
Solucioné el "Comando que falló en la instancia. Código de retorno: 1 Salida: No se pudo autenticar con ECR para el registro" y otro error extraño ("El Id. De la clave de acceso de AWS que proporcionó no existe en nuestros registros. (ElasticBeanstalk :: ManifestDownloadError) ") mediante el uso de la nueva consola. Todavía tenía este error con el anterior.