Runtimes des instances gérées 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.

Runtimes des instances gérées Lambda

Lambda traite les demandes différemment lorsqu'il utilise des instances gérées par Lambda. Au lieu de traiter les demandes de manière séquentielle dans chaque environnement d'exécution, les instances gérées Lambda traitent plusieurs demandes simultanément dans chaque environnement d'exécution. Ce changement de modèle d'exécution signifie que les fonctions utilisant des instances gérées par Lambda doivent tenir compte de la sécurité des threads, de la gestion des états et de l'isolation du contexte, des problèmes qui ne se posent pas dans le modèle de simultanéité unique Lambda (par défaut). En outre, la mise en œuvre de la multisimultanéité varie selon les environnements d'exécution.

Langues prises en charge

Les instances gérées Lambda peuvent être utilisées avec les langages de programmation et les environnements d'exécution suivants :

  • Java : Java 21 et versions ultérieures.

  • Python : Python 3.13 et versions ultérieures.

  • Node.js : Node.js 22 et versions ultérieures.

  • .NET : .NET 8 et versions ultérieures.

  • Rust : compatible avec l'environnement d'exécution uniquement pour le système d'exploitation provided.al2023 et les versions ultérieures.

Considérations spécifiques à la langue

Chaque langage de programmation implémente la multiconcurrence différemment. Vous devez comprendre comment la multiconcurrence est implémentée dans le langage de programmation que vous avez choisi pour appliquer les meilleures pratiques de simultanéité appropriées.

Java

Utilise un processus unique avec des threads du système d'exploitation pour la simultanéité. Plusieurs threads exécutent simultanément la méthode du gestionnaire, ce qui nécessite une gestion sécurisée de l'état et des ressources partagées.

Python

Utilise plusieurs processus Python dans lesquels chaque demande simultanée est exécutée dans le cadre d'un processus distinct. Cela protège contre la plupart des problèmes de simultanéité, bien qu'il soit nécessaire de faire attention aux ressources partagées telles que le /tmp répertoire.

Node.js

Utilise des threads de travail avec une exécution asynchrone. Les demandes simultanées sont réparties entre les threads de travail, et chaque thread de travail peut également traiter les demandes simultanées de manière asynchrone, ce qui nécessite une gestion sûre de l'état et des ressources partagées.

.NET

Utilise les tâches .NET avec le traitement asynchrone de plusieurs demandes simultanées. Nécessite une gestion sûre des ressources publiques et partagées.

Rust

Utilise un processus unique avec des tâches asynchrones optimisées par Tokio. Le gestionnaire doit être Clone +Send.

Étapes suivantes

Pour obtenir des informations détaillées sur chaque environnement d'exécution, consultez les rubriques suivantes :