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 auftreten DescribeServiceDeployments und zu einem Rollback der Bereitstellung führen

Probleme mit der Konfiguration des Load Balancers

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 blue/green können, dass Bereitstellungen fehlschlagen.

Bei der Behebung von Problemen mit dem Load Balancer ist es wichtig, die Beziehung zwischen Listener-Regeln und Zielgruppen zu verstehen. 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 Implementierung wird der Traffic 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 Konfiguration der Listener-Regeln für blue/green Bereitstellungen.

Verwenden eines Application Load Balancer 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 keinen Listener-ARN angeben. Für Network Load Balancer müssen Sie den Listener-ARN verwenden.

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

Es wird dieselbe Regel sowohl für Produktions- als auch für Test-Listener verwendet

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 den Produktions- und Testdatenverkehr verwenden. Erstellen Sie eine separate Listener-Regel für Testdatenverkehr, die an Ihre Testzielgruppe weitergeleitet wird.

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 productionListenerRule sowohl testListenerRule als auch angeben. Fügen Sie Ihrer Konfiguration einen testListenerRule mit einem gültigen Listener-ARN hinzu. Weitere Informationen finden Sie unter Erstellen eines Listeners für Ihren Network Load Balancer im Network Load Balancer Balancer-Benutzerhandbuch

Zielgruppe, die nicht mit den Listener-Regeln verknüpft 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äß mit Ihren Listener-Regeln verknüpft sind.

Fehlende Test-Listener-Regel mit einem 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 Listener für Ihre Application Load Balancer im Application Load Balancer-Benutzerhandbuch.

Fehler bei der Konfiguration der Zielgruppe

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 Traffic empfangen 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.

Regel „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 Forward Actions im Application Load Balancer Balancer-Benutzerhandbuch.

Konfigurationsfehler vom Typ Load Balancer

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

Kombination von Classic Load Balancer- und Application Load Balancer- oder Network Load Balancer Balancer-Konfigurationen

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

Anmerkung

Classic Load Balancers sind die vorherige Generation von Load Balancern von Elastic Load Balancing. Wir empfehlen Ihnen, zu einem Load Balancer der aktuellen Generation zu migrieren. Weitere Informationen finden Sie unter Migrieren Sie Ihren Classic Load Balancer.

Lösung:. Verwenden Sie entweder alle Classic Load Balancer oder alle Application Load Balancer und Network Load Balancer.

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

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 mitloadBalancerName) 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 Balancer

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

Lösung: Wenn Sie mehrere Load Balancer verwenden, müssen Sie sie entweder advancedConfiguration 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 blue/green der Bereitstellung

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 das 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, damit der Dienst die Rolle übernehmen kann. Die Vertrauensrichtlinie muss Folgendes beinhalten:

{ "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 Integritätsinformationen des Ziels zu lesen. Fügen Sie die elasticloadbalancing:DescribeTargetHealth Berechtigung zur Richtlinie der Rolle hinzu. Informationen zu Elastic Load Balancing Balancing-Berechtigungen finden Sie unterIAM-Rolle der Amazon ECS-Infrastruktur 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 elasticloadbalancing:RegisterTargets Berechtigung zur Richtlinie der Rolle hinzu. Informationen zu Elastic Load Balancing Balancing-Berechtigungen finden Sie unterIAM-Rolle der Amazon ECS-Infrastruktur 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 elasticloadbalancing:ModifyListener Berechtigung zur Richtlinie der Rolle hinzu. Informationen zu Elastic Load Balancing Balancing-Berechtigungen finden Sie unterIAM-Rolle der Amazon ECS-Infrastruktur für Load Balancer.

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

Probleme mit Lifecycle-H

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

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-Lifecycle-Hook angegebene IAM-Rolle hat nicht die richtige Vertrauensrichtlinie. Aktualisieren Sie die Vertrauensrichtlinie der Rolle, damit der Dienst die Rolle übernehmen kann. Die Vertrauensrichtlinie muss Folgendes beinhalten:

{ "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 Lifecycle-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 Erlaubnis 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-Lifecycle-Hook verwendete IAM-Rolle ist nicht berechtigt, die Lambda-Funktion aufzurufen. Fügen Sie die lambda:InvokeFunction Berechtigung zur Rollenrichtlinie für die spezifische Lambda-Funktion ARN hinzu. Hinweise zu Lambda-Berechtigungen finden Sie unterErforderliche Berechtigungen für Lambda-Funktionen in Amazon ECS-Bereitstellungen blue/green .

Timeout der Lambda-Funktion oder ungültige Antwort

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 für Ihre Validierungslogik entsprechend eingestellt ist. Weitere Informationen finden Sie unter Lifecycle-Hooks für Amazon ECS-Servicebereitstellungen.

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

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