Comment puis-je appeler une fonction Lambda de manière asynchrone à partir de mon API Amazon API Gateway ?

Lecture de 2 minute(s)
0

Je souhaite appeler une fonction AWS Lambda de manière asynchrone plutôt que synchrone pour mon API Amazon API Gateway.

Solution

API REST

Dans l'intégration sans proxy Lambda, la fonction Lambda principale est appelée de manière synchrone par défaut. Vous pouvez configurer la fonction Lambda pour qu'une intégration Lambda sans proxy soit appelée de manière asynchrone en spécifiant « Event » (Événement) comme type d'invocation Lambda.

1.    Ouvrez la console API Gateway, puis cliquez sur API et choisissez votre API REST.

2.    Dans Ressources, sélectionnez GET, puis Demande d'intégration.

3.    Pour Type d'intégration, choisissez Fonction Lambda.

4.    Développez les en-têtes HTTP, puis cliquez sur Ajouter un en-tête.

5.    Pour Nom, saisissez X-Amz-Invocation-Type.

6.    Pour Mappage à partir de, saisissez « Event » (Événement).

7.    Redéployez l'API REST.

Pour appeler la fonction Lambda avec l'option asynchrone ou synchrone, ajoutez un en-tête InvocationType.

1.    Ouvrez la console API Gateway, puis cliquez sur API et choisissez votre API REST.

2.    Dans Ressources, sélectionnez GET, puis Demande de méthode.

3.    Dans Validateur de demande, cliquez sur l'icône de modification et sélectionnez la liste déroulante, puis Valider les paramètres de chaîne de requête et les en-têtes.

4.    Cliquez sur l'icône de mise à jour pour enregistrer les modifications.

5.    Développez les en-têtes HTTP, puis cliquez sur Ajouter un en-tête.

6.    Dans Nom, saisissez InvocationType, puis sélectionnez Obligatoire.

7.    Dans Demande d'intégration, développez les en-têtes HTTP et sélectionnez Ajouter un en-tête.

8.    Pour Nom, saisissez X-Amz-Invocation-Type.

9.     Pour Mappage à partir de, saisissez method.request.header.InvocationType.

10.    Redéployez l'API REST.

Les clients peuvent inclure l'en-tête InvocationType: Event dans les demandes d'API pour les invocations asynchrones ou InvocationType: RequestResponse pour les invocations synchrones.

Pour plus d'informations, consultez Configurer l'appel asynchrone de la fonction Lambda du backend.

API HTTP

Les API HTTP ne prennent en charge que les intégrations de proxy pour Lambda. Vous ne pouvez pas définir l'en-tête X-Amz-Invocation-Type dans l'intégration d'API Gateway pour les API HTTP. Vous pouvez utiliser deux fonctions Lambda, l'une faisant office de proxy.

Exemple de configuration :

HTTP API --> Invoke Lambda1 synchronously --> Invoke Lambda2 asynchronously

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an