Créez votre première fonction 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.

Créez votre première fonction Lambda

Pour démarrer avec Lambda, utilisez la console Lambda pour créer une fonction. En quelques minutes, vous pouvez créer et déployer une fonction, mais aussi la tester dans la console.

Au cours du didacticiel, vous apprendrez certains concepts fondamentaux de Lambda, tels que la façon de transmettre des arguments à votre fonction à l'aide de l'objet d'événement Lambda. Vous apprendrez également comment renvoyer les résultats du journal de votre fonction et comment afficher les journaux d'invocation de votre fonction dans CloudWatch Logs.

Pour simplifier les choses, vous devez créer votre fonction à l'aide de l'exécution Python ou Node.js. Avec ces langages interprétés, vous pouvez modifier le code de fonction directement dans l'éditeur de code intégré à la console. Avec des langages compilés tels que Java et C#, vous devez créer un package de déploiement sur votre machine de génération locale et le télécharger sur Lambda. Pour en savoir plus sur le déploiement de fonctions sur Lambda à l'aide d'autres environnements d'exécution, consultez les liens figurant dans la section Ressources supplémentaires et prochaines étapes.

Astuce

Pour apprendre à créer des solutions sans serveur, consultez le Guide du développeur sans serveur.

Prérequis

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

Pour vous inscrire à un Compte AWS
  1. Ouvrez l'https://portal.aws.amazon.com/billing/inscription.

  2. Suivez les instructions en ligne.

    Dans le cadre de la procédure d‘inscription, vous recevrez un appel téléphonique et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

    Lorsque vous vous inscrivez à un Compte AWS, un Utilisateur racine d'un compte AWSest créé. Par défaut, seul l‘utilisateur racine a accès à l‘ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l‘utilisateur racine pour effectuer les tâches nécessitant un accès utilisateur racine.

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à https://aws.amazon.com/et en choisissant Mon compte.

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

Sécurisez votre Utilisateur racine d'un compte AWS
  1. Connectez-vous en AWS Management Consoletant que propriétaire du compte en choisissant Utilisateur root et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

    Pour obtenir de l‘aide pour vous connecter en utilisant l‘utilisateur racine, consultez Connexion en tant qu‘utilisateur racine dans le Guide de l‘utilisateur Connexion à AWS .

  2. Activez l'authentification multifactorielle (MFA) pour votre utilisateur root.

    Pour obtenir des instructions, voir Activer un MFA périphérique virtuel pour votre utilisateur Compte AWS root (console) dans le guide de IAM l'utilisateur.

Création d'un utilisateur doté d'un accès administratif
  1. Activez IAM Identity Center.

    Pour obtenir des instructions, consultez Activation d’ AWS IAM Identity Center dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Dans IAM Identity Center, accordez un accès administratif à un utilisateur.

    Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center dans le Guide de AWS IAM Identity Center l'utilisateur.

Connexion en tant qu‘utilisateur doté d'un accès administratif
  • Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l'URLidentifiant envoyé à votre adresse e-mail lorsque vous avez créé l'utilisateur IAM Identity Center.

    Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAMIdentity Center, consultez la section Connexion au portail AWS d'accès dans le guide de Connexion à AWS l'utilisateur.

Attribution d'un accès à d'autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d'autorisations conforme à la meilleure pratique consistant à appliquer les autorisations du moindre privilège.

    Pour obtenir des instructions, consultez Création d’un ensemble d’autorisations dans le Guide de l’utilisateur AWS IAM Identity Center .

  2. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

    Pour obtenir des instructions, consultez Ajout de groupes dans le Guide de l’utilisateur AWS IAM Identity Center .

Créer une fonction Lambda à l'aide de la console

Dans cet exemple, votre fonction prend un JSON objet contenant deux valeurs entières étiquetées "length" et"width". La fonction multiplie ces valeurs pour calculer une surface et la renvoie sous forme de JSON chaîne.

Votre fonction imprime également la zone calculée, ainsi que le nom de son groupe de CloudWatch logs. Plus loin dans le didacticiel, vous apprendrez à utiliser les CloudWatch journaux pour afficher les enregistrements de l'invocation de vos fonctions.

Pour créer votre fonction, vous utilisez d'abord la console pour créer une fonction Hello world de base. À l'étape suivante, vous devez ensuite ajouter votre propre code de fonction.

