Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi relativi alle implementazioni di Amazon ECS blue/green
Di seguito vengono fornite soluzioni per problemi comuni che potresti riscontrare durante l'utilizzo di blue/green distribuzioni con Amazon ECS. Blue/green gli errori di distribuzione possono verificarsi durante le seguenti fasi:
-
Percorso sincrono: errori che compaiono immediatamente in risposta a
CreateService
o chiamateUpdateService
API. -
Percorso asincrono: errori che compaiono nel
statusReason
campo diDescribeServiceDeployments
e causano un rollback della distribuzione
Problemi di configurazione del sistema di bilanciamento del carico
La configurazione del bilanciamento del carico è un componente fondamentale delle blue/green distribuzioni in Amazon ECS. La corretta configurazione delle regole dei listener, dei gruppi target e dei tipi di bilanciamento del carico è essenziale per implementazioni di successo. Questa sezione descrive i problemi più comuni di configurazione del load balancer che possono causare il fallimento delle distribuzioni. blue/green
Quando si risolvono i problemi relativi al bilanciamento del carico, è importante comprendere la relazione tra le regole del listener e i gruppi target. In una blue/green distribuzione:
-
La regola del listener di produzione indirizza il traffico verso la revisione del servizio attualmente attiva (blu)
-
La regola test listener può essere utilizzata per convalidare la nuova revisione del servizio (verde) prima di spostare il traffico di produzione
-
I gruppi target vengono utilizzati per registrare le istanze del contenitore di ogni revisione del servizio
-
Durante l'implementazione, il traffico viene gradualmente spostato dalla revisione del servizio blu alla revisione del servizio verde modificando il peso dei gruppi target nelle regole del listener
Errori di configurazione delle regole del listener
I seguenti problemi riguardano la configurazione errata delle regole del listener per blue/green le distribuzioni.
- Utilizzo di un listener di Application Load Balancer (ARN) anziché di una regola di listener (ARN)
-
Messaggio di errore:
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
Soluzione: quando si utilizza un Application Load Balancer, è necessario specificare un ARN per la regola del listener
productionListenerRule
etestListenerRule
non un ARN per il listener. Per i Network Load Balancer, è necessario utilizzare l'ARN del listener.Per informazioni su come trovare l'ARN del listener, vedete Listeners for your Application Load Balancers nella Application Load Balancer User Guide. L'ARN di una regola ha il formato.
arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/...
- Utilizzo della stessa regola sia per gli ascoltatori di produzione che per quelli di test
-
Messaggio di errore:
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
Soluzione: è necessario utilizzare regole di listener diverse per il traffico di produzione e di test. Crea una regola di ascolto separata per il traffico di test che indirizza verso il gruppo target del test.
- Regola di test listener mancante per un Network Load Balancer
-
Messaggio di errore:
TestListenerRule is required for NLB with arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/abc123
Soluzione: quando si utilizza un Network Load Balancer, è necessario specificare entrambi
productionListenerRule
e.testListenerRule
Aggiungi un ARNtestListenerRule
con un listener valido alla tua configurazione. Per ulteriori informazioni, consulta Creare un listener per il Network Load Balancer nella Network Load Balancer User Guide - Gruppo target non associato alle regole del listener
-
Messaggio di errore:
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.
Soluzione: sia il gruppo target principale che il gruppo target alternativo devono essere associati alla regola del listener di produzione o alla regola del listener di test. Aggiorna la configurazione del load balancer per assicurarti che entrambi i gruppi target siano associati correttamente alle regole del listener.
- Regola di test listener mancante con un Application Load Balancer
-
Messaggio di errore:
For Application LoadBalancer, testListenerRule is required when productionListenerRule is not associated with both targetGroup and alternateTargetGroup
Soluzione: quando si utilizza un Application Load Balancer, se entrambi i gruppi target non sono associati alla regola del listener di produzione, è necessario specificare una regola del listener di test. Aggiungi una
testListenerRule
alla tua configurazione e assicurati che entrambi i gruppi target siano associati alla regola del listener di produzione o di test. Per ulteriori informazioni, consulta Listeners for your Application Load Balancers nella Application Load Balancer User Guide.
Errori di configurazione del gruppo target
I seguenti problemi si riferiscono alla configurazione errata del gruppo target per le blue/green distribuzioni.
- Regola dei gruppi target multipli con traffico in listener
-
Messaggio di errore:
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
Soluzione: prima di iniziare una blue/green distribuzione, assicurati che solo un gruppo target riceva traffico (con un peso diverso da zero) secondo la regola del listener. Aggiorna la configurazione delle regole del listener per impostare il peso su zero per qualsiasi gruppo target che non dovrebbe ricevere traffico.
- Duplica i gruppi target tra le voci del sistema di bilanciamento del carico
-
Messaggio di errore:
Duplicate targetGroupArn found: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myecs-targetgroup/abc123
Soluzione: ogni ARN del gruppo target deve essere univoco per tutte le voci del load balancer nella definizione del servizio. Rivedi la configurazione e assicurati di utilizzare gruppi target diversi per ogni voce del sistema di bilanciamento del carico.
- Gruppo target inaspettato nella regola del listener di produzione
-
Messaggio di errore:
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
Soluzione: la regola del listener di produzione inoltra il traffico a un gruppo target non specificato nella definizione del servizio. Assicurati che la regola del listener sia configurata per inoltrare il traffico solo ai gruppi target specificati nella definizione del servizio.
Per ulteriori informazioni, consulta le azioni future nella Guida per l'utente di Application Load Balancer.
Errori di configurazione del tipo di sistema di bilanciamento del carico
I seguenti problemi riguardano una configurazione errata del tipo di sistema di bilanciamento del carico per blue/green le distribuzioni.
- Combinazione di configurazioni Classic Load Balancer e Application Load Balancer o Network Load Balancer
-
Messaggio di errore:
All loadBalancers must be strictly either ELBv1 (defining loadBalancerName) or ELBv2 (defining targetGroupArn)
Nota
I Classic Load Balancer sono la generazione precedente di sistemi di bilanciamento del carico di Elastic Load Balancing. Ti consigliamo di eseguire la migrazione a un sistema di bilanciamento del carico di ultima generazione. Per ulteriori informazioni, consulta Migrare il Classic Load Balancer.
Soluzione:. Utilizza tutti i Classic Load Balancer o tutti gli Application Load Balancer e Network Load Balancer.
Per Application Load Balancer e Network Load Balancer, specificare solo il campo.
targetGroupArn
- Utilizzo della configurazione avanzata con un Classic Load Balancer
-
Messaggio di errore:
advancedConfiguration field is not allowed with ELBv1 loadBalancers
Soluzione: la configurazione avanzata per le blue/green implementazioni è supportata solo con Application Load Balancer e Network Load Balancer. Se si utilizza un Classic Load Balancer (specificato con
loadBalancerName
), non è possibile utilizzare iladvancedConfiguration
campo. Passa a un Application Load Balancer o rimuovi iladvancedConfiguration
campo. - Configurazione avanzata incoerente tra i sistemi di bilanciamento del carico
-
Messaggio di errore:
Either all or none of the provided loadBalancers must have advancedConfiguration defined
Soluzione: se utilizzi più sistemi di bilanciamento del carico, devi
advancedConfiguration
definirli tutti o nessuno. Aggiorna la configurazione per garantire la coerenza tra tutte le voci del sistema di bilanciamento del carico. - Manca la configurazione avanzata con distribuzione blue/green
-
Messaggio di errore:
advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategy
Soluzione: quando si utilizza una strategia di blue/green distribuzione con Application Load Balancers, è necessario specificare il
advancedConfiguration
campo per tutte le voci relative al load balancer. Aggiungi il necessarioadvancedConfiguration
alla configurazione del load balancer.
Problemi di autorizzazione
I seguenti problemi riguardano le autorizzazioni insufficienti per le blue/green distribuzioni.
- Manca una politica di fiducia sul ruolo dell'infrastruttura
-
Messaggio di errore:
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'.
Soluzione: il ruolo IAM specificato per la gestione delle risorse del load balancer non dispone della politica di attendibilità corretta. Aggiorna la policy di fiducia del ruolo per consentire al servizio di assumere il ruolo. La politica di fiducia deve includere:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- Autorizzazioni di lettura mancanti per il ruolo di load balancer
-
Messaggio di errore:
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)
Soluzione: il ruolo IAM utilizzato per la gestione delle risorse del load balancer non è autorizzato a leggere le informazioni sullo stato dell'obiettivo. Aggiungi l'
elasticloadbalancing:DescribeTargetHealth
autorizzazione alla politica del ruolo. Per informazioni sulle autorizzazioni Elastic Load Balancing, vedere. Ruolo IAM dell'infrastruttura Amazon ECS per i sistemi di bilanciamento del carico - Autorizzazioni di scrittura mancanti per il ruolo di bilanciamento del carico
-
Messaggio di errore:
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)
Soluzione: il ruolo IAM utilizzato per la gestione delle risorse del load balancer non è autorizzato a registrare gli obiettivi. Aggiungi l'
elasticloadbalancing:RegisterTargets
autorizzazione alla politica del ruolo. Per informazioni sulle autorizzazioni Elastic Load Balancing, vedere. Ruolo IAM dell'infrastruttura Amazon ECS per i sistemi di bilanciamento del carico - Autorizzazione mancante per modificare le regole del listener
-
Messaggio di errore:
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
Soluzione: il ruolo IAM utilizzato per la gestione delle risorse del load balancer non dispone dell'autorizzazione per modificare i listener. Aggiungi l'
elasticloadbalancing:ModifyListener
autorizzazione alla politica del ruolo. Per informazioni sulle autorizzazioni Elastic Load Balancing, vedere. Ruolo IAM dell'infrastruttura Amazon ECS per i sistemi di bilanciamento del carico
Per le blue/green distribuzioni, ti consigliamo di allegare la policy AmazonECS-ServiceLinkedRolePolicy
gestita al tuo ruolo di infrastruttura, che include tutte le autorizzazioni necessarie per la gestione delle risorse di bilanciamento del carico.
Problemi relativi al Lifecycle Hook
I seguenti problemi riguardano gli hook del ciclo di vita nelle distribuzioni. blue/green
- Politica di attendibilità errata sul ruolo Lambda hook
-
Messaggio di errore:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to assume role arn:aws:iam::123456789012:role/Admin
Soluzione: il ruolo IAM specificato per l'hook del ciclo di vita Lambda non dispone della policy di attendibilità corretta. Aggiorna la policy di fiducia del ruolo per consentire al servizio di assumere il ruolo. La politica di fiducia deve includere:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- L'hook Lambda restituisce lo stato FAILED
-
Messaggio di errore:
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.
Soluzione: la funzione Lambda specificata come hook del ciclo di vita ha restituito lo stato FAILED. Controlla i log delle funzioni Lambda nei log di Amazon CloudWatch per determinare il motivo dell'errore e aggiorna la funzione per gestire correttamente l'evento di distribuzione.
- Autorizzazione mancante per richiamare la funzione Lambda
-
Messaggio di errore:
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
Soluzione: il ruolo IAM utilizzato per l'hook del ciclo di vita Lambda non è autorizzato a richiamare la funzione Lambda. Aggiungi l'
lambda:InvokeFunction
autorizzazione alla politica del ruolo per la funzione Lambda specifica ARN. Per informazioni sulle autorizzazioni Lambda, vedere. Autorizzazioni richieste per le funzioni Lambda nelle distribuzioni Amazon ECS blue/green - Timeout della funzione Lambda o risposta non valida
-
Messaggio di errore:
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
Soluzione: la funzione Lambda è scaduta o ha restituito una risposta non valida. Assicurati che la funzione Lambda restituisca una risposta valida con un
hookStatus
campo impostato su oSUCCEEDED
.FAILED
Inoltre, verifica che il timeout della funzione Lambda sia impostato in modo appropriato per la tua logica di convalida. Per ulteriori informazioni, consulta Lifecycle hook per le implementazioni di servizi Amazon ECS.Esempio di risposta Lambda valida:
{ "hookStatus": "SUCCEEDED", "reason": "Validation passed" }