Présentation du modèle de programmation Lambda - AWS Lambda

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.

Présentation du modèle de programmation Lambda

Lambda propose deux modèles de programmation : les fonctions standard qui s'exécutent jusqu'à 15 minutes et les fonctions durables qui peuvent fonctionner jusqu'à un an. Bien que les deux partagent des concepts fondamentaux, les fonctions durables ajoutent des fonctionnalités pour des flux de travail dynamiques et de longue durée.

Lambda fournit un modèle de programmation commun à tous les runtimes. Le modèle de programmation définit l'interface entre votre code et le système Lambda. Vous indiquez à Lambda le point d'entrée de votre fonction en définissant un gestionnaire dans la configuration de la fonction. Le runtime transmet les objets au gestionnaire qui contiennent l'événement d'invocation et le contexte, tels que le nom de la fonction et l'ID de la demande.

Pour Durable Functions, le gestionnaire reçoit également un DurableContext objet qui fournit :

  • Capacités de point de contrôle via step ()

  • Gestion de l'état d'attente via wait () et waitForCallback ()

  • Persistance automatique de l'état entre les invocations

Lorsque le gestionnaire termine le traitement du premier événement, le runtime lui en envoie un autre. Pour les fonctions durables, le gestionnaire peut suspendre l'exécution entre les étapes, et Lambda enregistrera et rétablira automatiquement l'état lorsque la fonction reprendra. La classe de la fonction reste en mémoire, de sorte que les clients et variables déclarés en dehors de la méthode du gestionnaire dans le code d'initialisation peuvent être réutilisés. Pour économiser du temps de traitement sur les événements suivants, créez des ressources réutilisables telles que des clients AWS SDK lors de l'initialisation. Une fois initialisée, chaque instance de votre fonction peut traiter des milliers de demandes.

Votre fonction a également accès au stockage local dans le répertoire /tmp, un cache temporaire qui peut servir à plusieurs appels. Pour de plus amples informations, veuillez consulter Environnement d’exécution.

Lorsque le suivi AWS X-Ray est activé, le runtime enregistre des sous-segments distincts pour l'initialisation et l'exécution.

Le moteur d'exécution capture les résultats de journalisation de votre fonction et les envoie à Amazon CloudWatch Logs. En plus de consigner la sortie de votre fonction, le runtime consigne également les entrées lorsque la fonction d’invocation démarre et se termine. Cela inclut un journal de rapport avec l'ID de demande, la durée facturée, la durée d'initialisation et d'autres détails. Si votre fonction génère une erreur, le runtime renvoie cette erreur au mécanisme d'appel.

Note

La journalisation est soumise à des quotas de CloudWatch journalisation. Les données des journaux peuvent être perdues en raison de la limitation ou, dans certains cas, lorsqu'une instance de votre fonction est arrêtée.

Principales différences en matière de fonctions durables :

  • L'état est automatiquement conservé entre les étapes

  • Les fonctions peuvent suspendre l'exécution sans consommer de ressources

  • Les étapes sont automatiquement réessayées en cas d'échec

  • Les progrès sont suivis par le biais de points de contrôle

Lambda met à l'échelle votre fonction en exécutant des instances supplémentaires à mesure que la demande augmente et en arrêtant des instances à mesure que la demande diminue. Ce modèle entraîne des variations dans l'architecture des applications, telles que :

  • Sauf indication contraire, les demandes entrantes peuvent être traitées dans le désordre ou simultanément.

  • Ne comptez pas sur la longévité des instances de votre fonction, stockez plutôt l'état de votre application ailleurs.

  • Utilisez le stockage local et les objets de niveau classe afin d'améliorer les performances, mais réduisez au minimum la taille de votre package de déploiement et la quantité de données que vous transférez vers l'environnement d'exécution.

Pour une introduction pratique au modèle de programmation dans le langage de programmation de votre choix, consultez les sections suivantes.