Agence web » Actualités du digital » Comment gérer différentes versions des fonctions Lambda

Comment gérer différentes versions des fonctions Lambda

Les fonctions Lambda sont une entrée très utile pour les services de calcul d'AWS. Puisqu'ils ne sont essentiellement qu'une fonction dans le cloud, le suivi des différentes versions et le déploiement des mises à jour sont essentiels pour travailler efficacement avec eux.

$ LATEST Tracks Les mises à jour les plus récentes

Chaque fois que vous apportez une modification à une fonction Lambda, les modifications sont automatiquement reflétées dans une version appelée $ LATEST. Il suit les mises à jour les plus récentes et constitue la version par défaut de la plupart des fonctions Lambda. Les modifications de la page d'édition Lambda, de l'IDE Cloud9 et du téléchargement zip à partir de l'interface CLI mettent à jour cette version.

Pour cette raison, la version $ LATEST ne doit pas être utilisée en production, car toute mise à jour de la fonction pour tester de nouvelles fonctionnalités affectera votre trafic de production. De plus, il n'y a pas de moyen facile de déployer des mises à jour au fil du temps avec CodeDeploy si vous utilisez $ LATEST.

Au lieu de cela, nous vous recommandons de créer de nouvelles versions pour chaque version, et un alias de «production» qui pointe vers elle. $ LATEST peut être utilisé pour le développement, avec son propre alias le pointant également.

Ajouter une nouvelle version (et y transférer du trafic)

Travailler avec des versions est assez simple. Dans la Lambda Management Console, sélectionnez votre fonction et cliquez sur le menu déroulant «Version:». Cela vous permettra de basculer entre les versions et d'afficher les versions actuellement utilisées.

Pour publier une nouvelle version, vous devez passer à la version $ LATEST et cliquer sur «Publier une nouvelle version» dans la liste déroulante «Actions».

Les nouvelles versions sont plutôt désignées de manière archaïque par un entier incrémenté, sans aucun moyen d'utiliser le format standard major.minor.patch utilisé pour la plupart des versions logicielles. Si vous avez vraiment besoin de ce format, nous vous recommandons d'utiliser CodePipeline avec les déploiements SAM et de suivre vos versions Lambda sur Git.

Cette nouvelle version peut être utilisée dans d'autres services, comme API Gateway. Cependant, vous ne voulez pas avoir à mettre à jour chaque service qui utilise votre fonction Lambda chaque fois que la fonction elle-même est mise à jour. Au lieu de cela, vous devez créer un alias, qui pointe vers un numéro de version particulier, et peut être défini comme point de terminaison pour API Gateway. De cette façon, chaque fois que vous publiez une nouvelle version, il vous suffit de mettre à jour l'alias pour tout basculer.

Vous pouvez créer des alias à partir du même menu "Actions". Donnez-lui un nom, tel que «Production», et sélectionnez une version vers laquelle pointer.

Les alias peuvent également déplacer progressivement le trafic vers une nouvelle version. Bien que vous puissiez le configurer manuellement, il est principalement utilisé pour les déploiements CodeDeploy, où de nouvelles versions de vos fonctions peuvent être déployées progressivement, par exemple, 10% toutes les cinq minutes environ. De cette façon, vous pouvez détecter les erreurs tôt et annuler les versions avant qu'elles n'affectent tout le monde.

Les déploiements SAM ajoutent automatiquement de nouvelles versions

La création manuelle de versions est utile, mais si vous gérez de nombreuses fonctions, vous utiliserez probablement des déploiements SAM à la place. Les fonctions Lambda déployées à l'aide de modèles SAM ajouteront automatiquement une nouvelle version (et mettront à jour $ LATEST).

Combiné à Git pour le contrôle des versions et au service CodePipeline CI / CD d'AWS, cela facilite la gestion des versions pour les fonctions Lambda. Chaque fois qu'un changement est poussé vers la branche de publication dans votre contrôle de code source, CodePipeline se déclenchera automatiquement et mettra à jour vos fonctions. Si vous travaillez avec un langage qui doit être compilé (ou transpilé dans le cas de TypeScript), vous pouvez également envoyer votre code de fonction à CodeBuild pour gérer également cette étape.

Le déploiement SAM est une extension de CloudFormation, donc tout déploiement effectué à l'aide de SAM créera une nouvelle pile CloudFormation. Chaque fois que des mises à jour sont envoyées, CloudFormation reconnaît qu'il s'agit d'une mise à jour de pile, plutôt que d'une nouvelle pile, et remplacera la version de fonction actuelle par la mise à jour.