Fehlerbehebung bei Amazon blue/green ECS-Bereitstellungen - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung bei Amazon blue/green ECS-Bereitstellungen

Im Folgenden finden Sie Lösungen für häufig auftretende Probleme, die bei der Verwendung von blue/green Bereitstellungen mit Amazon ECS auftreten können. Blue/green Bereitstellungsfehler können in den folgenden Phasen auftreten:

  • Synchroner Pfad: Fehler, die sofort als Reaktion auf CreateService- oder UpdateService-API-Aufrufe auftreten.

  • Asynchroner Pfad: Fehler, die im statusReason-Feld von DescribeServiceDeployments auftreten und zu einem Rollback der Bereitstellung führen

Tipp

Sie können die Amazon ECS MCP-Server KI-Assistenten verwenden, um Bereitstellungen zu überwachen und Bereitstellungsprobleme in natürlicher Sprache zu beheben.

Probleme mit der Load-Balancer-Konfiguration

Die Load Balancer-Konfiguration ist eine wichtige Komponente von blue/green Bereitstellungen in Amazon ECS. Die richtige Konfiguration von Listener-Regeln, Zielgruppen und Load-Balancer-Typen ist für erfolgreiche Bereitstellungen unerlässlich. In diesem Abschnitt werden häufig auftretende Probleme mit der Load Balancer-Konfiguration behandelt, die dazu führen können, dass blue/green Bereitstellungen fehlschlagen.

Bei der Behebung von Problemen mit dem Load Balancer ist es wichtig, die Beziehung zwischen Listener-Regeln und Zielgruppen zu kennen. In einer blue/green Bereitstellung:

  • Die Listener-Regel für die Produktion leitet den Datenverkehr an die aktuell aktive (blaue) Service-Revision weiter

  • Die Test-Listener-Regel kann verwendet werden, um die neue (grüne) Service-Revision zu validieren, bevor der Produktionsdatenverkehr verlagert wird

  • Zielgruppen werden verwendet, um die Container-Instances jeder Service-Revision zu registrieren

  • Während der Bereitstellung wird der Datenverkehr schrittweise von der blauen Service-Revision zur grünen Service-Revision verlagert, indem die Gewichtung der Zielgruppen in den Listener-Regeln angepasst wird.

Fehler bei der Konfiguration der Listener-Regel

Die folgenden Probleme beziehen sich auf eine falsche Listener-Regelkonfiguration für blue/green Bereitstellungen.

Verwenden eines Application-Load-Balancer-Listener-ARN anstelle eines Listener-Regel-ARN

Fehlermeldung: productionListenerRule has an invalid ARN format. Must be RuleArn for ALB or ListenerArn for NLB. Got: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456

Lösung: Wenn Sie einen Application Load Balancer verwenden, müssen Sie einen Listener-Regel-ARN für productionListenerRule und testListenerRule angeben, und keinen Listener-ARN. Für Network Load Balancer müssen Sie den Listener-ARN verwenden.

Weitere Informationen darüber, wie Sie den Listener-ARN finden können finden Sie unter Listeners für Ihre Application Load Balancers im Benutzerhandbuch für Application Load Balancer. Der ARN für eine Regel hat das Format arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/....

Verwenden derselben Regel sowohl für Produktions- als auch für Test-Listener

Fehlermeldung: The following rules cannot be used as both production and test listener rules: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789

Lösung: Sie müssen unterschiedliche Listener-Regeln für Produktions- und Test-Datenverkehr verwenden. Erstellen Sie eine separate Listener-Regel für Test-Datenverkehr, die an Ihre Testzielgruppe weiterleitet.

Fehlende Test-Listener-Regel für einen Network Load Balancer

Fehlermeldung: TestListenerRule is required for NLB with arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/abc123

Lösung: Wenn Sie einen Network Load Balancer verwenden, müssen Sie sowohl productionListenerRule als auch testListenerRule angeben. Fügen Sie Ihrer Konfiguration eine testListenerRule mit einem gültigen Listener-ARN hinzu. Weitere Informationen finden Sie unter Erstellen eines Listeners für Ihren Network Load Balancer im Benutzerhandbuch für Network Load Balancer.

