Saltar al contenido

¿Cómo puedo solucionar los errores «CannotPullContainerError» cuando inicio una tarea de EC2 en Amazon ECS?

6 minutos de lectura
0

Cuando inicio una tarea de Amazon Elastic Compute Cloud (Amazon EC2) en Amazon Elastic Container Service (Amazon ECS), se muestra el error «CannotPullContainerError».

Descripción corta

El error CannotPullContainerError se produce por los siguientes motivos:

  • Una tarea de tipo inicio de Amazon EC2 no puede extraer la imagen porque configuró la red de forma incorrecta.
  • Un rol de AWS Identity and Access Management (IAM) no tiene permisos para extraer imágenes.
  • Ha alcanzado la cuota de velocidad de DockerHub.
  • El nombre o la etiqueta de la imagen no existen.
  • La definición de la tarea hace referencia a una imagen que se encuentra en otra cuenta de AWS.

Resolución

Uso del runbook AWSSupport-TroubleshootECSTaskFailedToStart para solucionar problemas

Para solucionar los problemas de las tareas de Amazon ECS que no se inician, utilice el runbook AWSSupport-TroubleshootECSTaskFailedToStart. Cuando ejecute 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 Amazon ECS están visibles durante 1 hora después de entrar en el estado Detenido.

Para iniciar el runbook, consulte AWSSupport-TroubleshootECSTaskFailedToStart. Según el resultado de la automatización, utilice una de las siguientes resoluciones.

Importante: Use el runbook AWSSupport-TroubleshootECSTaskFailedToStart en la misma región de AWS en la que se encuentran los recursos del clúster de Amazon ECS.

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 enlace de Amazon Elastic Container Registry (Amazon ECR). Sin una conexión al punto de enlace, la instancia no podrá extraer la imagen. Para comprobar que su instancia de contenedor de Amazon ECS tiene acceso a Internet, lleve a cabo las siguientes acciones:

Su rol de IAM no tiene permisos 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 la cuota 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 ¿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 define una imagen o etiqueta alojada en Amazon ECR pero la imagen o la etiqueta no existen, recibirá el siguiente mensaje de error:

«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 que el campo de imagen tenga el valor correcto en la definición de la tarea. Confirme que el repositorio correspondiente y la etiqueta existan 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 ha proporcionado 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 Uso de imágenes de contenedores que no sean de AWS en Amazon ECS.

La imagen a la que se hace referencia en la definición de la tarea está en otra cuenta

Si la imagen está en otra cuenta, es posible que se muestre el siguiente mensaje de error:

«Cannotpullcontainererror: pull access denied for 123456789***.dkr.ecr.us-east-1.amazonaws.com/image-name:tag, repository does not exist or may require 'docker login': denied: User: arn:aws:sts::012345678**:assumed-role/role-name/ec2 instance id is not authorized to perform: ecr:BatchGetImage on resource: arn:aws:ecr:us-east-1:123456789*:repository/image-name:tag because no resource-based policy allows the ecr:BatchGetImage action»

Para resolver este problema, debe permitir la acción ecr:batchGetImage en las políticas del repositorio de la cuenta en la que se encuentra la imagen.

Por ejemplo, la instancia asociada a su clúster de Amazon ECS está en la cuenta A y la definición de la tarea hace referencia a una imagen de la cuenta B. Las políticas de repositorio de la cuenta B deben permitir que ecr:batchGetImage ocupe el rol de IAM de la instancia en la cuenta A. También debe activar el permiso entre cuentas en la política de repositorios. A continuación, confirme que la instancia de la cuenta A puede extraer la imagen de la cuenta B. Para obtener más información, consulte ¿Cómo puedo permitir que una cuenta secundaria envíe o extraiga imágenes en mi repositorio de imágenes de Amazon ECR?