

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à.

# Creazione di una distribuzione Amazon ECS blue/green
<a name="deploy-blue-green-service"></a>

 Utilizzando le blue/green distribuzioni di Amazon ECS, puoi apportare e testare modifiche ai servizi prima di implementarle in un ambiente di produzione. 

## Prerequisiti
<a name="deploy-blue-green-service-prerequisites"></a>

Esegui le seguenti operazioni prima di iniziare una distribuzione. blue/green 

1. Configurazione delle autorizzazioni appropriate.
   + Per informazioni sulle autorizzazioni di bilanciamento del carico elastico, consultare [Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Per informazioni sulle autorizzazioni Lambda, consultare [Autorizzazioni richieste per le funzioni Lambda nelle distribuzioni Amazon ECS blue/green](blue-green-permissions.md)

1.  blue/green Le implementazioni di Amazon ECS richiedono che il servizio utilizzi una delle seguenti funzionalità: Configura le risorse appropriate.
   + Application Load Balancer: per ulteriori informazioni, consultare [Risorse Application Load Balancer per implementazioni blu/green, lineari e canary](alb-resources-for-blue-green.md).
   + Network Load Balancer: per ulteriori informazioni, consultare [Risorse Network Load Balancer per distribuzioni di Amazon ECS blu/verde, lineare e canary](nlb-resources-for-blue-green.md).
   + Service Connect: per ulteriori informazioni, consultare [Risorse Service Connect per distribuzioni Amazon ECS blu/green, lineari e canary](service-connect-blue-green.md).

1. Decidi se vuoi eseguire le funzioni Lambda per le fasi del ciclo di vita.
   + PRE\$1SCALE\$1UP
   + POST\$1SCALE\$1UP
   + TEST\$1TRAFFIC\$1SHIFT
   + POST\$1TEST\$1TRAFFIC\$1SHIFT
   + PRODUCTION\$1TRAFFIC\$1SHIFT
   + POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT

   Per ulteriori informazioni, consultare [Create a Lambda function with the console](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) nella *Guida per gli sviluppatori di AWS Lambda *.

## Procedura
<a name="deploy-blue-green-service-procedure"></a>

Puoi utilizzare la console o AWS CLI creare un blue/green servizio Amazon ECS.

------
#### [ Console ]

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Determina la risorsa da cui avviare il servizio.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

   Si apre la pagina **Crea servizio**.

1. In **Dettagli del servizio**, effettuare le seguenti operazioni:

   1. Per **Famiglia di definizione di attività**, scegliere la definizione di attività da utilizzare. Poi, per **Revisione della definizione di attività**, inserire la revisione da utilizzare.

   1. In **Nome servizio**, specificare un nome per il servizio.

1. Per eseguire il servizio in un cluster esistente, per **Cluster esistente**, scegliere il cluster. Per eseguire il servizio in un nuovo cluster, scegliere **Crea cluster** 

1. Scegliere come vengono distribuite le attività nell'infrastruttura cluster. In **Configurazione di calcolo**, scegliere l'opzione.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. Nella sezione **Configurazione implementazione**, procedere come segue.

   1. Per **Tipo di servizio**, scegliere **Replica**.

   1. Per **Attività desiderate**, immettere il numero di attività da avviare e gestire nel servizio.

   1. Per consentire ad Amazon ECS di monitorare la distribuzione delle attività tra le zone di disponibilità e ridistribuirle in caso di squilibrio, in **Ribilanciamento del servizio delle zone di disponibilità**, selezionare **Ribilanciamento del servizio della zona di disponibilità**.

   1. Per **Periodo di tolleranza dei controlli di integrità**, inserire il periodo di tempo (in secondi) durante il quale il pianificatore di servizi ignora i controlli dell'integrità dei container, di bilanciamento dei carichi elastici e di VPC Lattice non integri dopo che è stata avviata un'attività. Se non si specifica un valore per il periodo di tolleranza per il controllo dell’integrità, viene utilizzato il valore predefinito di 0.

1. 

   1. Per **Tempo di incorporamento**, inserire il numero di minuti in cui entrambe le revisioni del servizio blu e verde verranno eseguite contemporaneamente prima che la revisione blu venga terminata. Ciò consente di avere tempo per la verifica e il test.

   1. (Facoltativo) Eseguire le funzioni Lambda in fasi specifiche dell'implementazione. In **Hook del ciclo di vita di implementazione**, selezionare le fasi per eseguire gli hook del ciclo di vita.

      Per aggiungere un hook del ciclo di vita:

      1. Scegliere **Aggiungi**.

      1. Per **Funzione Lambda**, immettere il nome della funzione o ARN.

      1. Per **Ruolo**, selezionare il ruolo IAM che ha il permesso di invocare la funzione Lambda.

      1. Per **Fasi del ciclo di vita**, selezionare le fasi in cui deve essere eseguita la funzione Lambda.

1. Per configurare il modo in cui Amazon ECS rileva e gestisce gli errori di implementazione, espandi **Deployment failure detection** (Rilevamento degli errori di implementazione), quindi scegli le tue opzioni. 

   1. Per interrompere un'implementazione quando le attività non possono essere avviate, seleziona **Use the Amazon ECS deployment circuit breaker** (Usa l'interruttore automatico di implementazione di Amazon ECS).

      Per fare in modo che il software ripristini automaticamente l'implementazione all'ultimo stato di implementazione completata quando l'interruttore automatico di implementazione imposta l'implementazione su uno stato di errore, selezionare **Rollback in caso di errore**.

   1. Per interrompere una distribuzione in base alle metriche dell'applicazione, seleziona **Usa CloudWatch allarmi.** Quindi, dal **nome CloudWatch dell'allarme**, scegli gli allarmi. Per creare un nuovo allarme, vai alla CloudWatch console.

      Per fare in modo che il software ripristini automaticamente la distribuzione all'ultimo stato di distribuzione completato quando un CloudWatch allarme imposta la distribuzione **su uno stato fallito, seleziona Rollback in caso** di errori.

