Wie behebe ich die Fehlermeldung „Unable to pull secrets or registry auth“ in Amazon ECS?

Lesedauer: 8 Minute
0

Ich erhalte die Fehlermeldung „Unable to pull secrets or registry auth“, wenn ich eine Amazon Elastic Container Service (Amazon ECS)-Aufgabe starte.

Kurzbeschreibung

Wenn Sie eine Amazon ECS-Aufgabe starten, erhalten Sie eine der folgenden Fehlermeldungen:

  • „ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed“
  • „ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried.“

Die AWS Fargate-Plattform-Version 1.4.0 verwendet die Task Elastic Network-Schnittstelle, um das Image und die Geheimnisse abzurufen. Der gesamte Netzwerkverkehr fließt über die elastische Netzwerkschnittstelle innerhalb Ihrer Amazon Virtual Private Cloud (Amazon VPC). Diesen Datenverkehr in Ihren Amazon VPC Flow-Protokollen einsehen. Die Aufgabe verwendet jedoch Ihre Netzwerkkonfiguration, da sich die elastischen Netzwerkschnittstellen in Ihrer Amazon VPC befinden.

Der Amazon ECS-Container-Agent verwendet die Rolle „AWS Identity and Access Management“ (IAM) zur Aufgabenausführung, um Informationen von den folgenden Diensten abzurufen:

  • AWS Systems Manager Parameter Store
  • AWS Secrets Manager

Wenn Sie Daten mithilfe eines vom Kunden verwalteten AWS Key Management Service (AWS KMS)-Schlüssels verschlüsseln, erteilen Sie der IAM-Rolle für die Aufgabenausführung die folgenden Berechtigungen:

  • ssm:GetParameters
  • secretsmanager:GetSecretValue
  • kms:Decrypt

Behebung

Verwenden Sie das Runbook AWSSupport-TroubleshootECSTaskFailedToStart, um Fehler bei Amazon ECS-Aufgaben zu beheben, die nicht gestartet werden können. Wenn die Ausgabe des Runbooks keine Empfehlungen enthält, verwenden Sie die manuellen Ansätze zur Fehlerbehebung in den folgenden Abschnitten. 

Wichtig:

  • Verwenden Sie das Runbook in derselben AWS-Region, in der sich Ihre ECS-Cluster-Ressourcen befinden.
  • Wenn Sie das Runbook verwenden, verwenden Sie die zuletzt fehlgeschlagene Aufgaben-ID, damit die Aufgabenstatusbereinigung die Analyse während der Automatisierung nicht unterbricht. Wenn die fehlgeschlagene Aufgabe Teil des Amazon ECS-Service ist, verwenden Sie die zuletzt fehlgeschlagene Aufgabe im Service. Die fehlgeschlagene Aufgabe muss während der Ausführung der Automatisierung in ECS:DescribeTasks sichtbar sein. Standardmäßig sind gestoppte ECS-Aufgaben 1 Stunde lang sichtbar, nachdem sie den Status Gestoppt erreicht haben.

Verwenden des Runbook TroubleshootECSTaskFailedToStart

Führen Sie die folgenden Schritte aus, um das Runbook AWSSupport-TroubleshootECSTaskFailedToStart auszuführen:

  1. Öffnen Sie die AWS-Systems-Manager-Konsole.
  2. Wählen Sie im Navigationsbereich unter Management ändern die Option Automatisierung aus.
  3. Wählen Sie Automatisierung ausführen aus.
  4. Wählen Sie die Registerkarte Owned by Amazon aus.
  5. Suchen Sie unter Automatisierungsdokument nach TroubleshootECSTaskFailedToStart.
  6. Wählen Sie die Karte AWSSupport-TroubleshootECSTaskFailedToStart aus.
    **Hinweis:**Stellen Sie sicher, dass Sie das Optionsfeld auf der Karte auswählen und nicht den mit dem Hyperlink verknüpften Automatisierungsnamen.
  7. Wählen Sie Weiter aus.
    **Hinweis:**Nach der Ausführung werden die Analyseergebnisse in den Abschnitt Globale Ausgabe eingetragen. Warten Sie jedoch, bis der Status des Dokuments auf Erfolgreich wechselt. Achten Sie außerdem auf Ausnahmen im Abschnitt Ausgabe.
  8. Wählen Sie bei Automatisierungsdokument ausführen die Option Einfache Ausführung.
  9. Geben Sie im Abschnitt Eingabeparameter für AutomationAssumeRole den ARN der Rolle ein, die Systems Manager Automation das Ausführen von Aktionen ermöglicht.
    **Hinweis:**Stellen Sie sicher, dass entweder der AutomationAssumeRole- oder der IAM-Benutzer oder die IAM-Rolle über die erforderlichen IAM-Berechtigungen verfügt, um das Runbook AWSSupport-TroubleshootECSTaskFailedToStart auszuführen. Wenn Sie keine IAM-Rolle angeben, verwendet Systems Manager Automation die Berechtigungen des IAM-Benutzers oder der IAM-Rolle, die das Runbook ausführt. Weitere Informationen zum Erstellen der zu übernehmenden Rolle für Systems Manager Automation finden Sie unter Aufgabe 1: Erstellen Sie Servicerolle für Automation.
  10. Geben Sie für ClusterName den Namen des Clusters ein, in dem die Aufgabe nicht gestartet werden konnte.
  11. Geben Sie für TaskId die Identifikation der zuletzt fehlgeschlagenen Aufgabe ein.
  12. Wählen Sie Ausführen.

