Risoluzione dei problemi relativi alle implementazioni di Amazon ECS blue/green - Amazon Elastic Container Service

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 appaiono immediatamente in risposta a chiamate API CreateService o UpdateService.

  • Percorso asincrono: errori che appaiono nel campo statusReason di DescribeServiceDeployments e causano un rollback dell'implementazione

Suggerimento

Puoi utilizzarlo Server MCP Amazon ECS con gli assistenti AI per monitorare le implementazioni e risolvere i problemi di implementazione utilizzando il linguaggio naturale.

Problemi di configurazione del bilanciatore 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 di destinazione e dei tipi di bilanciatore del carico è essenziale per implementazioni di successo. Questa sezione tratta i problemi comuni di configurazione del load balancer che possono causare il fallimento delle distribuzioni. blue/green

Quando si risolvono i problemi relativi al bilanciatore del carico, è importante comprendere la relazione tra le regole dei listener e i gruppi di destinazione. In una distribuzione: blue/green

  • La regola del listener di produzione indirizza il traffico verso la revisione del servizio attualmente attiva (blu)

  • La regola del listener di test può essere utilizzata per convalidare la nuova revisione del servizio (verde) prima di spostare il traffico di produzione

  • I gruppi di destinazione vengono utilizzati per registrare le istanze di container di ogni revisione del servizio

  • Durante l'implementazione, il traffico viene gradualmente spostato dalla revisione del servizio blu alla revisione del servizio verde modificando i pesi dei gruppi di destinazione nelle regole del listener

Errori di configurazione delle regole del listener

I seguenti problemi riguardano la configurazione errata delle regole del listener per le blue/green distribuzioni.

Utilizzo di un ARN del listener di Application Load Balancer anziché di uno della regola del listener

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 della regola del listener per productionListenerRule e testListenerRule, non un ARN del listener. Per i Network Load Balancer, è necessario utilizzare l'ARN del listener.

Per informazioni su come trova l'ARN del listener, consultare Listener per Application Load Balancer nella Guida per l'utente di Application Load Balancer. L'ARN per una regola ha il formato arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/....

Utilizzo della stessa regola per i listener di test e di produzione

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 quello di test. Creazione di una regola separata del listener per il traffico di test che instrada verso il gruppo di destinazione del test.

Regola del listener di test 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 sia productionListenerRule che testListenerRule. Aggiungere un testListenerRule con un ARN del listener valido alla configurazione. Per ulteriori informazioni, consultare Create a listener for your Network Load Balancer nella Guida per l'utente di Network Load Balancer

Gruppo di destinazione 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 di destinazione principale che il gruppo di destinazione alternativo devono essere associati alla regola del listener di produzione o alla regola del listener di test. Aggiornare la configurazione del bilanciatore del carico per assicurarsi che entrambi i gruppi di destinazione siano associati correttamente alle regole del listener.

Regola del listener di test 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 di destinazione non sono associati alla regola del listener di produzione, è necessario specificare una regola del listener di test. Aggiungere una testListenerRule alla configurazione e assicurarsi che entrambi i gruppi di destinazione siano associati alla regola del listener di produzione o di test. Per ulteriori informazioni, consultare Listeners for your Application Load Balancers nella Guida per l'utente di Application Load Balancer.

Errori di configurazione dei gruppi di destinazione

I seguenti problemi si riferiscono alla configurazione errata del gruppo target per le distribuzioni. blue/green

Gruppi di destinazione multipli con traffico nella regola del 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. Aggiornare la configurazione della regola del listener per impostare il peso su zero per qualsiasi gruppo di destinazione che non dovrebbe ricevere traffico.

Duplicare i gruppi di destinazione tra le voci del bilanciatore del carico

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

Soluzione: ogni ARN del gruppo di destinazione deve essere univoco per tutte le voci del bilanciatore del carico nella definizione del servizio. Rivedere la configurazione e assicurarsi di utilizzare gruppi di destinazione diversi per ogni voce del bilanciatore del carico.

Gruppo di destinazione imprevisto 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 di destinazione non specificato nella definizione del servizio. Assicurarsi che la regola del listener sia configurata per inoltrare il traffico solo ai gruppi di destinazione specificati nella definizione del servizio.

