

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.

# Invocation d’une fonction Lambda de manière synchrone
<a name="invocation-sync"></a>

Lorsque vous invoquez une fonction de façon synchrone, Lambda l’exécute et attend une réponse. Une fois l’exécution de la fonction terminée, Lambda renvoie la réponse du code de la fonction avec des données supplémentaires, telles que la version de la fonction qui a été invoquée. Pour invoquer une fonction de façon synchrone avec AWS CLI, utilisez la commande `invoke`.

```
aws lambda invoke --function-name my-function \
    --cli-binary-format raw-in-base64-out \
    --payload '{ "key": "value" }' response.json
```

L’option **cli-binary-format** est obligatoire si vous utilisez AWS CLI version 2. Pour faire de ce paramètre le paramètre par défaut, exécutez `aws configure set cli-binary-format raw-in-base64-out`. Pour plus d’informations, consultez les [options de ligne de commande globales AWS CLI prises en charge](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) dans le *Guide de l’utilisateur AWS Command Line Interface version 2*.

Vous devriez voir la sortie suivante :

```
{
    "ExecutedVersion": "$LATEST",
    "StatusCode": 200
}
```

Le diagramme suivant montre des clients invoquant une fonction Lambda de manière synchrone. Lambda envoie les événements directement à la fonction et renvoie la réponse de la fonction à l’appelant.

![\[\]](http://docs.aws.amazon.com/fr_fr/lambda/latest/dg/images/invocation-sync.png)


`payload` est une chaîne qui contient un événement au format JSON. Le nom du fichier où l’AWS CLI écrit la réponse de la fonction est `response.json`. Si la fonction renvoie un objet ou une erreur, le corps de la réponse est l’objet ou l’erreur au format JSON. Si la fonction se termine sans erreur, le corps de la réponse est `null`.

**Note**  
Lambda n’attend pas que les extensions externes se terminent avant d’envoyer la réponse. Les extensions externes s’exécutent comme des processus indépendants dans l’environnement d’exécution et continuent de s’exécuter après l’invocation de la fonction. Pour plus d’informations, consultez [Utilisation des extensions Lambda pour augmenter vos fonctions Lambda](lambda-extensions.md).

La sortie de la commande qui s’affiche dans le terminal inclut des informations extraites d’en-têtes figurant dans la réponse de Lambda. Ces informations incluent la version qui a traité l’événement (utile lorsque vous utilisez des [alias](configuration-aliases.md)) et le code d’état renvoyé par Lambda. Si Lambda a pu exécuter la fonction, le code d’état est 200, même si la fonction a renvoyé une erreur.

**Note**  
Pour les fonctions avec un long délai d’attente, votre client peut être déconnecté lors d’une invocation synchrone, pendant qu’il attend une réponse. Configurez votre client HTTP, SDK, pare-feu, proxy ou système d’exploitation pour permettre des connexions longues avec des paramètres de délai d’attente ou de keep-alive.

Si Lambda n’a pas pu exécuter la fonction, l’erreur s’affiche dans la sortie.

```
aws lambda invoke --function-name my-function \
    --cli-binary-format raw-in-base64-out \
    --payload value response.json
```

Vous devriez voir la sortie suivante:

```
An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null')
 at [Source: (byte[])"value"; line: 1, column: 11]
```

La AWS CLI est un outil à code open-source qui vous permet d’interagir avec les services AWS à l’aide de commandes dans votre ligne de commande shell. Pour effectuer les étapes de cette section, vous devez disposer de la [version 2 de l’AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

Vous pouvez utiliser [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) pour récupérer les journaux d’une invocation à l’aide de l’option de commande `--log-type`. La réponse inclut un champ `LogResult` qui contient jusqu’à 4 Ko de journaux codés en base64 provenant de l’invocation.

**Example récupérer un ID de journal**  
L’exemple suivant montre comment récupérer un *ID de journal* à partir du champ `LogResult` d’une fonction nommée `my-function`.  

```
aws lambda invoke --function-name my-function out --log-type Tail
```
Vous devriez voir la sortie suivante:  

```
{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...",
    "ExecutedVersion": "$LATEST"
}
```

**Example décoder les journaux**  
Dans la même invite de commandes, utilisez l’utilitaire `base64` pour décoder les journaux. L’exemple suivant montre comment récupérer les journaux encodés en base64 pour `my-function`.  

```
aws lambda invoke --function-name my-function out --log-type Tail \
--query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
```
L’option **cli-binary-format** est obligatoire si vous utilisez AWS CLI version 2. Pour faire de ce paramètre le paramètre par défaut, exécutez `aws configure set cli-binary-format raw-in-base64-out`. Pour plus d’informations, consultez les [options de ligne de commande globales AWS CLI prises en charge](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) dans le *Guide de l’utilisateur AWS Command Line Interface version 2*.  
Vous devriez voir la sortie suivante :  

```
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST
"AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib",
END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8
REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8  Duration: 79.67 ms      Billed Duration: 80 ms         Memory Size: 128 MB     Max Memory Used: 73 MB
```
L’utilitaire `base64` est disponible sous Linux, macOS et [Ubuntu sous Windows](https://docs.microsoft.com/en-us/windows/wsl/install-win10). Les utilisateurs de macOS auront peut-être besoin d’utiliser `base64 -D`.

Pour plus d’informations sur l’API `Invoke` et la liste complète des paramètres, en-têtes et erreurs, consultez [Invoquer](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html).

Lorsque vous invoquez une fonction directement, vous pouvez vérifier la réponse pour les erreurs et réessayer. AWS CLI et le kit SDK AWS effectuent automatiquement de nouvelles tentatives selon les délais d’expiration du client, les limitations et les erreurs de service. Pour plus d’informations, consultez [Présentation du comportement des nouvelles tentatives dans Lambda](invocation-retries.md).