Come posso risolvere l'errore "CannotPullContainerError" nella mia attività con tipo di avvio EC2 in Amazon ECS?
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:
- Verifica che le tue istanze abbiano accesso a Internet tramite un gateway Internet o ungateway Network Address Translation (NAT).
Nota: anziché un gateway NAT, è possibile utilizzare AWS PrivateLink. Per evitare errori, assicurati che AWS PrivateLink sia configurato correttamente. - Verifica che l'accesso HTTPS in entrata sia consentito tramite la porta 443 a livello di istanza, gruppo di sicurezza e lista di controllo degli accessi alla rete (ACL di rete).
Per risolvere i problemi di connettività del gateway NAT, consulta Why can't my Amazon EC2 instance in a private subnet connect to the internet using a NAT gateway?
Per risolvere i problemi di connettività del gateway Internet, consulta Why can't my Amazon EC2 instance connect to the internet using an internet gateway? - Se utilizzi un endpoint VPC per connetterti a un endpoint Amazon ECR, controlla i tuoi gruppi di sicurezza. Verifica che l'istanza di container ECS possa utilizzare i gruppi di sicurezza del tuo endpoint VPC.
- Se viene visualizzato il messaggio di errore “CannotPullContainerError: API error”, consulta How can I resolve the Amazon ECR error "CannotPullContainerError: API error” in Amazon ECS?
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.
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa