Come posso risolvere gli errori "CannotPullContainerError" quando avvio un'attività EC2 in Amazon ECS?
Quando avvio un'attività Amazon Elastic Compute Cloud (Amazon EC2) in Amazon Elastic Container Service (Amazon ECS), ricevo un errore "CannotPullContainerError".
Breve descrizione
L'errore CannotPullContainerError si verifica per i seguenti motivi:
- Un'attività con tipo avvio Amazon EC2 non può estrarre l'immagine perché hai configurato la rete in modo errato.
- Un ruolo AWS Identity and Access Management (AWS IAM) non ha le autorizzazioni per estrarre l'immagine.
- Hai raggiunto la quota di pull rate di DockerHub.
- Il nome o il tag dell'immagine non esiste.
- La definizione dell'attività fa riferimento a un'immagine che si trova in un account AWS diverso.
- Il file system è pieno.
Risoluzione
Utilizza il runbook AWSSupport-TroubleshootECSTaskFailedToStart per risolvere i problemi
Utilizza il runbook AWSSupport-TroubleshootECSTaskFailedToStart per risolvere i problemi delle attività Amazon ECS che non si avviano. Quando esegui il runbook, devi 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 del servizio. L'attività non riuscita deve essere visibile in ECS:DescribeTasks durante l'automazione. Per impostazione predefinita, le attività Amazon ECS sono visibili per 1 ora dopo essere entrate nello stato Arrestata.
Per avviare il runbook, consulta AWSSupport-TroubleshootECSTaskFailedToStart. In base all'output dell'automazione, utilizza una delle seguenti risoluzioni.
Importante: utilizza il runbook AWSSupport-TroubleshootECSTaskFailedToStart nella stessa Regione AWS in cui si trovano le risorse del cluster Amazon ECS.
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 di 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 Amazon ECS abbia accesso a Internet, intraprendi le seguenti azioni:
- Verifica che le istanze abbiano accesso a Internet tramite un gateway Internet o un gateway NAT. Per risolvere i problemi di connettività del gateway NAT, consulta Perché non posso usare NAT per connettere la mia istanza EC2 in una sottorete privata a Internet?
Nota: anziché un gateway NAT, puoi utilizzare AWS PrivateLink. Per evitare errori, assicurati di configurare correttamente PrivateLink. - Verifica che a livello di istanza, gruppo di sicurezza e lista di controllo degli accessi alla rete (ACL) sia consentito l'accesso HTTPS in entrata tramite la porta 443. Per risolvere i problemi di connettività del gateway Internet, consulta Perché la mia istanza Amazon EC2 non può accedere a Internet tramite un gateway Internet?
- Se utilizzi un endpoint VPC (Virtual Private Cloud) per connetterti a un endpoint di Amazon ECR, controlla i gruppi di sicurezza dell'istanze di container Amazon ECS. Consenti all'istanza di container Amazon ECS di inviare traffico ai gruppi di sicurezza per l'endpoint VPC.
- Se ricevi il messaggio di errore CannotPullContainerError: API error, consulta Come posso risolvere i problemi relativi ad attività Amazon ECS che non riescono a estrarre immagini da Amazon ECR?
Il ruolo IAM non ha le autorizzazioni per estrarre immagini
Verifica che il ruolo IAM dell'istanza associato al profilo dell'istanza abbia le autorizzazioni per accedere al repository Amazon ECR.
Nota: la policy gestita da AWS AmazonEC2ContainerRegistryReadOnly fornisce le autorizzazioni minime necessarie per estrarre immagini.
Hai raggiunto la quota di pull rate di DockerHub
Se stai cercando di estrarre un'immagine da DockerHub e hai raggiunto la quota di pull rate, ricevi 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 il problema, consulta Come posso risolvere l'errore "CannotPullContainerError: You have reached your pull rate limit" in Amazon ECS?
Il nome o il tag dell'immagine non esiste
Se definisci un'immagine o un tag ospitato in Amazon ECR ma l'immagine o il tag non esiste, ricevi il seguente messaggio di 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 il problema, verifica che il campo immagine abbia il valore corretto nella definizione dell'attività. Verifica che il repository e il tag corrispondenti 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 verifica un errore diverso. L'errore seguente si verifica se l'immagine non esiste, il tag non esiste o non fornisci 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 il 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 Utilizzo di immagini di container non AWS in Amazon ECS.
L'immagine a cui si fa riferimento nella definizione dell'attività si trova in un account diverso
Se l'immagine si trova in un altro account, potresti ricevere il seguente messaggio di errore:
"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"
Per risolvere il problema, devi consentire l'azione ecr:batchGetImage nelle policy del repository nell'account in cui si trova l'immagine.
Ad esempio, l'istanza associata al cluster Amazon ECS si trova nell'Account A e la definizione dell'attività fa riferimento a un'immagine nell'Account B. Le policy del repository nell'Account B devono consentire ecr:batchGetImage per il ruolo IAM dell'istanza nell'Account A. Devi inoltre attivare l'autorizzazione multi-account nella policy del repository. Quindi verifica che l'istanza nell'Account A possa estrarre l'immagine dall'Account B. Per ulteriori informazioni, consulta Come posso consentire a un account secondario di inviare o estrarre immagini nei miei repository di immagini Amazon ECR?
Il file system è pieno
Se il file system è pieno, ricevi il seguente errore:
"CannotPullContainerError: write /var/lib/docker/tmp/GetImageBlob2923440728: no space left on device"
Per risolvere il problema, intraprendi le seguenti azioni:
- Argomenti
- End User ComputingContainers
- Lingua
- Italiano
Video correlati

