Come posso risolvere l'errore "CannotPullContainerError" nella mia attività con tipo di avvio EC2 in Amazon ECS?

5 minuti di lettura
0

Quando avvio un'attività EC2 in Amazon Elastic Container Service (Amazon ECS), si verifica il seguente errore: "CannotPullContainerError".

Breve descrizione

L'erroreCannotPullContainerError si verifica a causa di uno dei seguenti problemi:

  • Un'attività con tipo di avvio Amazon Elastic Compute Cloud (Amazon EC2) non è in grado di estrarre l'immagine a causa di una rete configurata in modo errato.
  • Un ruolo in AWS Identity and Access Management (IAM) non dispone delle autorizzazioni necessarie per estrarre o inviare l'immagine.
  • Esiste un limite di frequenza di DockerHub.
  • Il nome o il tag dell'immagine non esiste.

Per risolvere gli errori relativi alle attività Amazon ECS che non si avviano, usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart. Quindi, consulta i le procedure relative ai problemi pertinenti.

Risoluzione

Importante:

  • Usa il runbook AWSSupport-TroubleshootECSTaskFailedToStart nella stessa Regione AWS che contiene le risorse del tuo cluster ECS.
  • Quando si utilizza il runbook, è necessario usare l'ID dell'ultima attività non riuscita. Se l'attività non riuscita fa parte di un servizio Amazon ECS, utilizza l'ultima attività non riuscita nel servizio. L'attività non riuscita deve essere visibile in ECS:DescribeTasks durante l'automazione. Per impostazione predefinita, le attività ECS arrestate sono visibili per un’ora dopo il passaggio allo stato Arrestate. L'utilizzo dell'ID dell'ultima attività non riuscita impedisce che la pulizia dello stato dell'attività interrompa l'analisi durante l'automazione.

Per istruzioni su come avviare il runbook, consulta AWSSupport-TroubleshootECSTaskFailedToStart. In base all'output dell'automazione, utilizza una delle seguenti procedure manuali per risolvere i problemi.

La configurazione di rete dell'istanza di container Amazon ECS non è corretta

Se l’istanza di container Amazon ECS non dispone di una connessione Internet, non può raggiungere l'endpoint Amazon Elastic Container Registry (Amazon ECR). Senza una connessione all'endpoint, l'istanza non può estrarre l'immagine. Per verificare che l'istanza di container ECS abbia accesso a Internet, esegui i seguenti controlli:

Il tuo ruolo IAM non dispone delle autorizzazioni necessarie per estrarre immagini

Verifica che il ruolo IAM dell'istanza associato al profilo dell'istanza disponga delle autorizzazioni per accedere al repository Amazon ECR.

Nota: la policy gestita da AWS AmazonEC2ContainerRegistryReadOnly fornisce le autorizzazioni minime necessarie per estrarre immagini.

È stato raggiunto il limite di pull rate di DockerHub

Se stai cercando di estrarre un'immagine da DockerHub e hai raggiunto il limite di pull rate, verrà visualizzato il seguente messaggio di errore:

"CannotPullContainerError: inspect image has been retried 5 time(s): httpReaderSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Too Many Requests - Server message: toomanyrequests:"

Per risolvere questo problema, consulta la procedura descritta in How do I resolve the error "CannotPullContainerError: You have reached your pull rate limit" in Amazon ECS?

Il nome o il tag dell'immagine non esiste

Se un'immagine o il relativo tag in Amazon ECR specificato nella definizione dell'attività non esiste, si verifica il seguente errore:

"Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: not found**"

Per risolvere questo problema, verifica il campo immagine nella definizione dell'attività. Verifica che il repository corrispondente e il tag definito siano presenti nel registro del container da cui stai effettuando l’estrazione.

Se l’attività estrae un'immagine da un registro diverso da Amazon ECR e non contiene informazioni, si verificherà un errore diverso. L'errore seguente si verifica se l'immagine non esiste, il tag non esiste o non vengono fornite le credenziali del registro:

"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"

Per risolvere questo problema, controlla il campo immagine nella definizione dell'attività. Verifica che l'immagine esista nel registro del container corrispondente. Se l'immagine esiste, assicurati di fornire le credenziali corrette. Per ulteriori informazioni, consulta Private registry authentication for tasks.