Quiero invocar de forma asíncrona una función de AWS Lambda para mi API Amazon API Gateway. No quiero invocar la función de forma síncrona.
Resolución
API de REST
En la integración sin proxy de Lambda, Lambda invoca de forma síncrona la función de backend de forma predeterminada. Para invocar de forma asíncrona la función de backend, establezca el tipo de invocación de Lambda en Evento.
Siga estos pasos:
- Abra la consola de API Gateway.
- Elija las API y, a continuación, elija su API de REST.
- En Recursos, elija GET y, a continuación, elija Solicitud de integración.
- En Tipo de integración, seleccione Función de Lambda.
- Amplíe los parámetros de encabezados de solicitud de URL y, a continuación, elija Agregar parámetro de encabezado de solicitud.
- En Nombre, escriba X-Amz-Invocation-Type.
- En Asignado desde, escriba Evento.
- Vuelva a implementar la API de REST.
Para invocar la función de Lambda con la opción asíncrona o síncrona, agregue un encabezado InvocationType.
Siga estos pasos:
- Abra la consola de API Gateway.
- Elija las API y, a continuación, elija su API de REST.
- En Recursos, elija GET y, a continuación, elija Solicitud de método.
- En el validador de solicitudes, seleccione el icono Editar.
- Seleccione la lista desplegable y, a continuación, seleccione Validar los parámetros y encabezados de las cadenas de consulta.
- Seleccione el icono Guardar.
- Expanda los encabezados de solicitud HTTP y, a continuación, elija Agregar encabezado.
- En Nombre, escriba InvocationType y, a continuación, elija Obligatorio.
- En Solicitud de integración, expanda los parámetros de los encabezados de solicitud de URL y, a continuación, elija Agregar parámetro de encabezado de solicitud.
- En Nombre, escriba X-Amz-Invocation-Type.
- En Asignado desde, introduzca method.request.header.InvocationType.
- Vuelva a implementar la API de REST.
Los clientes pueden incluir el encabezado InvocationType: evento en las solicitudes de API para invocaciones asíncronas o el encabezado InvocationType: RequestResponse para invocaciones síncronas.
API HTTP
Las API HTTP solo admiten integraciones de proxy para Lambda. No puede configurar el encabezado X-Amz-Invocation-Type en la integración de API Gateway para las API HTTP. En su lugar, utilice dos funciones de Lambda con una que actúe como proxy. Para invocar una función de Lambda desde otra, use la API Invoke y establezca InvocationType en Evento en la primera función de Lambda.
Configuración del ejemplo:
La API HTTP invoca Lambda1 de forma síncrona y, a continuación, Lambda1 invoca Lambda2 de forma asíncrona.