1. (Facoltativo) Per connettere il servizio usando Service Connect, espandere **Service Connect**, quindi specificare quanto segue:

   1.  Selezionare **Attiva Service Connect**.

   1. In **Service Connect configuration** (Configurazione Service Connect), specifica la modalità client.
      + Se il servizio esegue un'applicazione client di rete che deve connettersi solo ad altri servizi nel namespace, scegliere **Solo lato client**.
      + Se il servizio esegue un'applicazione di rete o di servizio Web, deve fornire endpoint per questo servizio e si connette ad altri servizi nel namespace, scegliere **Client e server**.

   1. Per utilizzare un namespace differente da quello del cluster predefinito, per **Namespace**, scegliere il namespace del servizio. Può trattarsi di uno spazio dei nomi creato separatamente Regione AWS nello stesso spazio dell'utente Account AWS o di uno spazio dei nomi nella stessa regione condiviso con il proprio account utilizzando (). AWS Resource Access Manager AWS RAM*Per ulteriori informazioni sugli spazi dei AWS Cloud Map nomi condivisi, consulta Condivisione dello spazio dei nomi [tra AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) account nella Guida per gli sviluppatori.AWS Cloud Map *

   1. (Facoltativo) Configura le regole di test traffic header per le distribuzioni. blue/green In **Instradamento del traffico di test**, specificare quanto segue:

      1. Selezionare **Abilita le regole di intestazione del traffico di test** per instradare richieste specifiche alla revisione del servizio verde durante il test.

      1. Per **Regole di corrispondenza di intestazione**, configurare i criteri per l'instradamento del traffico di test:
         + **Nome dell'intestazione**: inserire il nome dell'intestazione HTTP per la corrispondenza (ad esempio, `X-Test-Version` o `User-Agent`).
         + **Tipo di corrispondenza**: scegliere i criteri di corrispondenza:
           + **Corrispondenza esatta**: richieste di instradamento in cui il valore dell'intestazione corrisponde esattamente al valore specificato
           + **Intestazione presente**: richieste di instradamento che contengono l'intestazione specificata, indipendentemente dal valore
           + **Corrispondenza di schema**: richieste di instradamento in cui il valore dell'intestazione corrisponde a uno schema specificato
         + **Valore dell'intestazione** (se si utilizza la corrispondenza esatta o la corrispondenza di schema): inserire il valore o lo schema a cui far corrispondere l'intestazione.

         È possibile aggiungere più regole di corrispondenza dell'intestazione per creare una logica di instradamento complessa. Le richieste che corrispondono a una qualsiasi delle regole configurate verranno instradate alla revisione del servizio verde per essere testate.

      1. Scegliere **Aggiungi regola di intestazione** per configurare condizioni aggiuntive di corrispondenza dell'intestazione.