Per ulteriori informazioni, consultare forward actions nella Guida per l'utente per Application Load Balancer.

Errori di configurazione del tipo di bilanciatore del carico

I seguenti problemi riguardano una configurazione errata del tipo di sistema di bilanciamento del carico per le distribuzioni. blue/green

Combinare configurazioni di Classic Load Balancer, 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 bilanciatori del carico dal bilanciamento del carico elastico. Consigliamo di eseguire la migrazione a un bilanciatore del carico di generazione attuale. Per ulteriori informazioni, consultare Migrate your Classic Load Balancer.

Soluzione:. Utilizzare tutti Classic Load Balancer o tutti 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 il campo advancedConfiguration. Passare a un Application Load Balancer o rimuovere il campo advancedConfiguration.

Configurazione avanzata incoerente tra i bilanciatori del carico

Messaggio di errore: Either all or none of the provided loadBalancers must have advancedConfiguration defined

Soluzione: se si utilizzano più bilanciatori del carico, è necessario definire advancedConfiguration per tutti o nessuno. Aggiornare la configurazione per garantire la coerenza tra tutte le voci del bilanciatore del carico.

Manca blue/green la configurazione avanzata con distribuzione

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. Aggiungere la necessaria advancedConfiguration alla configurazione del bilanciatore del carico.

Problemi a livello di autorizzazioni

I seguenti problemi riguardano le autorizzazioni insufficienti per le distribuzioni. blue/green

Policy di attendibilità mancante 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 bilanciatore del carico non dispone della policy di attendibilità corretta. Aggiornare la policy di attendibilità del ruolo per consentire al servizio di assumere tale ruolo. La policy di attendibilità deve includere:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Autorizzazioni di lettura mancanti per il ruolo di bilanciatore del carico

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 bilanciatore del carico non è autorizzato a leggere le informazioni di integrità della destinazione. Aggiungere l'autorizzazione elasticloadbalancing:DescribeTargetHealth alla policy del ruolo. Per informazioni sulle autorizzazioni di bilanciamento del carico elastico, consultare Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico.

Autorizzazioni di scrittura mancanti sul ruolo di bilanciatore 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 bilanciatore del carico non dispone dell'autorizzazione per registrare le destinazioni. Aggiungere l'autorizzazione elasticloadbalancing:RegisterTargets alla policy del ruolo. Per informazioni sulle autorizzazioni di bilanciamento del carico elastico, consultare Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori 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 bilanciatore del carico non dispone dell'autorizzazione per modificare i listener. Aggiungere l'autorizzazione elasticloadbalancing:ModifyListener alla policy del ruolo. Per informazioni sulle autorizzazioni di bilanciamento del carico elastico, consultare Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico.

Per le blue/green distribuzioni, si consiglia di allegare la policy AmazonECS-ServiceLinkedRolePolicy gestita al proprio ruolo di infrastruttura, che include tutte le autorizzazioni necessarie per la gestione delle risorse di bilanciamento del carico.

Problemi relativi agli hook del ciclo di vita

I seguenti problemi riguardano gli agganci del ciclo di vita nelle distribuzioni. blue/green

Policy di attendibilità errata sul ruolo degli hook di Lambda

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 di Lambda non dispone della policy di attendibilità corretta. Aggiornare la policy di attendibilità del ruolo per consentire al servizio di assumerlo. La policy di attendibilità deve includere:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
L'hook di 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 invocare 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 di Lambda non dispone dell'autorizzazione per invocare la funzione Lambda. Aggiungere l'autorizzazione lambda:InvokeFunction alla policy del ruolo per l'ARN della funzione Lambda specifica. Per informazioni sulle autorizzazioni Lambda, consultare 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. Assicurarsi che la funzione Lambda restituisca una risposta valida con un campo hookStatus impostato su SUCCEEDED o FAILED. Inoltre, verificare che il timeout della funzione Lambda sia impostato in modo appropriato per la logica di convalida. Per ulteriori informazioni, consultare Hook del ciclo di vita per le implementazioni di servizi Amazon ECS.

Esempio di una risposta Lambda valida:

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