Verwenden Sie auf der Grundlage der Ergebnisse der Automatisierung einen der folgenden manuellen Schritte zur Fehlerbehebung.

Überprüfen der Routen von Ihren Subnetzen zum Internet

Wenn Sie eine Fargate-Aufgabe in einem öffentlichen Subnetz haben, stellen Sie sicher, dass Ihrer Aufgabe eine öffentliche IP-Adresse zugewiesen ist. Stellen Sie außerdem sicher, dass die Aufgabe eine Standardroute (0.0.0.0/0) zu einem Internet-Gateway hat. Wenn Sie eine neue Aufgabe starten oder einen neuen Dienst erstellen, aktivieren Sie Öffentlich automatisch zuweisen.

Wenn Sie die folgenden Konfigurationen verwenden, verwenden Sie nicht das Internet-Gateway im öffentlichen Subnetz, um den Secrets Manager oder Systems Manager zu erreichen:

  • Die VPC-Endpunkte von Secrets Manager oder Systems Manager befinden sich in einem öffentlichen Subnetz.
  • Sie haben AmazonProvidedDNS in den DHCP-Einstellungen Ihrer Amazon VPC aktiviert.

Verwenden Sie stattdessen einen Amazon VPC-Endpunkt.

Hinweis: Sie können Öffentlich automatisch zuweisen für vorhandene Aufgaben nicht aktivieren. Verwenden Sie die AWS Command Line Interface (AWS CLI), um bestehende Services neu zu konfigurieren. Verwenden Sie die AWS-Managementkonsole nicht. Wenn Sie einen AWS CloudFormation-Stack zum Erstellen Ihres Amazon ECS-Dienstes verwendet haben, ändern Sie die NetworkConfiguration-Eigenschaft für AWS::ECS::Service, um den Dienst zu aktualisieren.

Wenn Ihre Fargate-Aufgabe in einem privaten Subnetz ist, stellen Sie sicher, dass Ihre Aufgabe über eine Standardroute (0.0.0.0/0) zur Internetverbindungsquelle verfügt.

Die Internetverbindungsquelle kann ein NAT-Gateway, AWS PrivateLink oder eine andere Quelle sein:

  • Wenn Sie ein NAT-Gateway verwenden, platzieren Sie Ihr NAT-Gateway in einem öffentlichen Subnetz. Weitere Informationen finden Sie unter Architektur mit einem Internet-Gateway und einem NAT-Gateway.
  • Wenn Sie PrivateLink verwenden, stellen Sie sicher, dass Ihre Fargate-Infrastruktur die Sicherheitsgruppen für Ihre Amazon VPC-Endpunkte verwenden kann.
  • Wenn Sie einen Domain-Server mit benutzerdefiniertem Namen verwenden, bestätigen Sie die Einstellungen der DNS-Abfrage. Die Abfrage muss über den Anschluss 53 ausgehen und das UDP- und TCP-Protokoll verwenden. Außerdem muss HTTPS-Zugriff auf Anschluss 443 vorhanden sein.

Überprüfen der Einstellungen Ihrer Netzwerk-ACL und Sicherheitsgruppe

Stellen Sie sicher, dass Ihre Netzwerkzugriffskontrollliste (Netzwerk-ACL) und Sicherheitsgruppen den ausgehenden Zugriff auf Port 443 aus dem Subnetz nicht blockieren. Weitere Informationen finden Sie unter Datenverkehr zu Ihren AWS-Ressourcen mithilfe von Sicherheitsgruppen steuern.

