How to invoke lambda async with AWS ApiGateway HttpApi

后端 未结 1 1970

I\'m using the new HTTP Api (The one introduced in December 2019) of AWS Api Gateway.

I used to work with REST Api, which lets you trigger lambda functions async by addi

相关标签:
1条回答
  • 2021-01-21 12:59

    You can invoke a Lambda function asynchronously via API Gateway only if the integration is non-proxy. By default, HTTP APIs are designed to support only proxy integrations for Lambda and HTTP endpoints so it is not possible to set the X-Amz-Invocation-Type header in the API Gateway integration config.

    In order to invoke a Lambda asynchronously via HTTP API, you can use two Lambda functions with one acting as proxy to your actual function.

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

    Below is a sample NodeJS code snippet for Lambda1 to invoke Lambda2 asynchronously -

    const params = {
            FunctionName: 'FUNCTION_NAME',
            InvocationType: 'Event',
            Payload: JSON.parse(event.body) // this is the event coming from API Gateway to Lambda1
        };
    await lambda.invoke(params).promise(); // await here is only going to wait for the HTTP request to be successful. Once Lambda2 is invoked, it will return immediately
    
    0 讨论(0)
提交回复
热议问题