Search code examples
amazon-web-servicesaws-lambdaapi-gateway

Passing event from API gateway to Lambda


I have a lambda function that can receive JSON in many different forms. The idea is to receive that through API Gateway. When I test the function using JSON as input, it works fine. However, when I try to test it through API Gateway, it fails because the event is empty.

I tried to add an empty model mapping:

{}

But I still get the same result. How can I make the API Gateway pass any type of JSON in the body to the function?

Thanks!

EDIT

I want to use Lambda Proxy integration and I have testing setup with postman and also with API gateway test feature in the AWS console. I'm just doing a POST with the required JSON in the body and the content type headers.

enter image description here


Solution

  • You don't need an response model.

    When you use a lambda proxy in API gateway you get the data in specific form (https://serverless.com/framework/docs/providers/aws/events/apigateway/#example-lambda-proxy-event-default) for full details.

    Unlike invoking directly where the handler(event, ctx, callback) function allows you to simply do const payload = event to get the data you were testing with; you will need to do const payload = JSON.parse(event.body), as the event argument contains significantly more information about the full http request.