**Nota**  
Le regole di intestazione del traffico di test consentono di convalidare nuove funzionalità con traffico controllato prima di portare a termine l'implementazione completa. Ciò consente di testare la revisione del servizio verde con richieste specifiche (come quelle provenienti da strumenti di test interni o utenti beta) mantenendo al contempo il normale flusso di traffico verso la revisione del servizio blu.

   1. (Facoltativo) Specificare una configurazione del log. Selezionare **Usa la raccolta di log**. L'opzione predefinita invia i log dei contenitori a Logs. CloudWatch Le altre opzioni del driver di registro sono configurate utilizzando. AWS FireLens Per ulteriori informazioni, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).

      Di seguito sono riportate descrizioni più dettagliate per ogni destinazione di log di container.
      + **Amazon CloudWatch**: configura l'attività per inviare i log dei container a CloudWatch Logs. Vengono fornite le opzioni predefinite dei driver di registro, che creano un gruppo di CloudWatch log per tuo conto. Per specificare un nome del gruppo di log diverso, modifica i valori dell'opzione del driver.
      + **Amazon Data Firehose**: configura l'attività per inviare i log del container a Firehose. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Firehose. Per specificare un nome del flusso di consegna diverso, modifica i valori dell'opzione del driver.
      + **Flusso di dati Amazon Kinesis**: configura il processo per inviare log di container a Kinesis Data Streams. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Kinesis Data Streams. Per specificare un nome del flusso diverso, modifica i valori dell'opzione del driver.
      + **Amazon OpenSearch Service**: configura l'attività per inviare i log dei container a un dominio OpenSearch di servizio. Devono essere fornite le opzioni del driver di log. 
      + **Amazon S3**: configura l'attività per inviare log di container a un bucket Amazon S3. Vengono fornite le opzioni del driver di log predefinito, ma è necessario specificare un nome del bucket Amazon S3 valido.

1. (Facoltativo) Configurare il **Bilanciamento del carico** per l'implementazione blu/verde.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. (Facoltativo) Per identificare il servizio e le attività, espandi la sezione **Tags** (Tag), quindi configura i tag.

   Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag di definizione delle attività, seleziona **Attiva i tag gestiti di Amazon ECS**, quindi in **Propaga i tag da**, scegli **Definizioni di attività**.

   Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag del servizio, seleziona **Attiva i tag gestiti di Amazon ECS**, quindi in **Propaga i tag da**, scegli **Servizio**.

   Aggiungi o rimuovi un tag.
   + [Aggiungi un tag] Scegli **Add tag** (Aggiungi tag), quindi effettuare le seguenti operazioni:
     + In **Chiave**, immetti il nome della chiave.
     + In **Valore**, immetti il valore della chiave.
   + [Rimuovere un tag] Accanto al tag, scegliere **Remove tag (Rimuovi tag)**.

1. Scegli **Create** (Crea).

------
#### [ AWS CLI ]

1. Crea un archivio denominato `service-definition.json` con i seguenti contenuti.

   Sostituiscili con i tuoi valori. *user-input*

   ```
   {
     "serviceName": "myBlueGreenService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "BLUE_GREEN",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "bakeTimeInMinutes": 2,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       },
       "lifecycleHooks": [
         {
           "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample",
           "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke",
           "lifecycleStages": [
             "PRE_SCALE_UP"
           ]
         }
       ]
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Esegui `create-service`.

   *user-input*Sostituiscili con i tuoi valori.

   ```
   aws ecs create-service --cli-input-json file://service-definition.json
   ```

   In alternativa, puoi utilizzare il seguente esempio che crea un servizio di blue/green distribuzione con una configurazione di bilanciamento del carico:

   ```
   aws ecs create-service \
      --cluster "arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster" \
      --service-name "blue-green-example-service" \
      --task-definition "nginxServer:1" \
      --launch-type "FARGATE" \
      --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890,subnet-abcdef,subnet-fedcba],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \
      --desired-count 3 \
      --deployment-controller "type=ECS" \
      --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \
      --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg2/0987654321fedcba,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole}"
   ```

------

## Fasi successive
<a name="deploy-blue-green-service-next-steps"></a>
+ Aggiornare il servizio per avviare l'implementazione. Per ulteriori informazioni, consulta [Aggiornamento di un servizio Amazon ECS](update-service-console-v2.md).
+ Monitora il processo di distribuzione per assicurarti che segua lo blue/green schema:
  + La revisione del servizio verde viene creata e aumentata verticalmente
  + Il traffico di test viene instradato alla revisione verde (se configurata)
  + Il traffico di produzione viene spostato alla revisione del servizio verde
  + Dopo il tempo di incorporamento, la revisione blu viene interrotta