Pour créer une fonction Lambda Hello world à l'aide de la console
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez Create function (Créer une fonction).

  3. Sélectionnez Créer à partir de zéro.

  4. Dans le volet Informations de base, pour Nom de la fonction, entrez myLambdaFunction.

  5. Pour Environnement d'exécution, choisissez Node.js 20.x ou Python 3.12

  6. Laissez architecture défini sur x86_64 et choisissez Créer une fonction.

Lambda crée une fonction qui renvoie le messageHello from Lambda!Lambda crée également unrôle d'exécutionpour votre événement. Un rôle d'exécution est un rôle AWS Identity and Access Management (IAM) qui accorde à une fonction Lambda l'autorisation d'accès Services AWS et de ressources. Pour votre fonction, le rôle créé par Lambda accorde des autorisations de base pour CloudWatch écrire dans Logs.

Vous utilisez désormais l'éditeur de code intégré de la console pour remplacer le code Hello world créé par Lambda avec votre propre code de fonction.

Node.js
Pour modifier le code dans la console
  1. Cliquez sur l’onglet Code.

    Dans l'éditeur de code intégré de la console, vous devriez voir le code de fonction créé par Lambda. Si vous ne voyez pas l'onglet index.mjs dans l'éditeur de code, sélectionnez index.mjs dans l'explorateur de fichiers, comme le montre le schéma suivant.

    Schéma illustrant l'éditeur de code de la console et le fichier index.mjs dans l'explorateur de fichiers
  2. Collez le code suivant dans l'onglet index.mjs, en remplaçant le code créé par Lambda.

    export const handler = async (event, context) => { const length = event.length; const width = event.width; let area = calculateArea(length, width); console.log(`The area is ${area}`); console.log('CloudWatch log group: ', context.logGroupName); let data = { "area": area, }; return JSON.stringify(data); function calculateArea(length, width) { return length * width; } };
  3. Choisissez Déployer afin de mettre à jour le code de votre fonction. Lorsque Lambda a déployé les modifications, la console affiche une bannière vous indiquant que votre fonction a bien été mise à jour.

Comprendre le code de votre fonction

Avant de passer à l'étape suivante, examinons le code de la fonction pour comprendre certains concepts Lambda clés.

  • Le gestionnaire Lambda :

    Votre fonction Lambda contient une fonction Node.js nommée handler. Une fonction Lambda en Node.js peut contenir plusieurs fonctions Node.js, mais la fonction gestionnaire est toujours le point d'entrée de votre code. Lorsque votre fonction est invoquée, Lambda exécute cette méthode.

    Lorsque vous avez créé votre fonction Hello world à l'aide de la console, Lambda a automatiquement défini le nom de la méthode du gestionnaire pour votre fonction sur handler. Veillez à ne pas modifier le nom de cette fonction Node.js. Dans ce cas, Lambda ne pourra pas exécuter votre code lorsque vous invoquerez votre fonction.

    Pour en savoir plus sur le gestionnaire Lambda en Node.js, voir Définir le gestionnaire de fonctions Lambda dans Node.js.

  • L'objet de l'événement Lambda :

    La fonction handler accepte deux arguments, event et context. Dans Lambda, un événement est un document JSON formaté qui contient des données à traiter par votre fonction.

    Si votre fonction est invoquée par une autre personne Service AWS, l'objet d'événement contient des informations sur l'événement à l'origine de l'invocation. Par exemple, si un compartiment Amazon Simple Storage Service (Amazon S3) invoque votre fonction lorsqu'un objet est chargé, l'événement contiendra le nom du compartiment Amazon S3 et la clé de l'objet.

    Dans cet exemple, vous allez créer un événement dans la console en saisissant un document JSON formaté avec deux paires clé-valeur.

  • L'objet de contexte Lambda :

    Le deuxième argument que votre fonction accepte est context. Lambda transmet automatiquement l'objet de contexte à votre fonction. L'objet de contexte contient des informations supplémentaires sur l'invocation de la fonction et l'environnement d'exécution.

    Vous pouvez utiliser l'objet de contexte pour générer des informations sur l'invocation de votre fonction à des fins de surveillance. Dans cet exemple, votre fonction utilise le logGroupName paramètre pour afficher le nom de son groupe de CloudWatch journaux.

    Pour en savoir plus sur l'objet de contexte Lambda en Node.js, voir Utilisation de l'objet de contexte Lambda pour récupérer les informations de la fonction Node.js.

  • Connexion à Lambda :

    Avec Node.js, vous pouvez utiliser des méthodes de la console telles que console.log et console.error pour envoyer des informations au journal de votre fonction. L'exemple de code utilise console.log des instructions pour afficher la zone calculée et le nom du groupe CloudWatch Logs de la fonction. Vous pouvez également utiliser n'importe quelle bibliothèque de journalisation qui écrit dans stdout ou stderr.

    Pour en savoir plus, consultez Enregistrez et surveillez les fonctions Lambda de Node.js. Pour en savoir plus sur la connexion à d'autres environnements d'exécution, consultez les pages « Génération avec » correspondant aux environnements d'exécution qui vous intéressent.

