

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 una release Canary
<a name="create-canary-deployment"></a>

Puoi creare una distribuzione di una release Canary quando distribuisci l'API con [impostazioni Canary](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDeployment.html#canarySettings) come input aggiuntivo all'operazione di [creazione della distribuzione](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDeployment.html). 

Puoi anche creare una distribuzione di una release Canary da una distribuzione non Canary esistente effettuando una richiesta [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html) per aggiungere le impostazioni Canary nella fase.

Quando crei una distribuzione di una release non Canary, puoi specificare un nome di fase non esistente. Se la fase specificata non esiste, API Gateway la crea. Non puoi tuttavia specificare un nome di fase non esistente quando crei una distribuzione di una release Canary. In questo caso si verificherà un errore e API Gateway non creerà una distribuzione della release Canary. 

 Puoi creare una distribuzione Canary Release in API Gateway utilizzando la console API Gateway AWS CLI, o un AWS SDK.

**Topics**
+ [Creare una distribuzione Canary utilizzando la console API Gateway](#create-canary-deployment-using-console)
+ [Crea una distribuzione Canary utilizzando il AWS CLI](#create-canary-deployment-using-cli)

## Creare una distribuzione Canary utilizzando la console API Gateway
<a name="create-canary-deployment-using-console"></a>

Per usare la console API Gateway per creare una distribuzione di una release Canary, segui queste istruzioni:<a name="to-create-canary-release-on-new-deployment"></a>

**Per creare la distribuzione di una release Canary iniziale**

1.  Accedere alla console API Gateway.

1.  Crea una nuova REST API o scegline una esistente.

1.  Nel riquadro di navigazione principale scegli **Risorse**, quindi seleziona **Distribuisci l'API**. Seguire le istruzioni visualizzate sullo schermo in **Deploy API (Distribuisci API)** per distribuire l'API in una nuova fase. 

   Al momento, l'API è stata distribuita in una fase della release di produzione. Configura quindi le impostazioni Canary nella fase e, se necessario, abilita il caching, imposta le variabili di fase o configura i log degli accessi o delle esecuzioni dell'API.

1.  **Per abilitare la memorizzazione nella cache delle API o associare un ACL AWS WAF web allo stage, nella sezione **Dettagli dello stage**, scegli Modifica.** Per ulteriori informazioni, consulta [Impostazioni della cache per REST APIs in API Gateway](api-gateway-caching.md) o [Per associare un ACL AWS WAF Web a uno stadio API Gateway API utilizzando la console API Gateway](apigateway-control-access-aws-waf.md#apigateway-control-access-aws-waf-console).

1.  Per configurare la registrazione degli accessi o delle esecuzioni, scegli **Modifica** nella sezione **Log e tracciamento** e segui le istruzioni visualizzate sullo schermo. Per ulteriori informazioni, consulta [Configurare la CloudWatch registrazione per REST APIs in API Gateway](set-up-logging.md).

1. Per impostare le variabili di fase, scegli la scheda **Variabili di fase** e segui le istruzioni visualizzate sullo schermo per aggiungere o modificare le variabili di fase. Per ulteriori informazioni, consulta [Utilizzo delle variabili di fase per una REST API in Gateway API](stage-variables.md).

1.  Scegli la scheda **Canary**, quindi seleziona **Crea Canary**. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda **Canary**.

1.  In **Impostazioni di Canary**, inserisci in **Canary** la percentuale di richieste da deviare al Canary.

1. Se lo desideri, seleziona **Cache della fase** per attivare il caching per la release Canary. La cache non è disponibile per la release Canary fino a quando non viene abilitato il caching dell'API.

1. Per sovrascrivere le variabili di fase esistenti, inserisci in **Sostituzione canary** un nuovo valore per la variabile di fase.

Dopo l'inizializzazione della release Canary nella fase di distribuzione, puoi modificare l'API e testare le modifiche. Puoi ridistribuire l'API nella stessa fase in modo che sia la versione di base che quella aggiornata siano accessibili tramite la stessa fase. Di seguito viene descritto come fare. <a name="to-deploy-latest-api-to-canary-release"></a>

**Per distribuire la versione API più recente in una release Canary**

1.  Con ogni aggiornamento dell'API scegli **Distribuisci l'API.**

1.  In **Distribuisci l'API** scegli la fase contenente un canary nell'elenco a discesa **Fase della distribuzione**. 

1.  (Facoltativo) Immetti una descrizione in **Descrizione distribuzione**. 

1.  Scegliere **Deploy (Distribuisci)** per inviare la versione API più recente alla release Canary.

1.  Se lo desideri, riconfigura le impostazioni della fase, i log o le impostazioni Canary, come descritto in [Per creare la distribuzione di una release Canary iniziale](#to-create-canary-release-on-new-deployment).

 La release Canary punta ora alla versione più recente, mentre la release di produzione continua a puntare alla versione iniziale dell'API. Per [https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#canarySettings](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#canarySettings) è ora presente un nuovo valore **deploymentId**, mentre la fase ha ancora il valore [https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#deploymentId](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#deploymentId) iniziale. In background la console chiama [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html).

## Crea una distribuzione Canary utilizzando il AWS CLI
<a name="create-canary-deployment-using-cli"></a>

**Per creare una distribuzione canary per una nuova fase**

1. Utilizza il seguente comando [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html) per creare un’implementazione con due variabili di fase, ma senza un canary:

   ```
   aws apigateway create-deployment \
       --variables sv0=val0,sv1=val1 \
       --rest-api-id abcd1234 \
       --stage-name 'prod'
   ```

   L'output sarà simile al seguente:

   ```
   {
       "id": "du4ot1", 
       "createdDate": 1511379050
   }
   ```

1. Utilizza il seguente comando [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html) per creare una distribuzione canary per la fase `prod`:

   ```
   aws apigateway create-deployment \
       --rest-api-id abcd1234 \
       --canary-settings percentTraffic=10.5,stageVariableOverrides={sv1='val2',sv2='val3'},useStageCache=false \
       --stage-name 'prod'
   ```

   L'output sarà simile al seguente:

   ```
   {
       "id": "a6rox0", 
       "createdDate": 1511379433
   }
   ```

   Il valore `id` della distribuzione risultante identifica la versione di verifica dell'API per la release Canary. Di conseguenza, la fase associata è abilitata per la release Canary.

1. (Facoltativo) Utilizza il seguente comando [get-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-stage.html) per visualizzare la rappresentazione della fase:

   ```
   aws apigateway get-stage --rest-api-id acbd1234 --stage-name prod
   ```

   Di seguito è illustrata una rappresentazione dell'oggetto `Stage` come output del comando:

   ```
   {
       "stageName": "prod", 
       "variables": {
           "sv0": "val0", 
           "sv1": "val1"
       }, 
       "cacheClusterEnabled": false, 
       "cacheClusterStatus": "NOT_AVAILABLE", 
       "deploymentId": "du4ot1", 
       "lastUpdatedDate": 1511379433, 
       "createdDate": 1511379050, 
       "canarySettings": {
           "percentTraffic": 10.5, 
           "deploymentId": "a6rox0", 
           "useStageCache": false, 
           "stageVariableOverrides": {
               "sv2": "val3", 
               "sv1": "val2"
           }
       }, 
       "methodSettings": {}
   }
   ```

   In questo esempio la versione di base dell'API usa le variabili di fase `{"sv0":val0", "sv1":val1"}`, mentre la versione di test usa le variabili di fase `{"sv1":val2", "sv2":val3"}`. Sia la release di produzione che la release Canary usano la stessa variabile di fase `sv1`, ma con valori diversi, `val1` e `val2`, rispettivamente. La variabile di fase `sv0` viene usata unicamente nella release di produzione e la variabile di fase `sv2` viene usata unicamente nella release Canary. 

È anche possibile creare una distribuzione di rilascio canary da un’implementazione standard esistente aggiornando la fase per abilitare un canary.

**Per creare una distribuzione di rilascio canary da un’implementazione esistente**

1. Utilizza il comando [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html) per creare un’implementazione senza un canary:

   ```
   aws apigateway create-deployment \
       --variables sv0=val0,sv1=val1 \  
       --rest-api-id abcd1234 \
       --stage-name 'beta'
   ```

1. Utilizza il comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) per aggiornare la fase e abilitare un canary:

   ```
   aws apigateway update-stage \
       --rest-api-id abcd1234 \
       --stage-name 'beta' \
       --patch-operations '[{
               "op": "replace",
               "value": "0.0",
               "path": "/canarySettings/percentTraffic"
           }, {
               "op": "copy",
               "from": "/canarySettings/stageVariableOverrides",
               "path": "/variables"
           }, {
               "op": "copy",
               "from": "/canarySettings/deploymentId",
               "path": "/deploymentId"
           }]'
   ```

   L'output sarà simile al seguente:

   ```
   {
       "stageName": "beta", 
       "variables": {
           "sv0": "val0", 
           "sv1": "val1"
       }, 
       "cacheClusterEnabled": false, 
       "cacheClusterStatus": "NOT_AVAILABLE", 
       "deploymentId": "cifeiw", 
       "lastUpdatedDate": 1511381930, 
       "createdDate": 1511380879, 
       "canarySettings": {
           "percentTraffic": 10.5, 
           "deploymentId": "cifeiw", 
           "useStageCache": false, 
           "stageVariableOverrides": {
               "sv2": "val3", 
               "sv1": "val2"
           }
       }, 
       "methodSettings": {}
   }
   ```

   Poiché è stato abilitato un canary in una versione esistente dell’API, sia il rilascio di produzione (`Stage`) sia il rilascio canary (`canarySettings`) puntano alla stessa implementazione. Dopo aver modificato l'API e averla distribuita di nuovo in questa fase, la nuova versione sarà nella release Canary, mentre la versione di base rimane nella release di produzione. Ciò si manifesta nell'evoluzione della fase quando il valore `deploymentId` nella release Canary viene aggiornato al valore `id` della nuova distribuzione e il valore `deploymentId` nella release di produzione rimane invariato.