

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

# Implementare le implementazioni canary Lambda utilizzando un alias ponderato
<a name="configuring-alias-routing"></a>

È possibile utilizzare un alias ponderato per suddividere il traffico tra due diverse [versioni](configuration-versions.md) della stessa funzione. Con questo approccio, puoi testare nuove versioni delle tue funzioni con una piccola percentuale di traffico e ripristinarle rapidamente se necessario. Questa operazione è nota come [implementazione canary](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html). Le implementazioni Canary differiscono dalle blue/green distribuzioni in quanto espongono la nuova versione solo a una parte delle richieste anziché spostare tutto il traffico contemporaneamente.

È possibile puntare un alias a un massimo di due versioni della funzione Lambda. Le versioni devono soddisfare i seguenti criteri:
+ Entrambe le versioni devono disporre dello stesso [ruolo di esecuzione](lambda-intro-execution-role.md).
+ Entrambe le versioni devono avere la stessa configurazione della [coda dead-letter](invocation-async-retain-records.md#invocation-dlq) o nessuna configurazione della coda dead-letter.
+ Entrambe le versioni devono essere pubblicate. L'alias non può puntare a `$LATEST`.

**Nota**  
Lambda utilizza un modello probabilistico semplice per distribuire il traffico tra le due versioni delle funzioni. A livelli di traffico bassi, è possibile che si verifichi una variazione elevata tra la percentuale di traffico configurata e quella effettiva in ciascuna versione. Se la tua funzione utilizza la concorrenza con provisioning, puoi evitare [invocazioni spillover](monitoring-metrics-types.md#invocation-metrics) configurando un numero maggiore di istanze di concorrenza sottoposte a provisioning durante il periodo in cui il routing degli alias è attivo. 

## Creare un alias ponderato
<a name="create-weighted-alias"></a>

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

**Per configurare il routing utilizzando la console**
**Nota**  
Verificare che la funzione abbia almeno due versioni pubblicate. Per creare versioni aggiuntive, seguire le istruzioni in [Creazione di versioni delle funzioni](configuration-versions.md#configuration-versions-config).

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere una funzione.

1. Scegliere **Aliases (Alias)** e quindi **Create alias (Crea alias)**.

1. Nella pagina **Create alias (Crea alias)**, eseguire le operazioni seguenti:

   1. Immettere un **Name (Nome)** per la query.

   1. (Facoltativo) Immettere una **Description (Descrizione)** per l'alias.

   1. Per **Version (Versione)**, scegliere la prima versione della funzione a cui si desidera puntare l'alias.

   1. Espandere **Weighted alias (Alias ponderato)**.

   1. In **Additional version (Versione aggiuntiva)**, scegliere la seconda versione della funzione a cui si desidera puntare l'alias.

   1. Per **Weight (%) (Ponderazione %)**, digitare un valore di ponderazione per la funzione. *Weight* (Ponderazione) è la percentuale di traffico assegnata alla versione quando l'alias viene invocato. La prima versione riceve la ponderazione residua. Ad esempio se si specifica il 10 percento per **Additional version (Versione aggiuntiva)**, alla prima versione viene automaticamente assegnato il 90 percento.

   1. Scegli **Save** (Salva).

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

Utilizzate i comandi [create-alias e [AWS CLI update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html) per configurare i pesi del traffico tra due versioni di funzioni. Quando crei o aggiorni l'alias, specifica il peso del traffico nel parametro `routing-config`.

Nell'esempio seguente viene creato un alias della funzione Lambda denominato **routing-alias** che punta alla versione 1 della funzione. La versione 2 della funzione riceve il 3% del traffico. Il restante 97 percento del traffico viene instradato alla versione 1.

```
aws lambda create-alias \
  --name routing-alias \
  --function-name my-function \
  --function-version 1  \
  --routing-config AdditionalVersionWeights={"2"=0.03}
```

Utilizza il comando `update-alias` per aumentare la percentuale di traffico in ingresso alla versione 2. Nell'esempio seguente, aumenti il traffico al 5%.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function \
  --routing-config AdditionalVersionWeights={"2"=0.05}
```

Per instradare tutto il traffico alla versione 2, utilizza il comando `update-alias` per modificare la proprietà `function-version` in modo che l'alias punti alla versione 2. Il comando reimposta anche la configurazione di routing.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function  \
  --function-version 2 \
  --routing-config AdditionalVersionWeights={}
```

 I AWS CLI comandi nei passaggi precedenti corrispondono alle seguenti operazioni dell'API Lambda:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)

------

## Determinazione della versione richiamata
<a name="determining-routing-version"></a>

Quando configuri i pesi del traffico tra due versioni di funzioni, esistono due modi per determinare la versione della funzione Lambda invocata:
+ **CloudWatch Registri**: Lambda emette automaticamente `START` una voce di registro che contiene l'ID di versione richiamato per ogni chiamata di funzione. Esempio:

  `START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version: 2` 

  Per le invocazioni di alias Lambda utilizza la dimensione `ExecutedVersion` per filtrare i dati del parametro dalla versione richiamata. Per ulteriori informazioni, consulta [Visualizzazione di parametri per le funzioni Lambda](monitoring-metrics-view.md).
+ **Payload della risposta (invocazioni sincrone)** - Le risposte a invocazioni sincrone della funzione includono un'intestazione `x-amz-executed-version` per indicare quale versione della funzione è stata invocata.

## Creare una implementazione continua con alias ponderati
<a name="lambda-rolling-deployments"></a>

Usa AWS CodeDeploy and AWS Serverless Application Model (AWS SAM) per creare una distribuzione continua che rilevi automaticamente le modifiche al codice della funzione, distribuisca una nuova versione della funzione e aumenti gradualmente la quantità di traffico che fluisce verso la nuova versione. La quantità di traffico e la velocità dell'aumento sono parametri che è possibile configurare.

In una distribuzione continua, AWS SAM esegue le seguenti attività:
+ Configura la funzione Lambda e crea un alias. La configurazione del routing con alias ponderati è la funzionalità che implementa l'implementazione in sequenza.
+ Crea un' CodeDeploy applicazione e un gruppo di distribuzione. Il gruppo di distribuzione gestisce l'implementazione in sequenza e il rollback (se necessario).
+ Rileva quando viene creata una nuova versione della funzione Lambda.
+ Trigger CodeDeploy per avviare la distribuzione della nuova versione.

### Modello di esempio AWS SAM
<a name="sam-template"></a>

Nell'esempio seguente viene illustrato un [modello AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html) per una semplice distribuzione in sequenza. 

```
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: A sample SAM template for deploying Lambda functions

Resources:
# Details about the myDateTimeFunction Lambda function
  myDateTimeFunction:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Handler: myDateTimeFunction.handler
      Runtime: nodejs24.x
# Creates an alias named "live" for the function, and automatically publishes when you update the function.
      AutoPublishAlias: live
      DeploymentPreference:
# Specifies the deployment configuration
          Type: Linear10PercentEvery2Minutes
```

Questo modello definisce una funzione Lambda denominata `myDateTimeFunction` con le seguenti proprietà. 

**AutoPublishAlias **  
La proprietà `AutoPublishAlias` crea un alias denominato `live`. Inoltre, il framework AWS SAM rileva automaticamente quando viene salvato il nuovo codice per la funzione. Il framework pubblica quindi una nuova versione di funzione e aggiorna l'alias `live` in modo che punti alla nuova versione.

**DeploymentPreference**  
La `DeploymentPreference` proprietà determina la velocità con cui l' CodeDeploy applicazione sposta il traffico dalla versione originale della funzione Lambda alla nuova versione. Il valore `Linear10PercentEvery2Minutes` sposta un ulteriore dieci percento del traffico alla nuova versione ogni due minuti.   
Per l'elenco delle configurazioni di distribuzione predefinite, consulta [Configurazioni di distribuzione](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html). 

Per ulteriori informazioni su come creare distribuzioni continue con CodeDeploy and AWS SAM, consulta quanto segue:
+ [Tutorial: Implementa una funzione CodeDeploy Lambda aggiornata con e AWS Serverless Application Model](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam.html)
+ [Distribuzione graduale di applicazioni serverless con AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html)