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.
Comment fonctionne Lambda
Les fonctions Lambda sont les éléments de base que vous utilisez pour créer des applications Lambda. Pour écrire des fonctions, il est essentiel de comprendre les concepts et composants de base du modèle de programmation Lambda. Cette section vous guidera à travers les éléments fondamentaux que vous devez connaître pour commencer à créer des applications sans serveur avec Lambda.
-
Fonctions Lambda et gestionnaires de fonctions- Une fonction Lambda est un petit bloc de code qui s'exécute en réponse à des événements. Les fonctions sont les éléments de base que vous utilisez pour créer des applications. Les gestionnaires de fonctions constituent le point d'entrée pour les objets d'événements traités par votre code de fonction Lambda.
-
Environnement d'exécution et environnements d'exécution Lambda- Les environnements d'exécution Lambda gèrent les ressources nécessaires à l'exécution de votre fonction. Les temps d'exécution sont les environnements spécifiques au langage dans lesquels vos fonctions s'exécutent.
-
Événements et déclencheurs- comment les autres Services AWS invoquent vos fonctions en réponse à des événements spécifiques.
-
Autorisations et rôles Lambda- comment vous contrôlez qui peut accéder à vos fonctions et avec quelles autres Services AWS fonctions peuvent interagir.
Astuce
Si vous souhaitez commencer par comprendre le développement sans serveur de manière plus générale, consultez la section Comprendre la différence entre le développement traditionnel et le développement sans serveur dans le Guide du développeur AWS sans serveur.
Fonctions Lambda et gestionnaires de fonctions
Dans Lambda, les fonctions sont les éléments fondamentaux que vous utilisez pour créer des applications. Une fonction Lambda est un morceau de code qui s'exécute en réponse à des événements, tels qu'un utilisateur clique sur un bouton sur un site Web ou le chargement d'un fichier dans un bucket Amazon Simple Storage Service (Amazon S3). Vous pouvez considérer une fonction comme une sorte de programme autonome possédant les propriétés suivantes. Un gestionnaire de fonctions Lambda est la méthode de votre code de fonction qui traite les événements. Lorsqu'une fonction s'exécute en réponse à un événement, Lambda exécute le gestionnaire de fonctions. Les données relatives à l'événement à l'origine de l'exécution de la fonction sont transmises directement au gestionnaire. Alors que le code d'une fonction Lambda peut contenir plusieurs méthodes ou fonctions, les fonctions Lambda ne peuvent avoir qu'un seul gestionnaire.
Pour créer une fonction Lambda, vous devez regrouper le code de votre fonction et ses dépendances dans un package de déploiement. Lambda prend en charge deux types de packages de déploiement : les archives de fichiers .zip et les images de conteneur.
-
Une fonction a une fonction ou un objectif spécifique
-
Ils ne fonctionnent que lorsque cela est nécessaire en réponse à des événements spécifiques
-
Ils s'arrêtent automatiquement lorsqu'ils ont terminé
Environnement d'exécution et environnements d'exécution Lambda
Les fonctions Lambda s'exécutent dans un environnement d'exécution sécurisé et isolé que Lambda gère pour vous. Cet environnement d'exécution gère les processus et les ressources nécessaires à l'exécution de votre fonction. Lorsqu'une fonction est invoquée pour la première fois, Lambda crée un nouvel environnement d'exécution dans lequel la fonction doit s'exécuter. Une fois l'exécution de la fonction terminée, Lambda n'arrête pas immédiatement l'environnement d'exécution ; si la fonction est à nouveau invoquée, Lambda peut réutiliser l'environnement d'exécution existant.
L'environnement d'exécution Lambda contient également un environnement d'exécution, un environnement spécifique au langage qui relaie les informations sur les événements et les réponses entre Lambda et votre fonction. Lambda fournit un certain nombre d'environnements d'exécution gérés pour les langages de programmation les plus courants, ou vous pouvez créer les vôtres.
Pour les environnements d'exécution gérés, Lambda applique automatiquement les mises à jour de sécurité et les correctifs aux fonctions utilisant le moteur d'exécution.
Événements et déclencheurs
Vous pouvez également appeler une fonction Lambda directement à l'aide de la console Lambda ou de l'un des kits de développement AWS logiciel
Pour que votre fonction réagisse aux événements, vous devez configurer un déclencheur. Un déclencheur connecte votre fonction à une source d'événement, et votre fonction peut avoir plusieurs déclencheurs. Lorsqu'un événement se produit, Lambda reçoit les données de l'événement sous forme de document JSON et les convertit en un objet que votre code peut traiter. Vous pouvez définir le format JSON suivant pour votre événement et le moteur d'exécution Lambda convertit ce JSON en objet avant de le transmettre au gestionnaire de votre fonction.
Exemple événement Lambda personnalisé
{ "Location": "SEA", "WeatherData":{ "TemperaturesF":{ "MinTempF": 22, "MaxTempF": 78 }, "PressuresHPa":{ "MinPressureHPa": 1015, "MaxPressureHPa": 1027 } } }
Services de streaming et de mise en file d'attente tels qu'Amazon Kinesis ou Amazon SQS, Lambda utilise un mappage de source d'événements au lieu d'un déclencheur standard. Les mappages de sources d'événements interrogent la source à la recherche de nouvelles données, regroupent les enregistrements, puis invoquent votre fonction avec les événements par lots.
Pour comprendre le fonctionnement d'un déclencheur, commencez par suivre le didacticiel Utiliser un déclencheur Amazon S3, ou pour obtenir un aperçu général de l'utilisation des déclencheurs et des instructions sur la création d'un déclencheur à l'aide de la console Lambda, consultez. Intégration d’autres services
Autorisations et rôles Lambda
Pour Lambda, il existe deux principaux types d'autorisations que vous devez configurer :
-
Autorisations dont votre fonction a besoin pour accéder à d'autres Services AWS
-
Autorisations dont les autres utilisateurs Services AWS ont besoin pour accéder à votre fonction
Les sections suivantes décrivent ces deux types d'autorisation et décrivent les meilleures pratiques pour appliquer les autorisations du moindre privilège.
Autorisations permettant aux fonctions d'accéder à d'autres AWS ressources
Les fonctions Lambda ont souvent besoin d'accéder à d'autres AWS ressources et d'effectuer des actions sur celles-ci. Par exemple, une fonction peut lire des éléments d'une table DynamoDB, stocker un objet dans un compartiment S3 ou écrire dans une file d'attente Amazon SQS. Pour donner aux fonctions les autorisations dont elles ont besoin pour effectuer ces actions, vous utilisez un rôle d'exécution.
Un rôle d'exécution Lambda est un type spécial de rôle AWS Identity and Access Management (IAM), une identité que vous créez dans votre compte et à laquelle des autorisations spécifiques sont associées, définies dans une politique.
Chaque fonction Lambda doit avoir un rôle d'exécution, et un seul rôle peut être utilisé par plusieurs fonctions. Lorsqu'une fonction est invoquée, Lambda assume le rôle d'exécution de la fonction et est autorisée à effectuer les actions définies dans la politique du rôle.
Lorsque vous créez une fonction dans la console Lambda, Lambda crée automatiquement un rôle d'exécution pour votre fonction. La politique du rôle donne à votre fonction les autorisations de base pour écrire les sorties de journal dans Amazon CloudWatch Logs. Pour autoriser votre fonction à effectuer des actions sur d'autres AWS ressources, vous devez modifier le rôle afin d'ajouter les autorisations supplémentaires. Le moyen le plus simple d'ajouter des autorisations consiste à utiliser une politique AWS gérée. Les politiques gérées sont créées et administrées par de nombreux cas d'utilisation courants AWS et fournissent des autorisations pour de nombreux cas d'utilisation courants. Par exemple, si votre fonction effectue des opérations CRUD sur une table DynamoDB, vous pouvez ajouter AmazonDynamoDBFullla politique d'accès à votre rôle.
Autorisations permettant à d'autres utilisateurs et ressources d'accéder à votre fonction
Pour accorder d'autres Service AWS autorisations d'accès à votre fonction Lambda, vous utilisez une politique basée sur les ressources. Dans IAM, les politiques basées sur les ressources sont associées à une ressource (dans ce cas, votre fonction Lambda) et définissent les personnes autorisées à accéder à la ressource et les actions qu'elles sont autorisées à effectuer.
Pour Service AWS qu'une autre personne invoque votre fonction via un déclencheur, la politique basée sur les ressources de votre fonction doit autoriser ce service à utiliser l'lambda:InvokeFunction
action. Si vous créez le déclencheur à l'aide de la console, Lambda ajoute automatiquement cette autorisation pour vous.
Pour autoriser d'autres AWS utilisateurs à accéder à votre fonction, vous pouvez le définir dans la politique basée sur les ressources de votre fonction exactement de la même manière que pour une autre fonction Service AWS ou ressource. Vous pouvez également utiliser une politique basée sur l'identité associée à l'utilisateur.
Bonnes pratiques pour les autorisations Lambda
Lorsque vous définissez des autorisations à l'aide de politiques IAM, la meilleure pratique en matière de sécurité consiste à n'accorder que les autorisations nécessaires à l'exécution d'une tâche. C'est ce que l'on appelle le principe du moindre privilège. Pour commencer à accorder des autorisations pour votre fonction, vous pouvez choisir d'utiliser une politique AWS gérée. Les politiques gérées peuvent être le moyen le plus rapide et le plus simple d'accorder des autorisations pour effectuer une tâche, mais elles peuvent également inclure d'autres autorisations dont vous n'avez pas besoin. Au fur et à mesure que vous passez du stade initial du développement aux tests et à la production, nous vous recommandons de limiter les autorisations aux seules autorisations nécessaires en définissant vos propres politiques gérées par le client.
Le même principe s'applique lorsque vous accordez des autorisations d'accès à votre fonction à l'aide d'une politique basée sur les ressources. Par exemple, si vous souhaitez autoriser Amazon S3 à appeler votre fonction, la meilleure pratique consiste à limiter l'accès à des compartiments individuels, ou à des compartiments en particulier Comptes AWS, plutôt que d'accorder des autorisations générales au service S3.