

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
<a name="serverless-sam-cli-using-invoke"></a>

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](sam-cli-command-reference-sam-local-invoke.md) commande et en fournissant l'identifiant logique de la fonction et un fichier d'événements. **sam local invoke**accepte également `stdin` en tant qu'événement. Pour plus d’informations sur les événements, consultez [Evénement](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event) 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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html) 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) [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html). 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
<a name="serverless-sam-cli-using-invoke-environment-file"></a>

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.

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

L'`--env-vars`option 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
<a name="serverless-sam-cli-using-invoke-environment-file-declaring"></a>

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`

1. `function_id`

1. `function_name`

1. 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
<a name="serverless-sam-cli-using-invoke-environment-file-dotenv"></a>

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'`Parameters`objet 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
<a name="serverless-sam-cli-using-invoke-environment-file-override"></a>

Pour remplacer les variables d'environnement par celles définies dans votre fichier de variables d'environnement, utilisez l'`--env-vars`argument 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
<a name="serverless-sam-cli-using-invoke-layers"></a>

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](serverless-sam-cli-layers.md).

## En savoir plus
<a name="serverless-sam-cli-using-invoke-learn"></a>

Pour un exemple pratique d'invocation de fonctions localement, voir le [module 2 - Exécuter localement dans The](https://s12d.com/sam-ws-en-local) *Complete AWS SAM Workshop*.