New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Come posso risolvere i problemi relativi ad attività Amazon ECS che non riescono a estrarre immagini da Amazon ECR?
Non riesco a estrarre immagini da Amazon Elastic Container Registry (Amazon ECR) in un'attività Amazon Elastic Container Service (Amazon ECS). Oppure ricevo il messaggio "CannotPullContainerError: API error".
Breve descrizione
Potresti ricevere il messaggio CannotPullContainerError per i seguenti motivi:
- Utilizzi una sottorete privata senza accesso a Internet, quindi il tuo tipo di avvio non ha accesso all'endpoint Amazon ECR.
- La policy del repository Amazon ECR limita l'accesso alle immagini del repository.
- Il ruolo di esecuzione dell'attività o dell’istanza di Amazon ECS non dispone delle autorizzazioni corrette per estrarre immagini.
- L'URI dell'immagine richiesta non esiste.
- Sul disco non è disponibile spazio sufficiente per l'immagine.
- Hai superato la quota di pull rate.
- Manca un percorso di rete tra l'attività e l'endpoint Amazon ECR.
- Le tue credenziali Docker sono obsolete.
Risoluzione
Determina la causa del problema
Utilizza il runbook AWSSupport-TroubleshootECSTaskFailedToStart per determinare il problema. È necessario eseguire il runbook nella stessa regione AWS in cui si trovano le risorse del cluster Amazon ECS. Inoltre, utilizza l'ID dell'attività non riuscita più recente. 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à ECS interrotte sono visibili per 1 ora dopo il passaggio allo stato Interrotta.
In base all'output dell'automazione, utilizza una delle seguenti procedure manuali per la risoluzione dei problemi.
Assicurati che la tua sottorete privata abbia una route verso un gateway NAT o utilizza PrivateLink
Puoi utilizzare una sottorete privata per eseguire un'attività con un tipo di avvio Amazon Elastic Compute Cloud (Amazon EC2) o AWS Fargate. Per entrambi i tipi di avvio, assicurati che la sottorete privata abbia una route verso un gateway NAT nella tabella di routing. Configura il gateway NAT nel VPC per indirizzare le richieste a Internet.
Oppure utilizza AWS PrivateLink con gli endpoint VPC (Virtual Private Cloud) Amazon ECR e gli endpoint gateway Amazon Simple Storage Service (Amazon S3).
Il gruppo di sicurezza degli endpoint VPC deve consentire le connessioni in entrata sulla porta 443 dalla sottorete privata o dal VPC dell'attività Amazon ECS.
Nota: in Windows il valore ECS_IMAGE_PULL_INACTIVITY_TIMEOUT è impostato su un valore predefinito di 3 minuti. Se stai estraendo un'immagine di grandi dimensioni, l'estrazione dell'immagine potrebbe non essere completata in 3 minuti e la richiesta scade.
Controlla la policy del tuo repository Amazon ECR
Se la tua policy del repository Amazon ECR limita l'accesso alle immagini del repository, ricevi un errore 403 Forbidden. Controlla la policy del tuo repository Amazon ECR per assicurarti che non siano presenti restrizioni sulle immagini del repository. Per esempi di policy di accesso, consulta Esempi di policy relative ai repository privati in Amazon ECR.
Verifica le autorizzazioni del ruolo IAM di esecuzione dell'attività o dell'istanza di container
Se utilizzi il tipo di avvio Amazon EC2, assicurati che il ruolo AWS Identity and Access Management (IAM) dell'istanza di container disponga dell'autorizzazione per accedere al repository Amazon ECR. La policy AmazonEC2ContainerRegistryReadOnly fornisce le autorizzazioni minime richieste per estrarre immagini.
Se utilizzi il tipo di avvio Fargate, assicurati che la policy AmazonECSTaskExecutionRolePolicy sia collegata al ruolo di esecuzione dell'attività per estrarre un'immagine.
Assicurati di utilizzare l'URI dell'immagine corretto
Per accertarti che stai utilizzando il nome corretto dell'immagine nell'URI, controlla il parametro dell'immagine nella sezione delle definizioni dei container della definizione dell'attività.
Nota: per estrarre per tag, utilizza il seguente formato di nome dell'immagine: registry/repository[:tag]. Per estrarre per digest, utilizza il formato registry/repository[@digest] che puoi copiare direttamente dal repository Amazon ECR.
Controlla lo spazio su disco
Se non è disponibile abbastanza spazio su disco per memorizzare l'immagine estratta, viene visualizzato il messaggio di errore "CannotPullContainerError: no space left on device". Per risolvere il problema, consulta write /var/lib/docker/tmp/GetImageBlob111111111: no space left on device.
Verifica se hai superato la quota di pull rate
Se utilizzi Docker Hub per estrarre l'immagine e superi la quota di pull rate, ricevi il messaggio di errore "CannotPullContainerError: toomanyrequests: You have reached your pull rate limit". Per informazioni sulle quote di pull rate, consulta Pull rate limit sul sito web di Docker Docs. Per risolvere il problema, consulta ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.
Verifica la configurazione di rete
Se manca un percorso di rete tra l'attività e l'endpoint Amazon ECR, viene visualizzato un errore simile ai seguenti esempi:
"Cannotpullcontainererror: error response from daemon"
-oppure-
"Client.Timeout exceeded while awaiting headers"
Per risolvere il problema, controlla se la tua attività ha accesso al repository Amazon ECR tramite un gateway NAT o PrivateLink.
Quando crei un servizio Amazon ECS, configura le seguenti impostazioni in Rete:
- Per le attività nelle sottoreti pubbliche, in IP pubblico, attiva Assegna automaticamente IP pubblico.
- Per le attività nelle sottoreti private, disattiva Assegna automaticamente IP pubblico, quindi configura un gateway NAT o PrivateLink.
Aggiorna le credenziali di accesso Docker
Se le tue credenziali Docker non sono aggiornate, ricevi il messaggio di errore "repository does not exist or may require 'docker login'". Per aggiornare le credenziali di accesso Docker per l'autenticazione del repository privato, consulta Utilizzo di un token di autorizzazione.
Informazioni correlate

Contenuto pertinente
- AWS UFFICIALEAggiornata 9 mesi fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa