

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création d’un alias de fonction Lambda
<a name="configuration-aliases"></a>

Vous pouvez créer des alias pour votre fonction Lambda. Un alias Lambda est un pointeur vers une version de la fonction que vous pouvez mettre à jour. Les utilisateurs de la fonction peuvent accéder à la version de la fonction en utilisant l'alias Amazon Resource Name (ARN). Lorsque vous déployez une nouvelle version, vous pouvez mettre à jour l'alias pour utiliser la nouvelle version, ou diviser le trafic entre deux versions.

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

**Pour créer un alias à l’aide de la console**

1. Ouvrez la [page Functions](https://console.aws.amazon.com/lambda/home#/functions) (Fonctions) de la console Lambda.

1. Choisissez une fonction.

1. Sélectionnez **Alias**, puis **Create alias (Créer un alias)**.

1. Sur la page **Create alias (Créer un alias)**, procédez de la manière suivante :

   1. Renseignez le champ **Name (Nom)** pour l'alias.

   1. (Facultatif) Renseignez le champ **Description** de l'alias.

   1. Pour **Version**, choisissez une version de fonction vers laquelle vous souhaitez que l'alias pointe.

   1. (Facultatif) Pour configurer le routage sur l'alias, développez **Weighted alias (Alias pondéré)**. Pour de plus amples informations, veuillez consulter [Mise en œuvre de déploiements canary Lambda à l’aide d’un alias pondéré](configuring-alias-routing.md).

   1. Choisissez **Enregistrer**.

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

Pour créer un alias à l’aide de l’AWS Command Line Interface (AWS CLI), utilisez la commande [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html).

```
aws lambda create-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number \
  --description " "
```

Pour modifier un alias afin qu’il pointe vers une nouvelle version de la fonction, utilisez la commande [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html).

```
aws lambda update-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number
```

Pour créer un alias, utilisez la commande [delete-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-alias.html).

```
aws lambda delete-alias \
  --function-name my-function \
  --name alias-name
```

 Les commandes AWS CLI dans les étapes précédentes correspondent aux opérations d'API Lambda suivantes :
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)
+ [DeleteAlias](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteAlias.html)

------

# Utilisation d’alias Lambda dans les sources d’événements et les politiques d’autorisation
<a name="using-aliases"></a>

Chaque alias a un ARN unique. Un alias peut uniquement pointer vers une version de fonction, et non vers un autre alias. Vous pouvez mettre à jour un alias de sorte qu’il pointe vers une nouvelle version de la fonction.

Des sources d'événements telles qu'Amazon Simple Storage Service (Amazon S3) appellent votre fonction Lambda. Ces sources d'événements gèrent un mappage qui identifie la fonction à appeler lorsque des événements se produisent. Si vous spécifiez un alias de fonction Lambda dans la configuration du mappage, vous n'avez pas besoin de mettre à jour le mappage lorsque la version de la fonction change. Pour de plus amples informations, veuillez consulter [Procédure de traitement par Lambda des enregistrements provenant de sources d’événements basées sur des flux et des files d’attente](invocation-eventsourcemapping.md).

Dans une stratégie de ressources, vous pouvez accorder des autorisations en lien avec des sources d'événements à utiliser votre fonction Lambda. Si vous spécifiez un ARN d'alias dans la stratégie, vous n'avez pas besoin de mettre à jour la stratégie lorsque la version de la fonction change.

## Stratégies basées sur une ressource
<a name="versioning-permissions-alias"></a>

Vous pouvez utiliser une [stratégie basée sur les ressources](access-control-resource-based.md) pour accorder l'accès à votre fonction à un service, à une ressource ou à un compte. La portée de cette autorisation est dépendante du fait que vous appliquiez l'autorisation à un alias, à une version ou à la fonction entière. Par exemple, si vous utilisez un nom d'alias (tel que `helloworld:PROD`), l'autorisation vous permet d'appeler la fonction `helloworld` à l'aide de l'ARN d'alias (`helloworld:PROD`).

Si vous essayez d'appeler la fonction sans alias ou version spécifique, vous obtenez une erreur d'autorisation. Cette erreur d'autorisation continue de se produire même si vous tentez d'appeler directement la version de fonction associée à l'alias.

Par exemple, la commande AWS CLI suivante accorde des autorisations Amazon S3 pour appeler l'alias PROD de la fonction `helloworld` quand Amazon S3 agit pour le compte de `amzn-s3-demo-bucket`.

```
aws lambda add-permission \
  --function-name helloworld \
  --qualifier PROD \
  --statement-id 1 \
  --principal s3.amazonaws.com \
  --action lambda:InvokeFunction \
  --source-arn arn:aws:s3:::amzn-s3-demo-bucket \
  --source-account 123456789012
```

Pour de plus amples informations sur l'utilisation des noms de ressources dans les stratégies, veuillez consulter [Optimisation des sections relatives aux stratégies de Ressources et Conditions](lambda-api-permissions-ref.md).

# Mise en œuvre de déploiements canary Lambda à l’aide d’un alias pondéré
<a name="configuring-alias-routing"></a>

Vous pouvez utiliser un alias pondéré pour répartir le trafic entre deux [versions](configuration-versions.md) différentes de la même fonction. Cette approche vous permet de tester de nouvelles versions de vos fonctions avec un faible pourcentage de trafic et de revenir rapidement en arrière si nécessaire. C’est ce que l’on appelle un [déploiement canary](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html). Les déploiements Canary diffèrent blue/green des déploiements en exposant la nouvelle version à une partie seulement des demandes plutôt que de changer tout le trafic en une seule fois.

Vous pouvez faire pointer un alias vers au maximum deux versions de fonction Lambda. Les versions doivent répondre aux critères suivants :
+ Les deux versions doivent avoir le même [rôle d'exécution](lambda-intro-execution-role.md).
+ Les deux versions doivent avoir la même configuration de [file d'attente de lettres mortes](invocation-async-retain-records.md#invocation-dlq) ou aucune configuration de file d'attente de lettres mortes.
+ Les deux versions doivent être publiées. L'alias ne peut pas pointer vers `$LATEST`.

**Note**  
Lambda utilise un modèle probabiliste simple pour distribuer le trafic entre les deux versions de la fonction. Quand le niveau de trafic est faible, il se peut que vous observiez une variance élevée entre les pourcentages de trafic configuré et réel sur chaque version. Si votre fonction utilise une simultanéité approvisionnée, vous pouvez éviter des [invocations de débordement](monitoring-metrics-types.md#invocation-metrics) en configurant un plus grand nombre d’instances de simultanéité approvisionnées pendant que le routage d’alias est actif. 

## Création d’un alias pondéré
<a name="create-weighted-alias"></a>

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

**Pour configurer le routage sur un alias à l’aide de la console**
**Note**  
Vérifiez que la fonction a au moins deux versions publiées. Pour créer des versions supplémentaires, suivez les instructions de la section [Création de versions de fonction](configuration-versions.md#configuration-versions-config).

1. Ouvrez la [page Functions](https://console.aws.amazon.com/lambda/home#/functions) (Fonctions) de la console Lambda.

1. Choisissez une fonction.

1. Sélectionnez **Alias**, puis **Create alias (Créer un alias)**.

1. Sur la page **Create alias (Créer un alias)**, procédez de la manière suivante :

   1. Renseignez le champ **Name (Nom)** pour l'alias.

   1. (Facultatif) Renseignez le champ **Description** de l'alias.

   1. Pour **Version**, choisissez la première version de fonction vers laquelle vous souhaitez que l'alias pointe.

   1. Développez **Weighted alias (Alias pondéré)**.

   1. Pour **Additional version (Version supplémentaire)**, choisissez la deuxième version de fonction vers laquelle vous souhaitez que l'alias pointe.

   1. Pour **Weight (%) (Pondération (%))**, entrez une valeur de pondération pour la fonction. La *pondération* est le pourcentage de trafic qui est affecté à cette version lorsque l'alias est appelé. La première version reçoit le reste du trafic. Par exemple, si vous spécifiez 10 % pour **Additional version (Version supplémentaire)**, 90 % du trafic est automatiquement affecté à la première version.

   1. Choisissez **Enregistrer**.

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

Utilisez les AWS CLI commandes [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html) et [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html) pour configurer les pondérations du trafic entre deux versions de fonction. Lorsque vous créez ou mettez à jour l'alias, vous spécifiez la pondération du trafic dans le paramètre `routing-config`.

L'exemple suivant crée un alias de fonction Lambda nommé **routing-alias** qui pointe vers la version 1 de la fonction. La version 2 de la fonction reçoit 3 % du trafic. Les 97 % restants du trafic sont acheminés vers la version 1.

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

Utilisez la commande `update-alias` pour augmenter le pourcentage de trafic entrant vers la version 2. Dans l'exemple suivant, vous augmentez le trafic à 5 %.

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

Pour acheminer l'ensemble du trafic vers la version 2, utilisez la commande `update-alias` pour modifier la propriété `function-version` afin que l'alias pointe vers la version 2. La commande réinitialise également la configuration de routage.

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

 Les AWS CLI commandes des étapes précédentes correspondent aux opérations d'API Lambda suivantes :
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)

------

## Détermination de la version invoquée
<a name="determining-routing-version"></a>

Lorsque vous configurez des pondérations de trafic entre deux versions de fonction, vous pouvez déterminer la version de fonction Lambda appelée de deux manières :
+ **CloudWatch Journaux** — Lambda émet automatiquement une entrée de `START` journal contenant l'ID de version invoqué pour chaque appel de fonction. Exemple :

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

  Pour les appels d'alias, Lambda utilise la dimension `ExecutedVersion` pour filtrer les métriques en fonction de la version appelée. Pour de plus amples informations, veuillez consulter [Affichage des métriques pour une fonction Lambda](monitoring-metrics-view.md).
+ **Charge utile de réponse (appels synchrones)** – Les réponses aux appels de fonction synchrones incluent un en-tête `x-amz-executed-version` indiquant la version de fonction appelée.

## Création d’un déploiement continu avec des alias pondérés
<a name="lambda-rolling-deployments"></a>

Utilisez AWS CodeDeploy and AWS Serverless Application Model (AWS SAM) pour créer un déploiement continu qui détecte automatiquement les modifications apportées à votre code de fonction, déploie une nouvelle version de votre fonction et augmente progressivement le volume de trafic vers la nouvelle version. La quantité de trafic et le taux d'augmentation sont des paramètres que vous pouvez configurer.

Dans le cadre d'un déploiement continu, AWS SAM exécute les tâches suivantes :
+ Il configure votre fonction Lambda et crée un alias. La configuration de routage d’alias pondéré est la capacité sous-jacente qui implémente le déploiement propagé.
+ Crée une CodeDeploy application et un groupe de déploiement. Le groupe de déploiement gère le déploiement propagé et la restauration, si nécessaire.
+ Il détecte le moment où vous créez une nouvelle version de votre fonction Lambda.
+ Déclencheurs CodeDeploy permettant de démarrer le déploiement de la nouvelle version.

### Exemple de AWS SAM modèle
<a name="sam-template"></a>

L'exemple suivant présente un [modèle AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html) pour un déploiement propagé simple. 

```
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
```

Ce modèle définit une fonction Lambda nommée `myDateTimeFunction` avec les propriétés suivantes. 

**AutoPublishAlias **  
La propriété `AutoPublishAlias` crée un alias nommé `live`. De plus, l'infrastructure AWS SAM détecte automatiquement le moment où vous enregistrez du code nouveau pour la fonction. L'infrastructure publie ensuite une nouvelle version de fonction et met à jour l'alias `live` de sorte qu'il pointe vers la nouvelle version.

**DeploymentPreference**  
La `DeploymentPreference` propriété détermine la vitesse à laquelle l' CodeDeploy application déplace le trafic de la version d'origine de la fonction Lambda vers la nouvelle version. La valeur `Linear10PercentEvery2Minutes` déplace 10 % du trafic toutes les deux minutes vers la nouvelle version.   
Pour obtenir la liste des configurations de déploiement prédéfinies, consultez [Configurations de déploiement](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html). 

Pour plus d'informations sur la façon de créer des déploiements progressifs avec CodeDeploy et AWS SAM, consultez les rubriques suivantes :
+ [Tutoriel : Déployer une fonction Lambda mise à jour avec et CodeDeploy AWS Serverless Application Model](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam.html)
+ [Déploiement progressif d'applications sans serveur avec AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html)