Wie behebe ich Containerzustandsprüfungsfehler bei Amazon ECS-Aufgaben?

Letzte Aktualisierung: 2022-03-11

Meine Amazon Elastic Container Service (Amazon ECS)-Aufgabe hat die Containerzustandsprüfung nicht bestanden. Wie kann ich dies beheben?

Kurzbeschreibung

Wenn Sie den folgenden Fehler erhalten, verwenden die Amazon ECS-Container in Ihrer Aufgabe Zustandsprüfungen, die Ihr Service nicht bestehen kann:

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

Hinweis: Wenn Sie Probleme mit der Zustandsprüfung des Elastic Load Balancing (ELB) haben, lesen Sie Wie kann ich meine Amazon ECS-Aufgaben ausführen, um die Zustandsprüfung des Application Load Balancer in Amazon ECS zu bestehen?

Behebung

Probieren Sie die folgenden Tipps aus, um Fehler bei der Amazon ECS-Containerzustandsprüfung zu beheben:

  • Testen Sie den Container lokal, um sicherzustellen, dass er die Containerzustandsprüfungen besteht, bevor Sie ihn für Amazon ECS bereitstellen.
  • Bestätigen Sie, dass der Befehl, den Sie an den Container übergeben, korrekt ist und dass Sie die richtige Syntax für Ihre Amazon ECS-Aufgaben verwenden.
  • Stellen Sie sicher, dass Ihr Container ausreichend Zeit zum Instanziieren hat.
  • Wenn Ihre Amazon ECS-Aufgabe eine Weile ausgeführt wurde, überprüfen Sie Ihre Anwendungsprotokolle und Amazon CloudWatch Logs.

Testen Sie den Container vor Ort, um sicherzustellen, dass er die Containerzustandsprüfung besteht

Stellen Sie vor der Bereitstellung Ihres Containers für Amazon ECS sicher, dass Ihr Container wie erwartet funktionieren kann, und bestehen Sie die angegebene Containerzustandsprüfung. Sie können Ihren Container mit der Dockerfile HEALTHCHECK-Konfiguration auf der Docker-Website testen. Nachdem Ihr Container die in Dockerfile definierte Zustandsprüfung bestanden hat, können Sie die Konfiguration der Zustandsprüfung in der Aufgabendefinition angeben. Durch die Angabe der Zustandsprüfungskonfiguration kann der Amazon ECS-Container-Agent die angegebene Zustandsprüfung überwachen und melden.

Hinweis: Amazon ECS überwacht keine Docker-Zustandsprüfungen, die in ein Container-Image eingebettet sind und nicht in der Containerdefinition angegeben sind. In einer Containerdefinition angegebene Zustandsprüfungsparameter überschreiben alle Docker-Zustandsprüfungen, die im Container-Image vorhanden sind.

Bestätigen Sie, dass Sie die richtige Syntax für Ihre Amazon ECS-Aufgaben verwenden

Stellen Sie sicher, dass Sie die richtigen Befehle und die richtige Syntax für Ihre Amazon ECS-Aufgaben verwenden.

Wenn Sie beispielsweise das JSON-Bedienfeld der AWS-Managementkonsole, das AWS Command Line Interface (AWS CLI) oder APIs verwenden, schließen Sie die Liste der Befehle wie folgt in Klammern ein:

["CMD-SHELL", "curl -f http://localhost/ || exit 1"]

Wenn Sie die AWS-Managementkonsole verwenden, um Ihre ECS-Aufgabe zu bearbeiten, müssen Sie die Klammern nicht angeben:

"CMD-SHELL", "curl -f http://localhost/ || exit 1"

Stellen Sie außerdem sicher, dass Sie den Befehl zur Zustandsprüfung nicht durch doppelte Anführungszeichen wie ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"] trennen. Verwenden Sie stattdessen die folgende Befehlssyntax:

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

Stellen Sie sicher, dass Ihr Container genug Zeit zum Instanziieren hat

Wenn die Initiierung Ihres Containers eine Weile dauert, kann Ihr Container die Containerzustandsprüfung nicht bestehen. Versuchen Sie, startPeriod im erweiterten Containerdefinitionsparameter festzulegen. Dadurch hat Ihr Amazon ECS-Container genügend Zeit zum Bootstrapping, bevor fehlgeschlagene Zustandsprüfungen in der maximalen Anzahl von Wiederholungen enthalten sind.

Überprüfen Sie Ihre Anwendungsprotokolle und Amazon CloudWatch Logs, ob die Aufgabe schon eine Weile ausgeführt wurde

Wenn Ihr Amazon ECS-Container eine Weile läuft und die Containerzustandsprüfung nicht bestanden hat, überprüfen Sie Ihre Anwendungsprotokolle. Wenn Ihre Amazon ECS-Aufgabe den awslogs-Protokolltreiber verwendet, überprüfen Sie Ihre Anwendungsprotokolle auf Amazon CloudWatch.

Hinweis: AWS Fargate ist ein verwalteter Service. Daher können Sie nicht auf die zugrunde liegende Infrastruktur zugreifen. Launchen Sie zur Fehlerbehebung Ihre Amazon ECS-Aufgaben in Amazon Elastic Compute Cloud (Amazon EC2). Stellen Sie dann mithilfe von SSH eine Verbindung zu Ihren Amazon EC2-Instances her. Sie können auch versuchen, Amazon ECS Exec zu verwenden, um direkt mit Ihren ECS-Containern zu interagieren.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?