Je souhaite invoquer de manière asynchrone une fonction AWS Lambda pour mon API Amazon API Gateway. Je ne veux pas invoquer la fonction de manière synchrone.
Résolution
API REST
Dans l'intégration sans proxy Lambda, Lambda invoque la fonction backend de manière synchrone par défaut. Pour invoquer la fonction backend de manière asynchrone, définissez le type d’invocation Lambda sur Événement
Procédez comme suit :
- Ouvrez la console API Gateway.
- Choisissez API, puis choisissez votre API REST.
- Dans Ressources, choisissez GET, puis sélectionnez Requête d'intégration.
- Dans Type d'intégration, sélectionnez Fonction Lambda.
- Développez Paramètres des en-têtes de requête d'URL, puis choisissez Ajouter un paramètre d'en-tête de requête.
- Pour Nom, saisissez X-Amz-Invocation-Type.
- Pour Mappage à partir de, saisissez Événement.
- Redéployez l'API REST.
Pour invoquer la fonction Lambda avec l'option asynchrone ou synchrone, ajoutez un en-tête InvocationType.
Procédez comme suit :
- Ouvrez la console API Gateway.
- Choisissez API, puis choisissez votre API REST.
- Dans Ressources, choisissez GET, puis Requête de méthode.
- Dans Validateur de requête, choisissez l'icône Modifier.
- Choisissez la liste déroulante, puis Valider les paramètres de chaîne de requête et les en-têtes .
- Cliquez sur l'icône Enregistrer.
- Développez En-têtes de requête HTTP, puis choisissez Ajouter un en-tête.
- Pour Nom, saisissez InvocationType, puis choisissez Obligatoire.
- Dans Requête d'intégration, développez Paramètres des en-têtes de requête d’URL, puis choisissez Ajouter un paramètre d'en-tête de requête.
- Pour Nom, saisissez X-Amz-Invocation-Type.
- Pour Mappage à partir de, saisissez method.request.header.InvocationType.
- Redéployez l'API REST.
Les clients peuvent inclure l’en-tête InvocationType : Événement dans les requêtes d'API pour les appels asynchrones ou l’en-tête InvocationType: RequestResponse pour les appels synchrones.
API HTTP
Les API HTTP prennent uniquement en charge 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 API Gateway pour les API HTTP. Utilisez plutôt deux fonctions Lambda dont une qui fait office de proxy. Pour appeler une fonction Lambda depuis une autre, utilisez l'API Invoquer et définissez InvocationType sur Événement dans la première fonction Lambda.
Exemple de configuration :
L'API HTTP invoque Lambda1 de manière synchrone, puis Lambda1 invoque Lambda2 de manière asynchrone.