¿Cómo puedo resolver el error «CannotPullContainerError» en mi tarea de tipo de lanzamiento de Amazon EC2?

5 minutos de lectura
0

Cuando lanzo una tarea de EC2 en Amazon Elastic Container Service (Amazon ECS), recibo el siguiente error: «CannotPullContainerError».

Descripción breve

El error CannotPullContainerError se produce debido a alguno de los siguientes problemas:

  • Una tarea del tipo de lanzamiento de Amazon Elastic Compute Cloud (Amazon EC2) no puede extraer la imagen debido a un error de configuración de la red.
  • Un rol de AWS Identity and Access Management (IAM) no tiene los permisos adecuados para extraer imágenes.
  • Hay un límite de velocidad en DockerHub.
  • El nombre o la etiqueta de la imagen no existen.

Para solucionar los errores de tareas de Amazon ECS que no se inician, use el runbook AWSSupport-TroubleshootECSTaskFailedToStart. A continuación, consulte los pasos de solución de problemas correspondientes a su problema.

Resolución

Importante:

  • Use el runbook AWSSupport-TroubleshootECSTaskFailedToStart en la misma región de AWS en la que se encuentran los recursos del clúster de ECS.
  • Cuando use el runbook, debe usar el ID de la tarea fallida más reciente. Si la tarea fallida forma parte de un servicio de Amazon ECS, use la tarea fallida más reciente del servicio. La tarea fallida debe estar visible en ECS:DescribeTasks durante la automatización. De forma predeterminada, las tareas de ECS detenidas están visibles durante 1 hora después de entrar en el estado Detenido. El uso del identificador de tarea fallida más reciente evita que la limpieza del estado de la tarea interrumpa el análisis durante la automatización.

Para obtener instrucciones sobre cómo iniciar el runbook, consulte AWSSupport-TroubleshootECSTaskFailedToStart. Dependiendo del resultado de la automatización, use uno de los siguientes pasos manuales de solución de problemas.

La configuración de red de su instancia de contenedor de Amazon ECS es incorrecta

Si su instancia de contenedor de Amazon ECS no tiene conexión a Internet, no podrá llegar al punto de conexión de Amazon Elastic Container Registry (Amazon ECR). Sin una conexión al punto de conexión, la instancia no podrá extraer la imagen. Para comprobar que la instancia de contenedor de ECS tiene acceso a Internet, revise los siguientes puntos:

Su rol de IAM no tiene los permisos adecuados para extraer imágenes

Confirme que el rol de IAM de la instancia asociado al perfil de instancia tenga permisos para acceder al repositorio de Amazon ECR.

Nota: La política administrada de AWS AmazonEC2ContainerRegistryReadOnly proporciona los permisos mínimos necesarios para extraer imágenes.

Se alcanza el límite de velocidad de extracción de DockerHub

Si está intentando extraer una imagen de DockerHub y ha alcanzado el límite de velocidad de extracción, recibirá el mensaje de error siguiente:

«CannotPullContainerError: la inspección de la imagen se ha vuelto a intentar 5 veces: httpReaderSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Demasiadas solicitudes: mensaje del servidor: toomanyrequests:»

Para resolver este problema, consulte los pasos que se indican en ¿Cómo puedo resolver el error «CannotPullContainerError: Ha alcanzado su límite de velocidad de extracción» en Amazon ECS?

El nombre o la etiqueta de la imagen no existen

Si una imagen o su etiqueta asociada alojada en Amazon ECR definida en su definición de tarea no existe, recibirá el error siguiente:

«Cannotpullcontainererror: se ha vuelto a intentar extraer el manifiesto de la imagen 1 vez: no se pudo resolver la referencia 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: not found**»

Para resolver este problema, compruebe el campo de imagen en la definición de la tarea. Confirme que el repositorio correspondiente y la etiqueta definida estén presentes en el registro de contenedores del que se va a realizar la extracción.

Si la tarea extrae una imagen de un registro distinto de Amazon ECR y le falta información, recibirá otro error distinto. Si la imagen no existe, la etiqueta no existe o no se proporcionan las credenciales del registro, se mostrará el error siguiente:

«Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref docker.io/library/invalid-name:non-existenttag: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed»

Para resolver este problema, verifique el campo de imagen en la definición de la tarea. Confirme que la imagen existe en el registro de contenedores correspondiente. Si la imagen existe, asegúrese de proporcionar las credenciales correctas. Para obtener más información, consulte Autenticación de registros privados para tareas.