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.
Comprendre comment Lambda gère les mises à jour de version de l’environnement d’exécution
Lambda maintient à jour chaque environnement d’exécution géré avec des mises à jour de sécurité, des corrections de bogues, de nouvelles fonctionnalités, des améliorations de performance et la prise en charge des versions mineures. Ces mises à jour d’environnement d’exécution sont publiées sous forme de versions d’environnement d’exécution. Lambda applique les mises à jour d’environnement d’exécution aux fonctions en faisant migrer la fonction d’une version antérieure vers une nouvelle version.
Par défaut, pour les fonctions utilisant des exécutions gérées, Lambda applique des mises à jour automatiquement. Avec les mises à jour de l’environnement d’exécution automatiques, Lambda prend en charge la charge opérationnelle de l’application de correctifs aux versions de l’environnement d’exécution. Pour la plupart des clients, les mises à jour automatiques sont le bon choix. Vous pouvez modifier ce comportement par défaut en configurant les paramètres de gestion de l’environnement d’exécution.
Lambda publie également chaque nouvelle version de l’environnement d’exécution sous forme d’image de conteneur. Pour mettre à jour les versions des environnements d’exécution pour les fonctions basées sur des conteneurs, vous devez créer une nouvelle image de conteneur à partir de l’image de base mise à jour et redéployer votre fonction.
Chaque version de l’environnement d’exécution est associée à un numéro de version et à un ARN (Amazon Resource Name). Les numéros de version de l’environnement d’exécution utilisent un schéma de numérotation que Lambda définit, indépendamment des numéros de version utilisés par le langage de programmation. Les numéros de version d'exécution ne sont pas toujours séquentiels. Par exemple, la version 42 peut être suivie de la version 45. L’ARN de la version de l’environnement d’exécution est un identifiant unique pour chaque version. Vous pouvez voir l’ARN de la version de l’environnement d’exécution actuelle de votre fonction dans la console Lambda ou dans la ligne INIT_START des journaux de votre fonction.
Les versions des environnements d’exécution ne doivent pas être confondues avec les identifiants des environnements d’exécution. Chaque environnement d’exécution possède un identifiant unique, tel que python3.13
ou nodejs22.x
. Ceux-ci correspondent à chaque version majeure du langage de programmation. Les versions de l’environnement d’exécution décrivent la version corrective d’un environnement d’exécution individuel.
Note
L'ARN pour le même numéro de version d'exécution peut varier selon Régions AWS les architectures de processeur.
Rubriques
Rétrocompatibilité
Lambda s’efforce de fournir des mises à jour d’environnement d’exécution qui sont rétrocompatibles avec les fonctions existantes. Cependant, comme pour les correctifs logiciels, il existe de rares cas dans lesquels une mise à jour de l’environnement d’exécution peut avoir un impact négatif sur une fonction existante. Par exemple, les correctifs de sécurité peuvent exposer un problème sous-jacent à une fonction existante qui dépend du comportement précédent, non sécurisé.
Lorsque vous créez et déployez votre fonction, il est important de comprendre comment gérer vos dépendances afin d'éviter d'éventuelles incompatibilités lors d'une future mise à jour d'exécution. Supposons, par exemple, que votre fonction soit dépendante du package A, lui-même dépendant du package B. Les deux packages sont inclus dans le moteur d'exécution Lambda (par exemple, ils peuvent faire partie du SDK ou de ses dépendances, ou faire partie des bibliothèques du système d'exécution).
Réfléchissez aux scénarios suivants :
Déploiement | Compatible avec les correctifs | Raison |
---|---|---|
|
Oui | Les futures mises à jour d'exécution des packages A et B seront rétrocompatibles. |
|
Oui | Votre déploiement étant prioritaire, les futures mises à jour d'exécution des packages A et B n'auront aucun effet. |
|
Oui* |
Les futures mises à jour d'exécution du package B seront rétrocompatibles. *Si A et B sont étroitement couplés, des problèmes de compatibilité peuvent survenir. Par exemple, les |
|
Non | Les futures mises à jour d'exécution du package A peuvent nécessiter une version mise à jour du package B. Cependant, la version déployée du package B est prioritaire et risque de ne pas être compatible avec la version mise à jour du package A. |
Pour garantir la compatibilité avec les futures mises à jour d'exécution, suivez les meilleures pratiques suivantes :
-
Dans la mesure du possible, regroupez toutes les dépendances : incluez toutes les bibliothèques requises, y compris le AWS SDK et ses dépendances, dans votre package de déploiement. Cela garantit un ensemble de composants stable et compatible.
-
Utilisez l'environnement d'exécution SDKs avec parcimonie : utilisez uniquement le SDK fourni par l'exécution lorsque vous ne pouvez pas inclure de packages supplémentaires (par exemple, lorsque vous utilisez l'éditeur de code de la console Lambda ou du code en ligne dans un modèle). AWS CloudFormation
-
Évitez de remplacer les bibliothèques système : ne déployez pas de bibliothèques de système d'exploitation personnalisées susceptibles d'entrer en conflit avec les futures mises à jour d'exécution.
Modes de mise à jour de l’environnement d’exécution
Lambda s’efforce de fournir des mises à jour d’environnement d’exécution qui sont rétrocompatibles avec les fonctions existantes. Cependant, comme pour les correctifs logiciels, il existe de rares cas dans lesquels une mise à jour de l’environnement d’exécution peut avoir un impact négatif sur une fonction existante. Par exemple, les correctifs de sécurité peuvent exposer un problème sous-jacent à une fonction existante qui dépend du comportement précédent, non sécurisé. Les contrôles de gestion de l’environnement d’exécution Lambda permettent de réduire le risque d’impact sur vos charges de travail dans le cas rare d’une incompatibilité de version. Pour chaque version de fonction ($LATEST
ou version publiée), vous pouvez choisir l’un des modes de mise à jour de l’environnement d’exécution suivants :
Auto (par défaut) – Mettre automatiquement à jour vers la version de l’environnement d’exécution la plus sécurisée et la plus sûre à l’aide de Déploiement des versions de l’environnement d’exécution en deux phases. Nous recommandons ce mode à la plupart des clients afin que vous puissiez toujours bénéficier des mises à jour de l’environnement d’exécution.
Mise à jour de fonction – Mise à jour vers la version d’exécution la plus récente et la plus sécurisée lorsque vous mettez à jour votre fonction. Lorsque vous mettez à jour votre fonction, Lambda met à jour l’exécution de votre fonction vers la version la plus récente et la plus sécurisée. Cette approche synchronise les mises à jour de l’environnement d’exécution avec les déploiements de fonctions, ce qui vous permet de contrôler le moment où Lambda applique les mises à jour de l’environnement d’exécution. Avec ce mode, vous pouvez détecter et atténuer rapidement les rares incompatibilités de mise à jour de l’environnement d’exécution. Lorsque vous utilisez ce mode, vous devez régulièrement mettre à jour vos fonctions pour maintenir leur environnement d’exécution à jour.
Manuel – Mise à jour manuelle de la version de votre exécution. Vous spécifiez une version de l’exécution dans la configuration de votre fonction. La fonction utilise cette version de l’environnement d’exécution indéfiniment. Dans les rares cas où une nouvelle version de l’environnement d’exécution est incompatible avec une fonction existante, vous pouvez utiliser ce mode pour ramener votre fonction à une version antérieure. Nous vous déconseillons d’utiliser le mode Manual (Manuel) pour tenter d’obtenir une cohérence de l’environnement d’exécution entre les déploiements. Pour de plus amples informations, veuillez consulter Rétablissement d’une version de l’environnement d’exécution Lambda.
La responsabilité de l’application des mises à jour de l’environnement d’exécution à vos fonctions varie en fonction du mode de mise à jour que vous choisissez. Pour de plus amples informations, veuillez consulter Comprendre le modèle de responsabilité partagée pour la gestion des environnements d’exécution Lambda.
Déploiement des versions de l’environnement d’exécution en deux phases
Lambda introduit de nouvelles gestions des versions d’exécution dans l’ordre suivant :
Dans la première phase, Lambda applique la nouvelle version d’exécution chaque fois que vous créez ou mettez à jour une fonction. Une fonction est mise à jour lorsque vous appelez les opérations de UpdateFunctionConfigurationl'API UpdateFunctionCodeor.
Dans la deuxième phase, Lambda met à jour toute fonction qui utilise le mode de mise à jour Auto de l’environnement d’exécution et qui n’a pas encore été mise à jour vers la nouvelle version.
La durée totale du processus de déploiement varie en fonction de plusieurs facteurs, notamment la gravité de tout correctif de sécurité inclus dans la mise à jour de l’environnement d’exécution.
Si vous développez et déployez activement vos fonctions, vous obtiendrez très probablement de nouvelles versions de l’environnement d’exécution au cours de la première phase. Cela permet de synchroniser les mises à jour de l’environnement d’exécution avec les mises à jour des fonctions. Dans le cas rare où la dernière version d’exécution aurait un impact négatif sur votre application, cette approche vous permet de prendre rapidement des mesures correctives. Les fonctions qui ne sont pas en cours de développement bénéficient toujours des avantages opérationnels des mises à jour automatiques de l’environnement d’exécution au cours de la deuxième phase.
Cette approche n’affecte pas les fonctions définies en mode Function update (Mise à jour de fonction) ou en mode Manual (Manuel). Les fonctions utilisant le mode Function update (Mise à jour de fonction) reçoivent les dernières mises à jour de l’environnement d’exécution uniquement lorsque vous les créez ou les mettez à jour. Les fonctions utilisant le mode Manual (Manuel) ne reçoivent pas de mises à jour de l’environnement d’exécution.
Lambda publie les nouvelles versions de l’environnement d’exécution de manière progressive et continue à travers Régions AWS. Si vos fonctions sont configurées en mode Auto ou Function update (Mise à jour de fonction), il est possible que les fonctions déployées au même moment dans différentes régions, ou à différents moments dans la même région, reçoivent des versions de l’environnement d’exécution différentes. Les clients qui exigent une cohérence garantie des versions de l’environnement d’exécution dans leurs environnements doivent utiliser des images de conteneurs pour déployer leurs fonctions Lambda. Le mode Manuel est conçu comme une mesure d’atténuation temporaire pour permettre de restaurer la version d’exécution dans le rare cas où une version d’exécution est incompatible avec votre fonction.