Démarrage avec 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.

Démarrage avec 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’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 root 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 administratif, et à uniquement utiliser l’utilisateur root pour effectuer tâches nécessitant un accès utilisateur root.

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 cliquant sur Mon compte.

Après vous être inscrit à un Compte AWS, sécurisez votre Utilisateur racine d'un compte AWS, activez AWS IAM Identity Center, puis 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 root) et en saisissant l’adresse e-mail de Compte AWS. Sur la page suivante, saisissez votre mot de passe.

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

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

    Pour obtenir des instructions, consultez Activation d’un dispositif MFA virtuel pour l’utilisateur root de votre Compte AWS (console) dans le Guide de l’utilisateur IAM.

Création d’un utilisateur administratif
  1. Activez IAM Identity Center.

    Pour obtenir des instructions, consultez Configuration 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 administratif.

    Pour profiter d’un didacticiel sur l’utilisation du Répertoire IAM Identity Center comme source d’identité, consultez Configuration de l’accès utilisateur avec le répertoire Répertoire IAM Identity Center par défaut dans le Guide de l’utilisateur AWS IAM Identity Center.

Connexion en tant qu’utilisateur 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.

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 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. Choisissez 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 à 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 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 avec une flèche surlignant 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 AWS Lambda gestionnaire de fonctions 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 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 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 AWS LambdaObjet de contexte dans 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, veuillez consulter la section Journalisation des fonctions AWS Lambda dans 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 avec une flèche surlignant 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 Gestionnaire de fonction 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 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 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 Objet de contexte AWS Lambda dans 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, veuillez consulter la section Journalisation des fonctions AWS Lambda dans 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 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 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 panneau Événement JSON, remplacez les valeurs par défaut en collant ce qui suit :

    { "length": 6, "width": 7 }
  5. Choisissez 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 Log groups (Groupes de journaux) de la console CloudWatch.

  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. 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 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 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 :