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 découvrirez é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 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‘avez pas de compte Compte AWS, procédez comme suit pour en créer un.

Pour s‘inscrire à un Compte AWS
  1. Ouvrez https://portal.aws.amazon.com/billing/signup.

  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 souscrivez à un Compte AWS, un Utilisateur racine d'un compte AWS est 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 lorsque le processus d‘inscription est terminé. Vous pouvez afficher l‘activité en cours de votre compte et gérer votre compte à tout moment en accédant à https://aws.amazon.com/ et en choisissant Mon compte.

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

Sécurisation de votre Utilisateur racine d'un compte AWS
  1. Connectez-vous à la AWS Management Console en tant que propriétaire du compte en sélectionnant Root user (Utilisateur racine) et en saisissant votre adresse e-mail Compte AWS. 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, consultez Activation d‘un dispositif MFA virtuel pour l‘utilisateur racine de votre Compte AWS (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 de l’Répertoire IAM Identity Center comme source d’identité, consultez Configuration de l’accès utilisateur avec l’Répertoire IAM Identity Center par défaut dans le Guide de l’utilisateur AWS IAM Identity Center.

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 à l‘aide d‘un utilisateur IAM Identity Center, consultez Connexion au portail d‘accès AWS dans le Guide de l‘utilisateur Connexion à AWS.

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 journaux CloudWatch. Plus loin dans le didacticiel, vous apprendrez à utiliser CloudWatch Logs pour consulter 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 à la fonction Lambda l’autorisation d’accéder aux Services AWS et aux ressources. Pour votre fonction, le rôle créé par Lambda accorde des autorisations d'écriture de base dans CloudWatch 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 un autre 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 paramètre logGroupName pour afficher le nom de son groupe de journaux CloudWatch.

    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 des instructions console.log pour afficher la zone calculée et le nom du groupe de journaux CloudWatch 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 un autre 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 paramètre log_group_name pour afficher le nom de son groupe de journaux CloudWatch.

    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 invoquez votre fonction en dehors de la console Lambda, vous devez utiliser CloudWatch Logs pour consulter les résultats d’exécution de votre fonction.

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

  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 delete 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. Accédez à la page Roles (Rôles) de la AWS Identity and Access Management console (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 :