Passing event from API gateway to Lambda

rodrigocf picture rodrigocf · Oct 13, 2018 · Viewed 7.7k times · Source

I have a lambda function that can received JSON in many different forms. The idea is to receive that through API Gateway. When i test the function given any form of JSON, 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 pass any type of JSON in the body to the function?

Thanks!

EDIT

I want to use Lambda Proxy integration and i have testing with postman and the 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

Answer

thomasmichaelwallace picture thomasmichaelwallace · Oct 13, 2018

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.