Python
Pour modifier le code dans la console
  1. Cliquez sur l’onglet Code.

    Dans l'éditeur de code intégré de la console, vous devriez voir le code de fonction créé par Lambda. Si vous ne voyez pas l'onglet lambda_function.py dans l'éditeur de code, sélectionnez lambda_function.py dans l'explorateur de fichiers, comme le montre le schéma suivant.

    Schéma illustrant l'éditeur de code de console et le fichier lambda_function.py dans l'explorateur de fichiers
  2. Collez le code suivant dans l'onglet lambda_function.py, en remplaçant le code créé par Lambda.

    import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # Get the length and width parameters from the event object. The # runtime converts the event object to a Python dictionary length = event['length'] width = event['width'] area = calculate_area(length, width) print(f"The area is {area}") logger.info(f"CloudWatch logs group: {context.log_group_name}") # return the calculated area as a JSON string data = {"area": area} return json.dumps(data) def calculate_area(length, width): return length*width
  3. Choisissez Déployer afin de mettre à jour le code de votre fonction. Lorsque Lambda a déployé les modifications, la console affiche une bannière vous indiquant que votre fonction a bien été mise à jour.

Comprendre le code de votre fonction

Avant de passer à l'étape suivante, examinons le code de la fonction pour comprendre certains concepts Lambda clés.

  • Le gestionnaire Lambda :

    Votre fonction Lambda contient une fonction Python nommée lambda_handler. Une fonction Lambda en Python peut contenir plusieurs fonctions Python, mais la fonction gestionnaire est toujours le point d'entrée de votre code. Lorsque votre fonction est invoquée, Lambda exécute cette méthode.

    Lorsque vous avez créé votre fonction Hello world à l'aide de la console, Lambda a automatiquement défini le nom de la méthode du gestionnaire pour votre fonction sur lambda_handler. Veillez à ne pas modifier le nom de cette fonction Python. Dans ce cas, Lambda ne pourra pas exécuter votre code lorsque vous invoquerez votre fonction.

    Pour en savoir plus sur le gestionnaire Lambda en Python, voir Définir le gestionnaire de fonctions Lambda en Python.

  • L'objet de l'événement Lambda :

    La fonction lambda_handler accepte deux arguments, event et context. Dans Lambda, un événement est un document JSON formaté qui contient des données à traiter par votre fonction.

    Si votre fonction est invoquée par une autre personne Service AWS, l'objet d'événement contient des informations sur l'événement à l'origine de l'invocation. Par exemple, si un compartiment Amazon Simple Storage Service (Amazon S3) invoque votre fonction lorsqu'un objet est chargé, l'événement contiendra le nom du compartiment Amazon S3 et la clé de l'objet.

    Dans cet exemple, vous allez créer un événement dans la console en saisissant un document JSON formaté avec deux paires clé-valeur.

  • L'objet de contexte Lambda :

    Le deuxième argument que votre fonction accepte est context. Lambda transmet automatiquement l'objet de contexte à votre fonction. L'objet de contexte contient des informations supplémentaires sur l'invocation de la fonction et l'environnement d'exécution.

    Vous pouvez utiliser l'objet de contexte pour générer des informations sur l'invocation de votre fonction à des fins de surveillance. Dans cet exemple, votre fonction utilise le log_group_name paramètre pour afficher le nom de son groupe de CloudWatch journaux.

    Pour en savoir plus sur l'objet de contexte Lambda en Python, voir Utilisation de l'objet de contexte Lambda pour récupérer les informations d'une fonction Python.

  • Connexion à Lambda :

    Avec Python, vous pouvez utiliser une instruction print ou une bibliothèque de journalisation Python pour envoyer des informations au journal de votre fonction. Pour illustrer la différence entre ce qui est capturé, l'exemple de code utilise les deux méthodes. Dans une application de production, nous vous recommandons d'utiliser une bibliothèque de journalisation.

    Pour en savoir plus, consultez Enregistrez et surveillez les fonctions Lambda en Python. Pour en savoir plus sur la connexion à d'autres environnements d'exécution, consultez les pages « Génération avec » correspondant aux environnements d'exécution qui vous intéressent.

