Création de 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éation de 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 des journaux de votre fonction et comment consulter les journaux d'invocation de votre fonction dans Amazon 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 les langages compilés tels que Java et C#, vous devez créer un package de déploiement sur votre machine de compilation 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 racine.

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

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, octroyez 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’URL de connexion qui a été envoyée à 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'IAM Identity Center, consultez la section Connexion au portail AWS d'accès dans le guide de l'Connexion à AWS utilisateur.

Attribution d’un accès à d’autres utilisateurs
  1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de 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 objet JSON contenant deux valeurs entières étiquetées "length"et "width". La fonction multiplie ces valeurs pour calculer une zone et la renvoie sous forme de chaîne JSON.

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 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, saisissez myLambdaFunction.

  5. Pour Environnement d’exécution, choisissez Node.js 22.x ou Python 3.13.

  6. Laissez Architecture définie sur x86_64 et choisissez Créer une fonction.

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

Utilisez 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. Dans la section DÉPLOYER, choisissez Déployer pour mettre à jour le code de votre fonction :

    Bouton de déploiement dans l’éditeur de code de la console Lambda
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éfinition du gestionnaire de fonction Lambda dans Node.js.

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

    La fonction handler accepte deux arguments, event et context. Un événement dans Lambda est un document au format JSON 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 votre fonction est invoquée lorsqu’un objet est chargé dans un compartiment Amazon Simple Storage Service (Amazon S3), l’événement contient le nom du compartiment et la clé de l’objet.

    Dans cet exemple, vous allez créer un événement dans la console en saisissant un document au format JSON 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 Journalisation et surveillance des fonctions Lambda 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 la 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. Dans la section DÉPLOYER, choisissez Déployer pour mettre à jour le code de votre fonction :

    Bouton de déploiement dans l’éditeur de code de la console Lambda
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. Un événement dans Lambda est un document au format JSON 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 votre fonction est invoquée lorsqu’un objet est chargé dans un compartiment Amazon Simple Storage Service (Amazon S3), l’événement contient le nom du compartiment et la clé de l’objet.

    Dans cet exemple, vous allez créer un événement dans la console en saisissant un document au format JSON 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 de la 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 Journalisation et surveillance des fonctions Lambda 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.

Invocation de fonction Lambda à l’aide de l’éditeur de code de la console

Pour invoquer votre fonction à l’aide de l’éditeur de code de la console Lambda, créez un événement de test à envoyer à votre fonction. L'événement est un document au format JSON contenant deux paires clé-valeur avec les clés "length" et "width".

Pour créer l'événement de test
  1. Dans la section ÉVÉNEMENTS DE TEST de l’éditeur de code de console, choisissez Créer un événement de test.

    Bouton de création d’un événement de test dans l’éditeur de code de la console Lambda
  2. Dans Event Name (Nom de l'événement), saisissez myTestEvent.

  3. Dans la section JSON d’événement, remplacez le JSON par défaut par ce qui suit :

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

Pour tester votre fonction et consulter les enregistrements d’invocation

Dans la section ÉVÉNEMENTS DE TEST de l’éditeur de code de la console, cliquez sur l’icône d’exécution à côté de votre événement de test :

Bouton d’exécution de l’événement de test dans l’éditeur de code de la console Lambda

Lorsque votre fonction termine son exécution, les journaux des réponses et de la fonction s’affichent dans l’onglet RÉSULTATS. Vous devriez voir des résultats similaires à ce qui suit :

Node.js
Status: Succeeded Test Event Name: myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2024-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2024-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
Status: Succeeded Test Event Name: myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2024-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

Lorsque vous appelez votre fonction en dehors de la console Lambda, vous devez utiliser CloudWatch Logs pour afficher les résultats d'exécution de votre fonction.

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. Faites défiler la page vers le bas et choisissez le flux de journaux pour les invocations de fonctions que vous souhaitez consulter.

    Liste des flux de journaux pour une fonction Lambda.

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

    Node.js
    INIT_START Runtime Version: nodejs:22.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2024-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2024-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.13.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] 2024-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 la fonction Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction que vous avez créée.

  3. Sélectionnez Actions, Supprimer.

  4. Saisissez confirm dans la zone de saisie de texte et choisissez Delete (Supprimer).

Pour supprimer le groupe de journaux
  1. Ouvrez la page Log groups (Groupes de journaux) de la console CloudWatch.

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

  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 Supprimer le rôle, saisissez le nom du rôle, puis sélectionnez Supprimer.

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 :