Gestionnaire de fonction Lambda en Python - 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.

Gestionnaire de fonction Lambda en Python

Le gestionnaire de fonction Lambda est la méthode dans votre code de fonction qui traite les événements. Lorsque votre fonction est invoquée, Lambda exécute la méthode du gestionnaire. Votre fonction s'exécute jusqu'à ce que le gestionnaire renvoie une réponse, se ferme ou expire.

Vous pouvez utiliser la syntaxe générale suivante lors de la création d'un gestionnaire de fonctions dans Python :

def handler_name(event, context): ... return some_value

Dénomination

Le nom du gestionnaire de fonction Lambda spécifié au moment de la création d'une fonction Lambda est dérivé des éléments suivants :

  • Nom du fichier dans lequel se trouve la fonction du gestionnaire Lambda.

  • Nom de la fonction du gestionnaire Python.

Un gestionnaire de fonction peut porter n'importe quel nom mais le nom par défaut dans la console Lambda est lambda_function.lambda_handler. Ce nom de gestionnaire de fonction reflète le nom de la fonction (lambda_handler) et le fichier dans lequel le code du gestionnaire est stocké dans (lambda_function.py).

Si vous créez une fonction dans la console en utilisant un nom de fichier ou un nom de gestionnaire de fonction différent, vous devez modifier le nom du gestionnaire par défaut.

Pour modifier le nom du gestionnaire de fonction (console)
  1. Ouvrez la page Fonctions de la console Lambda et choisissez votre fonction.

  2. Cliquez sur l'onglet Code.

  3. Faites défiler l'écran jusqu'au volet Paramètres d'exécution et choisissez Modifier.

  4. Dans Gestionnaire, saisissez le nouveau nom de votre gestionnaire de fonction.

  5. Choisissez Enregistrer.

Comment ça marche

Lorsque Lambda invoque votre gestionnaire de fonction, le runtime Lambda transmet deux arguments au gestionnaire de fonction :

  • Le premier argument est l'objet d'événement. Un événement est un document au format JSON qui contient des données à traiter pour une fonction Lambda. Le runtime Lambda convertit l'événement en objet et la transmet au code de votre fonction. Il est généralement du type dict Python. Il peut également être de type list, str, int, float ou NoneType.

    L'objet d'événement contient des informations provenant du service invoquant. Lorsque vous invoquez une fonction, vous déterminez la structure et le contenu de l'événement. Lorsqu'un service AWS invoque votre fonction, il définit la structure de l'événement. Pour de plus amples informations sur les événements des services AWS, veuillez consulter Utilisation AWS Lambda avec d'autres services.

  • Le deuxième argument est l'objet de contexte. Un objet contexte est transmis à votre fonction par Lambda au niveau du runtime. Cet objet contient des méthodes et des propriétés qui fournissent des informations sur l'invocation, la fonction et l'environnement de runtime.

Renvoi d'une valeur

Un gestionnaire peut renvoyer une valeur. Ce qu'il advient de la valeur renvoyée dépend du type d'invocation et du service qui a invoqué la fonction. Par exemple :

  • Si vous exécutez le type d'invocation RequestResponse, comme Invocation synchrone, AWS Lambda renvoie le résultat de l'appel de la fonction Python au client qui invoque la fonction Lambda (dans la réponse HTTP à la demande d'invocation, sérialisée dans le JSON). Par exemple, la console AWS Lambda utilise le type d'invocation RequestResponse. Dès lors, lorsque vous invoquez la fonction par le biais de la console, cette dernière affiche la valeur renvoyée.

  • Si le gestionnaire renvoie des objets qui ne peuvent pas être sérialisées par json.dumps, le runtime renvoie une erreur.

  • Si le gestionnaire renvoie None, comme le font implicitement les fonctions Python sans une instruction return, le runtime renvoie null.

  • Si vous exécutez le type d'invocation Event (une invocation asynchrone), la valeur sera ignorée.

Note

Dans Python 3.9 et les versions ultérieures, Lambda inclut le requestId de l'invocation dans la réponse d'erreur.

Exemples

La section suivante comprend des exemples de fonctions Python que vous pouvez utiliser avec Lambda. Si vous utilisez la console Lambda pour créer votre fonction, vous n'avez pas besoin d'attacher un fichier d'archive .zip pour exécuter les fonctions dans cette section. Ces fonctions utilisent des bibliothèques Python standard, qui sont incluses avec le runtime Lambda que vous avez sélectionné. Pour de plus amples informations, veuillez consulter Packages de déploiement Lambda.

Renvoi d'un message

L'exemple suivant montre une fonction appelée lambda_handler. La fonction accepte l'entrée de l'utilisateur (prénom et nom), et renvoie un message contenant les données de l'événement qu'elle a reçu en tant qu'entrée.

def lambda_handler(event, context): message = 'Hello {} {}!'.format(event['first_name'], event['last_name']) return { 'message' : message }

Vous pouvez utiliser les données d'événement suivantes afin d'invoquer la fonction :

{ "first_name": "John", "last_name": "Smith" }

La réponse montre les données d'événement transmises en tant qu'entrée :

{ "message": "Hello John Smith!" }

Analyse d'une réponse

L'exemple suivant montre une fonction appelée lambda_handler. La fonction utilise les données d'événement transmises par Lambda au niveau du runtime. Il analyse la variable d'environnement dans AWS_REGION, qui est renvoyée dans la réponse JSON.

import os import json def lambda_handler(event, context): json_region = os.environ['AWS_REGION'] return { "statusCode": 200, "headers": { "Content-Type": "application/json" }, "body": json.dumps({ "Region ": json_region }) }

Vous pouvez utiliser n'importe quelle donnée d'événement afin d'invoquer la fonction :

{ "key1": "value1", "key2": "value2", "key3": "value3" }

Les runtimes Lambda définissent plusieurs variables d'environnement lors de l'initialisation. Pour plus d'informations sur les variables d'environnement renvoyées dans la réponse lors du runtime, consultez Utilisation des variables d’environnement Lambda.

La fonction de cet exemple dépend d'une réponse réussie (dans 200) de la part de l'API Invoke. Pour plus d'informations sur le statut de l'API Invoke, consultez la syntaxe de réponse d'Invoke.

Renvoi d'un calcul

L'exemple suivant montre une fonction appelée lambda_handler. La fonction accepte l'entrée de l'utilisateur et renvoie un calcul à l'utilisateur. Pour plus d'informations sur cet exemple, consultez le aws-doc-sdk-examples GitHub référentiel.

import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): ... result = None action = event.get('action') if action == 'increment': result = event.get('number', 0) + 1 logger.info('Calculated result of %s', result) else: logger.error("%s is not a valid action.", action) response = {'result': result} return response

Vous pouvez utiliser les données d'événement suivantes afin d'appeler la fonction :

{ "action": "increment", "number": 3 }