**Hinweis:**Fargate-Aufgaben müssen ausgehenden Zugriff auf Port 443 haben, um ausgehenden Datenverkehr zu ermöglichen und auf Amazon ECS-Endpunkte zuzugreifen.

Überprüfen Ihrer Amazon VPC-Endpunkte

Wenn Sie PrivateLink verwenden, müssen Sie die erforderlichen Endpunkte erstellen. Die folgenden Endpunkte sind für die Fargate-Plattformversionen 1.4.0 oder höher erforderlich:

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • S3 Gateway-Endpunkt
  • com.amazonaws.region.logs

Weitere Informationen finden Sie unter Überlegungen zu VPC-Endpunkten von Amazon Elastic Container Registry (Amazon ECR).

Hinweis: Wenn Ihre Aufgabendefinition Secrets Manager, Systems Manager-Parameter oder Amazon CloudWatch Logs verwendet, müssen Sie möglicherweise Endpunkte definieren. Weitere Informationen finden Sie in der folgenden Dokumentation:

Prüfen Sie für PrivateLink, ob die Sicherheitsgruppe von Amazon VPC Datenverkehr aus der Fargate-Task-Sicherheitsgruppe oder dem Fargate-Task-VPC-CIDR-Bereich auf dem TCP-Anschluss 443 zulässt.

Um zu bestätigen, dass die Fargate-Infrastruktur Service-Zugriff hat, überprüfen Sie die VPC-Endpunktrichtlinien und Endpunktrichtlinien für Amazon Simple Storage Service (Amazon S3).

Überprüfen Ihrer IAM-Rollen und -Berechtigungen

Die Rolle „Aufgabenausführung“ erteilt dem Amazon ECS-Container und den Fargate-Agents die erforderlichen Berechtigungen, um API-Aufrufe für die Aufgabe durchzuführen. Fargate benötigt diese Rolle, wenn Sie die folgenden Aktionen ausführen:

  • Rufen Sie ein Container-Image aus Amazon ECR ab.
  • Verwenden Sie den awslogs-Protokolltreiber.
  • Verwenden Sie die private Registrierungsauthentifizierung.
  • Verwenden Sie Secrets Manager-Geheimnisse oder Systems Manager-Parameter Store-Parameter, um auf vertrauliche Daten zu verweisen.

Wenn Ihr Anwendungsfall eines der oben genannten Szenarien beinhaltet, definieren Sie die erforderlichen Berechtigungen in Ihrer Rolle „Aufgabenausführung“. Eine vollständige Liste der erforderlichen Berechtigungen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

Überprüfen der referenzierten vertraulichen Informationen in der Amazon ECS-Aufgabendefinition

**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von AWS CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Überprüfen Sie, ob die Namen des Geheimnisses und der Parameter mit den referenzierten Namen in Ihrer Amazon ECS-Aufgabendefinition übereinstimmen. Überprüfen Sie dann, ob die Werte in der Container-Definition mit den Werten in Ihrer Amazon ECS-Aufgabendefinition übereinstimmen. Weitere Informationen finden Sie unter Wie kann ich in einer Amazon ECS-Aufgabe geheime oder vertrauliche Informationen sicher an Container weitergeben?

Wenn sich der Parameter Store-Parameter von Systems Manager und die Aufgabe in derselben Region befinden, verwenden Sie den vollständigen ARN oder den Namen des Geheimnisses. Wenn der Parameter in einer anderen Region vorhanden ist, müssen Sie den vollständigen ARN angeben.

Führen Sie die folgenden Schritte aus, um den Systems Manager-Parameternamen und den ARN zu überprüfen:

  1. Öffnen Sie die AWS-Systems-Manager-Konsole.
  2. Wählen Sie im Navigationsbereich Parameter Store und bestätigen Sie dann den Namen Ihres Parameter Stores.
  3. Um den ARN des Parameters zu erhalten, führen Sie mit der AWS CLI den folgenden Befehl aus. Ersetzen Sie name_of_parameter_store_secret durch den geheimen Namen Ihres Parameter Stores:
    $ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption
    Hinweis: Parameter, die auf Geheimnisse des Secrets Manager verweisen, können die Versionsverwaltung oder die Verlaufsfunktionen des Parameter Stores nicht verwenden. Weitere Informationen finden Sie unter Einschränkungen.

Verwandte Informationen

Überprüfen gestoppter Aufgaben auf Fehler

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 8 Monaten