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.
Mise en œuvre de déploiements canary Lambda à l’aide d’un alias pondéré
Vous pouvez utiliser un alias pondéré pour répartir le trafic entre deux versions 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. Les déploiements Canary diffèrent des blue/green déploiements en ce sens qu'ils n'exposent la nouvelle version qu'à une partie des demandes au lieu de commuter 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.
-
Les deux versions doivent avoir la même configuration de file d'attente de lettres mortes 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 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é
Détermination de la version invoquée
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
STARTjournal contenant l'ID de version invoqué pour chaque appel de fonction. Exemple :START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version:2Pour les appels d'alias, Lambda utilise la dimension
ExecutedVersionpour 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. -
Charge utile de réponse (appels synchrones) – Les réponses aux appels de fonction synchrones incluent un en-tête
x-amz-executed-versionindiquant la version de fonction appelée.
Création d’un déploiement continu avec des alias pondérés
Utilisez AWS CodeDeploy et AWS Serverless Application Model (AWS SAM) pour créer un déploiement continu qui détecte automatiquement les modifications apportées au code de votre fonction, déploie une nouvelle version de votre fonction et augmente progressivement la quantité de trafic acheminée vers la nouvelle version. La quantité de trafic et le taux d'augmentation sont des paramètres que vous pouvez configurer.
Dans un déploiement continu, AWS SAM effectue 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 pour démarrer le déploiement de la nouvelle version.
Exemple AWS SAM modèle
L'exemple suivant présente un modèle AWS SAM 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 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é
AutoPublishAliascré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'aliaslivede sorte qu'il pointe vers la nouvelle version. - DeploymentPreference
-
La
DeploymentPreferenceproprié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 valeurLinear10PercentEvery2Minutesdéplace 10 % supplémentaires du trafic vers la nouvelle version toutes les 2 minutes.Pour obtenir la liste des configurations de déploiement prédéfinies, consultez Configurations de déploiement.
Pour plus d'informations sur la création de déploiements continus avec CodeDeploy et AWS SAM, consultez les rubriques suivantes :