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
oderUpdateService
API-Aufrufe auftreten. -
Asynchroner Pfad: Fehler, die im
statusReason
Feld von auftretenDescribeServiceDeployments
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
undtestListenerRule
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 Format
.arn: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
sowohltestListenerRule
als auch angeben. Fügen Sie Ihrer Konfiguration einentestListenerRule
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 mit
loadBalancerName
) verwenden, können Sie dasadvancedConfiguration
Feld nicht verwenden. Wechseln Sie entweder zu einem Application Load Balancer oder entfernen Sie dasadvancedConfiguration
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 ErforderlicheadvancedConfiguration
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 aufSUCCEEDED
oderFAILED
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" }