

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 di Amazon ECS Canary
<a name="deploy-canary-service"></a>

Utilizzando le implementazioni di Amazon ECS canary, puoi trasferire una piccola percentuale di traffico verso la nuova revisione del servizio («canary»). Convalida la distribuzione e quindi sposta il traffico rimanente tutto in una volta dopo un intervallo specificato. Questo approccio consente di testare nuove funzionalità con rischi minimi prima della distribuzione completa.

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

Eseguite le seguenti operazioni prima di iniziare una distribuzione di Canary.

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. Le implementazioni di Amazon ECS canary richiedono che il servizio utilizzi una delle seguenti funzionalità: Configurazione delle risorse appropriate.
   + Application Load Balancer: per ulteriori informazioni, consultare [Risorse Application Load Balancer per implementazioni blue/green lineari e canarie](alb-resources-for-blue-green.md).
   + Network Load Balancer: per ulteriori informazioni, consultare [Risorse Network Load Balancer per Amazon ECS blue/green, distribuzioni lineari e canarie](nlb-resources-for-blue-green.md).
   + Service Connect: per ulteriori informazioni, consultare [Risorse Service Connect per distribuzioni Amazon ECS blue/green, lineari e canarie](service-connect-blue-green.md).

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

Puoi utilizzare la console o il AWS CLI per creare un servizio di distribuzione Amazon ECS canary.

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

1. Apri la console all'indirizzo. [ https://console.aws.amazon.com/ecs/v2 ](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-canary-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-canary-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. In ** Configurazione di distribuzione**, configura le impostazioni di distribuzione di Canary:

   1. Per la strategia ** ** di distribuzione, scegli Canary. ** **

   1. Per la percentuale delle ** Canarie**, inserisci la percentuale di traffico da passare alla revisione del servizio verde nella prima fase (ad esempio, il 10% per il traffico iniziale delle Canarie).

   1. Per il tempo di attesa ** delle Canarie**, inserisci il tempo di attesa in minuti prima di spostare il traffico rimanente verso la revisione del servizio verde.

   1. Per Tempo ** di attesa**, inserisci il numero di minuti in cui entrambe le revisioni del servizio blu e verde verranno eseguite contemporaneamente dopo l'ultimo spostamento del traffico prima che la revisione blu sia terminata.

   1. (Facoltativo) Configura gli hook del ciclo di vita in modo che vengano eseguiti in fasi specifiche dell'implementazione. In ** Deployment lifecycle hooks**, scegli Aggiungi. ** **

      Per i ganci Lambda:
      + Per Tipo ** di destinazione**, scegli ** Lambda. **
      + Per **Funzione Lambda**, immettere il nome della funzione o ARN.
      + Per **Ruolo**, selezionare il ruolo IAM che ha il permesso di invocare la funzione Lambda.
      + Per **Fasi del ciclo di vita**, selezionare le fasi in cui deve essere eseguita la funzione Lambda.

      Per i ganci di pausa:
      + Per Tipo di ** obiettivo**, scegli ** Pausa**.
      + Per le fasi ** del ciclo di vita**, seleziona le fasi in cui la distribuzione deve essere sospesa.
      + (Facoltativo) Per ** Timeout**, configura la durata e l'azione del timeout.

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 allo stato dell'ultima distribuzione completata quando un CloudWatch allarme imposta la distribuzione su uno stato non riuscito, 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 un namespace creato separatamente nel tuo Account AWS o di uno spazio dei nomi Regione AWS nella stessa regione condiviso con il tuo account tramite (). AWS Resource Access Manager AWS RAM Per ulteriori informazioni sui namespace condivisi, consulta la condivisione AWS Cloud Map dei namespace nella Guida per gli sviluppatori [ Cross-account AWS Cloud Map . ](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) *AWS Cloud Map *

   1. (Facoltativo) Configura le regole di intestazione del traffico di test per le distribuzioni Canary. 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 del contenitore a Logs. CloudWatch Le altre opzioni del driver di registro sono configurate utilizzando AWS FireLens. Per ulteriori informazioni, consulta [Invia i log di Amazon ECS a un AWS servizio o 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 contenitori a CloudWatch Logs. Vengono fornite le opzioni predefinite del 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. Le opzioni predefinite dei driver di log sono impostate di default, ma è necessario specificare un nome di bucket Amazon S3 valido.

1. (Facoltativo) Configura il bilanciamento ** del carico ** per l'implementazione di Canary.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/deploy-canary-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 **Crea**.

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

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

   Sostituisci i con i tuoi valori. {{user-input}}

   ```
   {
     "serviceName": "myCanaryService",
     "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": "CANARY",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "canaryConfiguration" : {
           "canaryPercent" : 5.0,
           "canaryBakeTime" : 10
       },
       "bakeTimeInMinutes": 10,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       }
     },
     "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-canary-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Esegui `create-service`.

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

------

## Fasi successive
<a name="deploy-canary-service-next-steps"></a>

Dopo aver configurato la distribuzione di Canary, completa questi passaggi:
+ 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 schema canario:
  + La revisione del servizio verde viene creata e aumentata verticalmente
  + Una piccola percentuale di traffico (canarino) viene spostata sulla versione verde
  + Il sistema attende l'intervallo canarino specificato
  + Il traffico rimanente viene spostato contemporaneamente sulla versione verde
  + Dopo il tempo di incorporamento, la revisione blu viene interrotta