Zielgruppe, die keinen Listener-Regeln zugeordnet ist

Fehlermeldung: Service deployment rolled back because of invalid networking configuration: Target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myAlternateTG/abc123 is not associated with either productionListenerRule or testListenerRule.

Lösung: Sowohl die primäre Zielgruppe als auch die alternative Zielgruppe müssen entweder der Produktions-Listener-Regel oder der Test-Listener-Regel zugeordnet werden. Aktualisieren Sie Ihre Load-Balancer-Konfiguration, um sicherzustellen, dass beide Zielgruppen ordnungsgemäß Ihren Listener-Regeln zugeordnet sind.

Fehlende Test-Listener-Regel für einen Application Load Balancer

Fehlermeldung: For Application LoadBalancer, testListenerRule is required when productionListenerRule is not associated with both targetGroup and alternateTargetGroup

Lösung: Wenn Sie einen Application Load Balancer verwenden und beide Zielgruppen nicht mit der Produktions-Listener-Regel verknüpft sind, müssen Sie eine Test-Listener-Regel angeben. Fügen Sie Ihrer Konfiguration eine testListenerRule hinzu und stellen Sie sicher, dass beide Zielgruppen entweder der Produktions- oder der Test-Listener-Regel zugeordnet sind. Weitere Informationen finden Sie unter Listeners für Ihre Application Load Balancers im Benutzerhandbuch für Application Load Balancer.

Fehler bei der Zielgruppenkonfiguration

Die folgenden Probleme beziehen sich auf eine falsche Zielgruppenkonfiguration für blue/green Bereitstellungen.

Regel für mehrere Zielgruppen mit Datenverkehr in der Listener-Regel

Fehlermeldung: Service deployment rolled back because of invalid networking configuration. productionListenerRule arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789 should have exactly one target group serving traffic but found 2 target groups which are serving traffic

Lösung: Stellen Sie vor dem Start einer blue/green Bereitstellung sicher, dass in Ihrer Listener-Regel nur eine Zielgruppe Traffic empfängt (mit einer Gewichtung ungleich Null). Aktualisieren Sie Ihre Listener-Regelkonfiguration, um die Gewichtung für alle Zielgruppen, die keinen Datenverkehr erhalten sollen, auf Null zu setzen.

Doppelte Zielgruppen in allen Load-Balancer-Einträgen

Fehlermeldung: Duplicate targetGroupArn found: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myecs-targetgroup/abc123

Lösung: Jeder Zielgruppen-ARN muss für alle Load-Balancer-Einträge in Ihrer Servicedefinition eindeutig sein. Überprüfen Sie Ihre Konfiguration und stellen Sie sicher, dass Sie für jeden Load-Balancer-Eintrag unterschiedliche Zielgruppen verwenden.

Unerwartete Zielgruppe in der Produktions-Listener-Regel

Fehlermeldung: Service deployment rolled back because of invalid networking configuration. Production listener rule is forwarding traffic to unexpected target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/random-nlb-tg/abc123. Expected traffic to be forwarded to either targetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/def456 or alternateTargetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-tg-alternate/ghi789

Lösung: Die Produktions-Listener-Regel leitet den Datenverkehr an eine Zielgruppe weiter, die nicht in Ihrer Servicedefinition angegeben ist. Stellen Sie sicher, dass die Listener-Regel so konfiguriert ist, dass der Datenverkehr nur an die in Ihrer Servicedefinition angegebenen Zielgruppen weitergeleitet wird.

Weitere Informationen finden Sie unter Weiterleitungsaktionen im Benutzerhandbuch für Application Load Balancer.

Konfigurationsfehler beim Load-Balancer-Typ

Die folgenden Probleme beziehen sich auf eine falsche Konfiguration des Load Balancer-Typs für Bereitstellungen. blue/green

Mischung aus Application Load Balancer, Classic Load Balancer und Network Load Balancer

Fehlermeldung: All loadBalancers must be strictly either ELBv1 (defining loadBalancerName) or ELBv2 (defining targetGroupArn)

Anmerkung

Ein Classic Load Balancer ist der Elastic Load Balancer der vorherigen Generation. Es wird empfohlen, zu einem Load Balancer der aktuellen Generation zu migrieren. Weitere Informationen finden Sie unter Migration Ihres Classic Load Balancer.

