Salta al contenuto

Come posso assicurarmi che Amazon ECS utilizzi l'ultimo digest dell’immagine dell’istanza di container durante le distribuzioni?

4 minuti di lettura
0

Ho aggiornato il mio servizio Amazon Elastic Container Service (Amazon ECS) per eseguire attività con l'immagine più recente, ma alcune attività non utilizzano la nuova immagine. Oppure le mie attività Amazon ECS non vengono eseguite e ricevo l'errore CannotPullContainerError.

Breve descrizione

Quando aggiorni un'immagine in Amazon ECS, potresti ricevere il seguente messaggio di errore:

"CannotPullContainerError: pull image manifest has been retried 1 time(s): failed to resolve ref account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677: account-id.dkr.ecr.us-east-1.amazonaws.com/test:latest@sha256:1ed47f24455xxxxxxxxx677: not found"

Quando aggiorni un'immagine, è necessario aggiornare anche il servizio. Per impostazione predefinita, Amazon ECS risolve i tag dell’immagine del container specificati nella definizione dell'attività in digest dell’immagine del container.

Per un servizio che esegue e gestisce una singola attività, Amazon ECS utilizza l'attività per creare digest dell’immagine dei container dell’attività. Per un servizio che esegue e gestisce più attività, Amazon ECS utilizza la prima attività avviata dal pianificatore di servizi durante la distribuzione. Per aggiornare il digest dell'immagine quando aggiorni il tag dell'immagine nella definizione dell'attività, aggiorna il servizio e utilizza l'impostazione Forza una nuova distribuzione.

Per ulteriori informazioni sui comportamenti delle immagini, consulta Risoluzione dell'immagine del container.

Risoluzione

Nota: se ricevi errori durante l’esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Assicurati che il servizio utilizzi l'immagine più recente

Per assicurarti che il servizio utilizzi l'immagine più recente, aggiorna il servizio Amazon ECS, quindi utilizza l'opzione Forza una nuova distribuzione. In alternativa, esegui il seguente comando AWS CLI update-service:

aws ecs update-service --cluster clustername --service servicename --force-new-deployment

Nota: sostituisci clustername con il nome del tuo cluster e servicename con il nome del tuo servizio.

Per utilizzare un digest dell’immagine specifico, aggiorna la definizione dell'attività, quindi modifica la sezione URI dell'immagine:

imageUri@imagedigest

"image": "accountid.dkr.ecr.region-name.amazonaws.com/image:latest@sha256:da04638bxxxxxxxxxx,"

Risolvi l'errore "Image digest does not exist"

Se ricevi un messaggio di errore Image digest does not exist, controlla se hai eliminato l'immagine.

Per verificare se il digest dell’immagine esiste in un repository Amazon Elastic Container Registry (Amazon ECR), esegui il comando describe-images:

aws ecr describe-images --repository-name repositoryname --region regionname --query 'sort_by(imageDetails,& imagePushedAt)[*]'

Nota: sostituisci repositoryname con il nome del repository e regionname con la tua regione AWS.

L'output del comando mostra tutte le immagini nel repository. Se il digest dell'immagine non esiste, cerca nella cronologia degli eventi di AWS CloudTrail la chiamata API BatchDeleteImage al fine di determinare il motivo per cui l'immagine è stata eliminata. Per verificare se una policy del ciclo di vita di Amazon ECR può eliminare un'immagine utilizzata da un'attività in esecuzione, verifica in CloudTrail la chiamata API PolicyExecutionEvent.

Per assicurarti che un tag dell'immagine del container non cambi, è consigliabile attivare la funzione ](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-tag-mutability.html)Immutabilità tag[.

Nota: il tag dell'immagine del container non viene risolto nei servizi che utilizzano il controller di implementazione CODE_DEPLOY o EXTERNAL.

Per aggiornare il digest dell'immagine, completa i passaggi nella sezione Assicurati che il servizio utilizzi l'immagine più recente.

Disattiva la coerenza delle versioni

Potrebbe essere necessario utilizzare un tag dell’immagine del container modificabile, come ad esempio LATEST, invece di un'immagine coerente. Per configurare l'impostazione, aggiorna la definizione del container in modo da impostare versionConsistency su disabilitata. Per impostazione predefinita, versionConsistency è abilitata. Quando modifichi l’impostazione scegliendo disabilitata, Amazon ECS non risolve più il tag dell'immagine del container in un digest. Amazon ECS utilizza invece l'URI dell'immagine originale nella definizione del container per la distribuzione.

Informazioni correlate

Announcing software version consistency for Amazon ECS services (Annuncio della configurabilità della coerenza delle versioni software per i servizi Amazon ECS)

AWS UFFICIALEAggiornata un anno fa