Salta al contenuto

Come posso risolvere i problemi relativi al controllo dell'integrità del container per le attività di Amazon ECS?

3 minuti di lettura
0

La mia attività Amazon Elastic Container Service (Amazon ECS) non supera il controllo dell'integrità del container.

Breve descrizione

Se ricevi il seguente errore, significa che i container Amazon ECS nell’attività utilizzano controlli dell'integrità che il servizio non supera:

"(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks."

Risoluzione

Nota: se ricevi errori quando esegui i 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.

Verifica localmente il container per assicurarti che superi il controllo dell'integrità

Prima di effettuare il provisioning del container in Amazon ECS, assicurati che funzioni come previsto. Verifica il container con HEALTHCHECK sul sito web Docker Docs. Verifica che il container superi il controllo dell'integrità definito nel Dockerfile. Quindi specifica la configurazione del controllo dell'integrità nella definizione dell'attività, per consentire all'agente container Amazon ECS di monitorare il controllo dell'integrità e generare il relativo report.

Nota: Amazon ECS non monitora i controlli dell'integrità di Docker incorporati nell'immagine di un container e non specificati nella definizione del container. I parametri di controllo dell'integrità specificati nella definizione di un container sostituiscono i controlli dell'integrità di Docker presenti nell'immagine del container.

Accertati di utilizzare la sintassi corretta per le attività Amazon ECS

Verifica che il comando che passi al container sia corretto e accertati di utilizzare la sintassi corretta per i comandi. Non separare il comando di controllo dell'integrità con virgolette doppie, ad esempio ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. Utilizza invece la seguente sintassi per il comando:

["CMD-SHELL", "healthcheck.sh || exit 1"]

Dai al container il tempo sufficiente per l'inizializzazione

Se il container richiede molto tempo per essere avviato, potrebbe non superare il controllo dell'integrità. Imposta startPeriod nel parametro di definizione avanzata del container in modo che soddisfi le specifiche esigenze di configurazione.

Per le attività in esecuzione da molto tempo, controlla i log dell'applicazione

Se il container è in esecuzione da molto tempo e non supera il controllo dell'integrità, controlla i log dell'applicazione. Se l'attività utilizza il driver di log awslogs, controlla i log dell'applicazione in Amazon CloudWatch.

Nota: AWS Fargate è un servizio gestito, per cui non puoi accedere all'infrastruttura sottostante. Per risolvere il problema nel caso di Fargate, avvia le attività Amazon ECS in Amazon Elastic Compute Cloud (Amazon EC2). Quindi utilizza SSH per connetterti alle istanze Amazon EC2. Puoi anche utilizzare ECS Exec per interagire direttamente con i container Amazon ECS.

Informazioni correlate

Come posso fare in modo che le mie attività Amazon ECS che utilizzano il tipo di avvio Amazon EC2 superino il controllo dell'integrità di Application Load Balancer?