简体   繁体   中英

API Gateway not passing event to lambda from console?

I'm trying to call a basic lambda from my API Gateway console. The lambda has an input taken in by the event called filterBy .

I created a query string called filterBy however, when I try to invoke the lambda I get the error:

{errorMessage: {'statusCode': 500, 'body': '{"msg": "KeyError(\'filterBy\')"}'}}

Presumably because the piece of code in my lambda

event['filterBy'] is not finding a filterBy in the event. What do I need to do so that I can get the filterBy in the event from the API Gateway console? I understand this is probably quite simple but I surprisingly cannot find anything about this so any help would be appreciated.

Based on the integration type, approach can be vary.

1. Lambda custom integrations:

Looks like you are trying to use Lambda custom integrations . If that is the case you have to add a mapping template as below.

(under the Integration Request -> Mapping Templates --> Add mapping template )

{
     "filterBy": "$input.params('filterBy')"
} 

Please refer this article or this video for more info.

2. Lambda proxy integrations:

If you are using Lambada proxy integration (either as REST API or as HTTP APIs ), then instead of event['filterBy'] , you have to access the queryStringParameters first and then access the relevant query param.

event['queryStringParameters']['filterBy']

And another thing is: once you modify something in API GW, please make sure to deploy and wait some time before test. :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM