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

  • Percorso asincrono: errori che compaiono nel statusReason campo di DescribeServiceDeployments 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 e testListenerRule 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 ARN testListenerRule 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 conloadBalancerName), non è possibile utilizzare il advancedConfiguration campo. Passa a un Application Load Balancer o rimuovi il advancedConfiguration 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 necessario advancedConfiguration 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:DescribeTargetHealthautorizzazione 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:RegisterTargetsautorizzazione 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:ModifyListenerautorizzazione 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:InvokeFunctionautorizzazione 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" }