Lösung:. Verwenden Sie entweder ausschließlich Classic Load Balancers oder Application Load Balancers und Network Load Balancers.

Geben Sie für Application Load Balancers und Network Load Balancers nur das targetGroupArn-Feld an.

Verwenden der erweiterten Konfiguration mit einem Classic Load Balancer

Fehlermeldung: advancedConfiguration field is not allowed with ELBv1 loadBalancers

Lösung: Die erweiterte Konfiguration für blue/green Bereitstellungen wird nur mit Application Load Balancers und Network Load Balancers unterstützt. Wenn Sie einen Classic Load Balancer (angegeben mit loadBalancerName) verwenden, können Sie das advancedConfiguration-Feld nicht verwenden. Wechseln Sie entweder zu einem Application Load Balancer oder entfernen Sie das advancedConfiguration-Feld.

Inkonsistente erweiterte Konfiguration für alle Load Balancers

Fehlermeldung: Either all or none of the provided loadBalancers must have advancedConfiguration defined

Lösung: Wenn Sie mehrere Load Balancers verwenden, müssen Sie sie advancedConfiguration entweder für alle oder für keinen von ihnen definieren. Aktualisieren Sie Ihre Konfiguration, um die Konsistenz aller Load-Balancer-Einträge sicherzustellen.

Fehlende erweiterte Konfiguration bei der Bereitstellung blue/green

Fehlermeldung: advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategy

Lösung: Wenn Sie eine blue/green Bereitstellungsstrategie mit Application Load Balancers verwenden, müssen Sie das advancedConfiguration Feld für alle Load Balancer-Einträge angeben. Fügen Sie die Erforderliche advancedConfiguration zu Ihrer Load Balancer-Konfiguration hinzu.

Probleme mit Berechtigungen

Die folgenden Probleme beziehen sich auf unzureichende Berechtigungen für blue/green Bereitstellungen.

Fehlende Vertrauensrichtlinie für die Infrastrukturrolle

Fehlermeldung: Service deployment rolled back because of invalid networking configuration. ECS was unable to manage the ELB resources due to missing permissions on ECS Infrastructure Role 'arn:aws:iam::123456789012:role/Admin'.

Lösung: Die für die Verwaltung der Load-Balancer-Ressourcen angegebene IAM-Rolle hat nicht die richtige Vertrauensrichtlinie. Aktualisieren Sie die Vertrauensrichtlinie der Rolle, um es dem Service zu erlauben, die Rolle anzunehmen. Die Vertrauensrichtlinie muss Folgendes beinhalten:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Fehlende Leseberechtigungen für die Load-Balancer-Rolle

Fehlermeldung: service myService failed to describe target health on target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:DescribeTargetHealth because no identity-based policy allows the elasticloadbalancing:DescribeTargetHealth action)

Lösung: Die IAM-Rolle, die für die Verwaltung der Load-Balancer-Ressourcen verwendet wird, ist nicht berechtigt, die Zustandinformationen des Ziels zu lesen. Fügen Sie die Berechtigungsrichtlinie elasticloadbalancing:DescribeTargetHealth der Richtlinie der Rolle hinzu. Weitere Informationen zu den erforderlichen Berechtigungen für Elastic Load Balancing finden Sie unter Amazon-ECS-IAM-Infrastrukturrolle für Load Balancer.

Fehlende Schreibberechtigungen für die Load-Balancer-Rolle

Fehlermeldung: service myService failed to register targets in target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:RegisterTargets on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myTargetGroup/abc123 because no identity-based policy allows the elasticloadbalancing:RegisterTargets action)

Lösung: Die für die Verwaltung der Load-Balancer-Ressourcen verwendete IAM-Rolle ist nicht berechtigt, Ziele zu registrieren. Fügen Sie die Berechtigungsrichtlinie elasticloadbalancing:RegisterTargets der Richtlinie der Rolle hinzu. Weitere Informationen zu den erforderlichen Berechtigungen für Elastic Load Balancing finden Sie unter Amazon-ECS-IAM-Infrastrukturrolle für Load Balancer.

Fehlende Berechtigung zum Ändern von Listener-Regeln

