Wie kann ich den Fehler „CannotPullContainerError“ in meiner Launch-Type-Aufgabe in Amazon ECS EC2 beheben?
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:
- Stellen Sie sicher, dass Ihre Instances entweder über ein Internet-Gateway oder ein Network Address Translation (NAT)-Gateway auf das Internet zugreifen können.
Hinweis: Anstelle eines NAT-Gateways können Sie AWS PrivateLink verwenden. Um Fehler zu vermeiden, stellen Sie sicher, dass AWS PrivateLink korrekt konfiguriert ist. - Stellen Sie sicher, dass eingehender HTTPS-Zugriff über Port 443 auf der Ebene der Instance, Sicherheitsgruppe und Netzwerk-Zugriffsteuerungsliste (Netzwerk-ACL) zulässig ist.
Informationen zur Behebung von NAT-Gateway-Verbindungsproblemen finden Sie unter Warum kann meine Amazon-EC2-Instance in einem privaten Subnetz über ein NAT-Gateway keine Verbindung zum Internet herstellen?
Informationen zur Behebung von Verbindungsproblemen mit dem Internet-Gateway finden Sie unter Warum kann meine Amazon-EC2-Instance über ein Internet-Gateway keine Verbindung zum Internet herstellen? - Wenn Sie einen VPC-Endpunkt verwenden, um eine Verbindung zu einem Amazon-ECR-Endpunkt herzustellen, überprüfen Sie Ihre Sicherheitsgruppen. Vergewissern Sie sich, dass die Sicherheitsgruppen für Ihren VPC-Endpunkt es der ECS-Container-Instance ermöglichen, sie zu verwenden.
- Wenn Sie die Fehlermeldung „CannotPullContainerError erhalten: API-Fehler“, dann sehen Sie Wie kann ich den Amazon-ECR-Fehler „CannotPullContainerError“ beheben: API error“ in Amazon ECS?
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.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr