AWS Lambda
Manuel du développeur

Déplacement du trafic à l'aide des alias

Par défaut, un alias pointe vers une seule version de fonction Lambda. Lorsque l'alias est mis à jour afin de pointer vers une autre version de fonction, le trafic des demandes entrantes pointe instantanément vers la version mise à jour. L'alias est alors exposé à d'éventuelles instabilités liées à la nouvelle version. Pour réduire cet impact, vous pouvez implémenter le paramètre routing-config de l'alias Lambda qui vous permet de pointer vers deux versions différentes de la fonction Lambda et imposer le pourcentage de trafic entrant envoyé à chaque version.

Par exemple, vous pouvez spécifier que seulement 2 % du trafic entrant est acheminé vers la nouvelle version le temps de vérifier si cette version est prête pour un environnement de production, et que les 98 % restants sont acheminés vers la version d'origine. Au fur et à mesure que la nouvelle version évolue, vous pouvez progressivement mettre à jour ce rapport en fonction de vos besoins, jusqu'à ce que vous ayez validé la stabilité de la nouvelle version. Vous pouvez ensuite mettre à jour l'alias afin d'acheminer l'ensemble du trafic vers la nouvelle version.

Vous pouvez faire pointer un alias vers deux versions de fonction Lambda maximum. En outre :

  • Les deux versions doivent avoir le même rôle d'exécution IAM.

  • Les deux versions doivent avoir la même configuration Files d'attente de lettres mortes de la fonction AWS Lambda – ou aucune configuration de file d'attente de lettres mortes.

  • Lorsqu'un alias est configuré pour pointer vers plusieurs versions, l'alias ne peut pas pointer vers $LATEST.

Déplacement du trafic à l'aide d'un alias (interface de ligne de commande)

Pour configurer un alias afin qu'il redirige le trafic vers deux versions de fonction selon des pondérations en utilisant l'opération CreateAlias, vous devez configurer le paramètre routing-config. L'exemple suivant fait pointer un alias vers deux versions de fonction Lambda différentes. La version 2 reçoit 2 % du trafic et la version 1 98 %.

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

Vous pouvez mettre à jour le pourcentage de trafic entrant à diriger votre nouvelle version (version 2) à l'aide de l'opération UpdateAlias. Par exemple, vous pouvez augmenter le trafic dirigé vers votre nouvelle version à 5 %, comme indiqué ci-dessous.

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

Pour acheminer l'ensemble du trafic vers la version 2, utilisez à nouveau l'opération UpdateAlias pour modifier la propriété function-version afin de faire pointer vers la version 2. Dans la même commande, réinitialisez la configuration de routage.

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

Déplacement du trafic à l'aide d'un alias (console)

Vous pouvez configurer le déplacement du trafic avec un alias en utilisant la console Lambda, comme décrit ci-dessous :

  1. Ouvrez votre fonction Lambda et vérifiez que vous disposez d'au moins deux versions déjà publiées. Si ce n'est pas le cas, vous pouvez consulter Présentation des versions AWS Lambda pour en savoir plus sur la gestion des versions et publier votre première version de fonction.

  2. Pour Actions, choisissez Create alias.

  3. Dans la fenêtre Créer un alias, indiquez une valeur pour le champ Nom*, et éventuellement pour les champs Description et Version*, de la fonction Lambda vers laquelle pointe l'alias. Ici, il s'agit de la version 1.

  4. Dans Additional version, spécifiez les éléments suivants :

    1. Spécifiez une seconde version de fonction Lambda.

    2. Saisissez 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, 90 % du trafic est automatiquement affecté à la première version.

  5. Sélectionnez Create.

Détermination de la version appelée

Lorsque votre alias déplace le trafic entre deux versions de fonction, vous pouvez déterminer de deux manières quelle version de fonction Lambda a été appelée :

  1. CloudWatch Logs : Lambda émet automatiquement une entrée de journal START contenant l'ID de la version appelée dans CloudWatch Logs pour chaque appel de fonction. Un exemple suit.

    19:44:37 START RequestId: request id Version: $version

    Lambda utilise la dimension Executed Version pour filtrer les données de métriques en fonction de la version exécutée. S'applique uniquement aux appels d'alias. Pour plus d'informations, consultez Dimensions AWS Lambda CloudWatch.

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