Fehlermeldung: Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. User: arn:aws:sts::123456789012:assumed-role/myELBRole/ECSNetworkingWithELB is not authorized to perform: elasticloadbalancing:ModifyListener on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456 because no identity-based policy allows the elasticloadbalancing:ModifyListener action

Lösung: Die für die Verwaltung der Load-Balancer-Ressourcen verwendete IAM-Rolle ist nicht berechtigt, Listener zu ändern. Fügen Sie die Berechtigungsrichtlinie elasticloadbalancing:ModifyListener der Richtlinie der Rolle hinzu. Weitere Informationen zu den erforderlichen Berechtigungen für Elastic Load Balancing finden Sie unter Amazon-ECS-IAM-Infrastrukturrolle für Load Balancer.

Für blue/green Bereitstellungen empfehlen wir, die AmazonECS-ServiceLinkedRolePolicy verwaltete Richtlinie Ihrer Infrastrukturrolle zuzuordnen, die alle erforderlichen Berechtigungen für die Verwaltung von Load Balancer-Ressourcen umfasst.

Probleme mit Lebenszyklus-Hooks

Die folgenden Probleme beziehen sich auf Lifecycle-Hooks in Bereitstellungen. blue/green

Falsche Vertrauensrichtlinie für die Lambda-Hook-Rolle

Fehlermeldung: Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to assume role arn:aws:iam::123456789012:role/Admin

Lösung: Die für den Lambda-Lebenszyklus-Hook angegebene IAM-Rolle hat nicht die richtige Vertrauensrichtlinie. Aktualisieren Sie die Vertrauensrichtlinie der Rolle, um es dem Service zu erlauben, die Rolle anzunehmen. Die Vertrauensrichtlinie muss Folgendes beinhalten:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Lambda-Hook gibt den Status FAILED zurück

Fehlermeldung: Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. Lifecycle hook target arn:aws:lambda:us-west-2:123456789012:function:myHook returned FAILED status.

Lösung: Die als Lebenszyklus-Hook angegebene Lambda-Funktion hat den Status FAILED zurückgegeben. Überprüfen Sie die Lambda-Funktionsprotokolle in den CloudWatch Amazon-Protokollen, um die Fehlerursache zu ermitteln, und aktualisieren Sie die Funktion, damit das Bereitstellungsereignis korrekt verarbeitet wird.

Fehlende Berechtigung zum Aufrufen der Lambda-Funktion

Fehlermeldung: Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to invoke hook target arn:aws:lambda:us-west-2:123456789012:function:myHook due to User: arn:aws:sts::123456789012:assumed-role/myLambdaRole/ECS-Lambda-Execution is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:123456789012:function:myHook because no identity-based policy allows the lambda:InvokeFunction action

Lösung: Die für den Lambda-Lebenszyklus-Hook verwendete IAM-Rolle ist nicht berechtigt, die Lambda-Funktion aufzurufen. Fügen Sie die lambda:InvokeFunction-Berechtigung zur Rollenrichtlinie für den spezifischen Lambda-Funktion-ARN hinzu. Weitere Informationen zu Lambda-Berechtigungen finden Sie unter Erforderliche Berechtigungen für Lambda-Funktionen in Amazon ECS-Bereitstellungen blue/green .

Timeout oder ungültige Antwort der Lambda-Funktion

Fehlermeldung: Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to parse the response from arn:aws:lambda:us-west-2:123456789012:function:myHook due to HookStatus must not be null

Lösung: Die Lambda-Funktion hat entweder das Zeitlimit überschritten oder eine ungültige Antwort zurückgegeben. Stellen Sie sicher, dass Ihre Lambda-Funktion eine gültige Antwort mit einem hookStatus-Feld zurückgibt, das entweder auf SUCCEEDED oder FAILED gesetzt ist. Stellen Sie außerdem sicher, dass das Lambda-Funktions-Timeout Ihrer Validierungslogik entsprechend eingestellt ist. Weitere Informationen finden Sie unter Lebenszyklus-Hooks für Amazon-ECS-Servicebereitstellungen.

Beispiel für eine gültige Lambda-Antwort:

{ "hookStatus": "SUCCEEDED", "reason": "Validation passed" }