Invoquer la fonction Lambda à l'aide de la console

Pour invoquer votre fonction à l'aide de la console Lambda, vous devez d'abord créer un événement de test à envoyer à votre fonction. L'événement est un document JSON formaté contenant deux paires clé-valeur avec les clés et. "length" "width"

Pour créer l'événement de test
  1. Dans le volet Source du code, choisissez Test.

  2. Sélectionnez Créer un événement.

  3. Dans Nom de l'événement, saisissez myTestEvent.

  4. Dans le JSON panneau Evénement, remplacez les valeurs par défaut en collant les valeurs suivantes :

    { "length": 6, "width": 7 }
  5. Choisissez Save (Enregistrer).

Vous testez maintenant votre fonction et utilisez la console Lambda et les CloudWatch journaux pour consulter les enregistrements de l'invocation de votre fonction.

Pour tester votre fonction et consulter les enregistrements d'invocation dans la console
  • Dans le volet Source du code, choisissez Test. Lorsque votre fonction termine son exécution, les journaux des réponses et des fonctions s'afficheront dans l'onglet Résultats d'exécution. Vous devriez voir des résultats similaires à ce qui suit.

    Node.js
    Test Event Name myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms Request ID 5c012b0a-18f7-4805-b2f6-40912935034a
    Python
    Test Event Name myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2023-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms Request ID 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b

Dans cet exemple, vous avez invoqué votre code à l'aide de la fonctionnalité de test de la console. Cela signifie que vous pouvez consulter les résultats d'exécution de votre fonction directement dans la console. Lorsque votre fonction est invoquée en dehors de la console, vous devez utiliser CloudWatch Logs.

Pour consulter les enregistrements d'invocation de votre fonction dans Logs CloudWatch
  1. Ouvrez la page Groupes de journaux de la CloudWatch console.

  2. Choisissez le groupe de journaux de votre fonction (/aws/lambda/myLambdaFunction). Il s'agit du nom du groupe de journaux que votre fonction a imprimé sur la console.

  3. Dans l'onglet Flux de journaux, choisissez le flux de journaux pour l'invocation de votre fonction.

    Vous devez voir des résultats similaires à ce qui suit :

    Node.js
    INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
    Python
    INIT_START Runtime Version: python:3.12.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072 START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST The area is 42 [INFO] 2023-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB

Nettoyage

Lorsque vous avez terminé d'utiliser l'exemple de fonction, supprimez-le. Vous pouvez également supprimer le groupe de journaux qui stocke les journaux de la fonction, et le rôle d'exécution créé par la console.

Pour supprimer une fonction Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Sélectionnez Actions, Supprimer.

  4. Dans la fenêtre de dialogue Delete function (Supprimer la fonction), saisissez delete, puis sélectionnez Delete (Supprimer).

Pour supprimer le groupe de journaux
  1. Ouvrez la page Groupes de journaux de la CloudWatch console.

  2. Sélectionnez le groupe de journaux de la fonction (/aws/lambda/my-function).

  3. Sélectionnez Actions, Delete log group(s) (Supprimer le ou les groupes de journaux).

  4. Dans la boîte de dialogue Delete log group(s) (Supprimer le ou les groupes de journaux), sélectionnez Delete (Supprimer).

Pour supprimer le rôle d’exécution
  1. Ouvrez la page Rôles de la console AWS Identity and Access Management (IAM).

  2. Sélectionnez le rôle d'exécution de la fonction (par exemple, myLambdaFunction-role-31exxmpl).

  3. Sélectionnez Delete (Supprimer).

  4. Dans la fenêtre de dialogue Delete role (Supprimer le rôle), saisissez le nom du rôle, puis sélectionnez Delete (Supprimer).

Vous pouvez automatiser la création et le nettoyage des fonctions, des groupes de journaux et des rôles avec AWS CloudFormation et le AWS Command Line Interface (AWS CLI).

Ressources supplémentaires et prochaines étapes

Maintenant que vous avez créé et testé une fonction Lambda simple à l'aide de la console, procédez comme suit :