Wie kann ich den Fehler „CannotPullContainerError“ in meiner Launch-Type-Aufgabe in Amazon ECS EC2 beheben?

Lesedauer: 4 Minute
0

Wenn ich eine EC2-Aufgabe in Amazon Elastic Container Service (Amazon ECS) starte, erhalte ich die folgende Fehlermeldung: „CannotPullContainerError“.

Kurzbeschreibung

Der CannotPullContainerError tritt aufgrund eines der folgenden Probleme auf:

  • Eine Amazon Elastic Compute Cloud (Amazon EC2)-Launch-Type-Aufgabe kann das Image aufgrund eines falsch konfigurierten Netzwerks nicht abrufen.
  • Ihre AWS Identity and Access Management (IAM)-Rolle verfügt nicht über die richtigen Berechtigungen, um Images abzurufen oder zu übertragen.
  • Es gibt ein DockerHub-Ratenlimit.
  • Der Name oder das Tag des Images ist nicht vorhanden.

Verwenden Sie das Runbook AWSSupport-TroubleshootECSTaskFailedToStart, um die Fehler für Amazon-ECS-Aufgaben zu beheben, die nicht gestartet werden können. Befolgen Sie dann die entsprechenden Schritte zur Fehlerbehebung für Ihr Problem.

Behebung

Wichtig:

  • Verwenden Sie das Runbook AWSSupport-TroubleshootECSTaskFailedToStart in derselben AWS-Region, in der sich Ihre ECS-Cluster-Ressourcen befinden.
  • Wenn Sie das Runbook verwenden, müssen Sie die Task-ID verwenden, die zuletzt ausgefallen ist. Wenn die fehlgeschlagene Aufgabe Teil eines Amazon-ECS-Service ist, verwenden Sie die zuletzt ausgefallene Aufgabe im Service. Die fehlgeschlagene Aufgabe muss während der Automatisierung in ECS:DescribeTasks sichtbar sein. Standardmäßig sind gestoppte ECS-Aufgaben 1 Stunde lang sichtbar, nachdem sie den Status Stopped erreicht haben. Durch die Verwendung der zuletzt ausgefallenen Task-ID wird verhindert, dass die Aufgabenstatusbereinigung die Analyse während der Automatisierung unterbricht.

Anweisungen zum Initiieren des Runbooks finden Sie unter AWSSupport-TroubleshootECSTaskFailedToStart. Verwenden Sie auf der Grundlage der Ergebnisse der Automatisierung einen der folgenden manuellen Schritte zur Fehlerbehebung.

Ihre Container-Instance-Netzwerkkonfiguration in Amazon-ECS ist falsch

Wenn Ihre Amazon-ECS-Container-Instance keine Internetverbindung hat, kann sie den Endpunkt Amazon Elastic Container Registry (Amazon ECR) nicht erreichen. Ohne eine Verbindung zum Endpunkt kann die Instance das Image nicht abrufen. Um sicherzustellen, dass Ihre ECS-Container-Instance über einen Internetzugang verfügt, überprüfen Sie die folgenden Punkte:

Ihre IAM-Rolle verfügt nicht über die richtigen Berechtigungen zum Abrufen von Images

Vergewissern Sie sich, dass die Instance-IAM-Rolle, die dem Instance-Profil zugeordnet ist, über Berechtigungen für den Zugriff auf das Amazon-ECR-Repository verfügt.

Hinweis: Die von AWS verwaltete Richtlinie AmazonEC2ContainerRegistryReadOnly bietet die minimalen Berechtigungen, die zum Abrufen von Images erforderlich sind.

Das DockerHub-Pull-Rate-Limit ist erreicht

Wenn Sie versuchen, ein Image von DockerHub abzurufen und Ihr Pull-Rate-Limit erreicht haben, erhalten Sie die folgende Fehlermeldung:

„CannotPullContainerError: Die Überprüfung des Bildes wurde 5 Mal wiederholt: httpReaderSeeker: Öffnen fehlgeschlagen: unerwarteter Statuscode https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Zu viele Anfragen – Servermeldung: toomanyrequests: "

Um dieses Problem zu beheben, lesen Sie die Schritte unter Wie behebe ich den Fehler „CannotPullContainerError: Sie haben Ihr Pull-Rate-Limit erreicht“ in Amazon ECS?

Der Name oder das Tag des Images ist nicht vorhanden

Wenn ein in Ihrer Aufgabendefinition definiertes Bild oder das zugehörige Tag, das in Amazon ECR gehostet wird, nicht existiert, erhalten Sie die folgende Fehlermeldung:

„Cannotpullcontainererror: Pull-Image-Manifest wurde 1 Mal wiederholt: Fehler beim Auflösen von 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**“

Um dieses Problem zu beheben, überprüfen Sie das Image-Feld in Ihrer Aufgabendefinition. Vergewissern Sie sich, dass das entsprechende Repository und das definierte Tag im Container-Register vorhanden sind, aus der Sie die Datei abrufen.

Wenn Ihre Aufgabe ein Image aus einem anderen Register als Amazon ECR abruft und Informationen fehlen, erhalten Sie eine andere Fehlermeldung. Der folgende Fehler tritt auf, wenn das Image nicht existiert, das Tag nicht existiert oder die Anmeldeinformationen für das Register nicht bereitgestellt werden:

„Cannotpullcontainererror: Pull-Image-Manifest wurde 1 Mal(e) wiederholt: Fehler beim Auflösen von ref docker.io/library/invalid-name:non-existenttag: Pull-Zugriff verweigert, Repository existiert nicht oder erfordert möglicherweise eine Autorisierung: Servermeldung: unzureichend.“ „_scope: Autorisierung fehlgeschlagen“

Um dieses Problem zu beheben, überprüfen Sie das Image-Feld in Ihrer Aufgabendefinition. Vergewissern Sie sich, dass das Image im entsprechenden Container-Register vorhanden ist. Wenn das Image vorhanden ist, stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen angeben. Weitere Informationen finden Sie unter Private Register-Authentifizierung für Aufgaben.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten