View a markdown version of this page

Invoquez localement des fonctions Lambda avec AWS SAM - AWS Serverless Application Model

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.

Invoquez localement des fonctions Lambda avec AWS SAM

L'invocation locale d'une fonction Lambda avant de la tester ou de la déployer dans le cloud peut présenter de nombreux avantages. Cela vous permet de tester plus rapidement la logique de votre fonction. Les tests locaux réduisent d'abord la probabilité d'identifier les problèmes lors des tests dans le cloud ou pendant le déploiement, ce qui peut vous aider à éviter des coûts inutiles. De plus, les tests locaux facilitent le débogage.

Vous pouvez appeler votre fonction Lambda localement en utilisant la sam local invoke commande et en fournissant l'identifiant logique de la fonction et un fichier d'événements. sam local invokeaccepte également stdin en tant qu'événement. Pour plus d’informations sur les événements, consultez Evénement dans le Guide du développeur AWS Lambda . Pour plus d'informations sur les formats de messages d'événements provenant de différents AWS services, consultez la section Utilisation AWS Lambda avec d'autres services dans le Guide du AWS Lambda développeur.

Note

Il n'est pas recommandé d'utiliser les fonctionnalités d'appel local de la SAM CLI dans du code non fiable. Pour vous isoler complètement de votre environnement local, exécutez le code directement dans le service Lambda.

Note

La sam local invoke commande correspond à la commande AWS Command Line Interface (AWS CLI) aws lambda invoke. Vous pouvez utiliser l'une ou l'autre commande pour appeler une fonction Lambda.

Vous devez exécuter la commande sam local invoke dans le répertoire du projet qui contient la fonction que vous voulez appeler.

Exemples :

# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help

Fichier de variable d'environnement

Pour déclarer localement des variables d'environnement qui remplacent les valeurs définies dans vos modèles, procédez comme suit :

  1. Créez un .env fichier JSON ou contenant les variables d'environnement à remplacer.

  2. Utilisez l'argument --env-vars pour remplacer les valeurs définies dans vos modèles.

L'--env-varsoption prend en charge deux formats de fichiers. Le format de fichier est automatiquement détecté en fonction du contenu du fichier.

Déclarer des variables d'environnement avec JSON

Pour déclarer des variables d'environnement qui s'appliquent globalement à toutes les ressources, spécifiez un objet Parameters comme suit :

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }

Pour déclarer des variables d'environnement différentes pour chaque ressource, spécifiez des objets pour chaque ressource comme suit :

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

Lorsque vous spécifiez des objets pour chaque ressource, vous pouvez utiliser les identifiants suivants, énumérés dans l'ordre de la plus haute à la plus basse priorité :

  1. logical_id

  2. function_id

  3. function_name

  4. Identifiant de chemin complet

Vous pouvez utiliser les deux méthodes précédentes de déclaration des variables d'environnement dans un seul fichier. Ce faisant, les variables d'environnement que vous avez fournies pour des ressources spécifiques ont la priorité sur les variables d'environnement globales.

Enregistrez vos variables d'environnement dans un fichier JSON, tel que env.json.

Déclarer des variables d'environnement avec des fichiers .env

Vous pouvez également utiliser un .env fichier pour déclarer des variables d'environnement. Les variables déclarées dans un .env fichier s'appliquent globalement à toutes les fonctions, comme l'Parametersobjet au format JSON.

TABLE_NAME=localtable BUCKET_NAME=amzn-s3-demo-bucket STAGE=dev

Le .env format prend en charge les commentaires (lignes commençant par#) et les valeurs entre guillemets.

Note

Le .env format ne prend en charge que les variables d'environnement globales. Pour déclarer des variables d'environnement spécifiques à une fonction, utilisez le format JSON.

Remplacement des valeurs des variables d'environnement

Pour remplacer les variables d'environnement par celles définies dans votre fichier de variables d'environnement, utilisez l'--env-varsargument associé aux start-api commandes invoke ou. Par exemple :

# Using a JSON file sam local invoke --env-vars env.json # Using a .env file sam local invoke --env-vars .env

Layers

Si votre application comporte des couches, pour plus d'informations sur la façon de déboguer les problèmes liés aux couches sur votre hôte local, consultez Améliorez l'efficacité en utilisant les couches Lambda avec AWS SAM.

En savoir plus

Pour un exemple pratique d'invocation de fonctions localement, voir le module 2 - Exécuter localement dans The Complete AWS SAM Workshop.