如何从通过API网关提供的AWS Lambda函数内部访问URL查询字符串参数?
我已经设置了API网关+ Lambda函数,所以我可以从公共URL调用它。我的Python函数很简单:
def lambda_handler(event, context):
print('event:', event)
print('context:', context)我已经将API的GET "Method Request“处理程序配置为传递"abc”querystring参数。
我还将API的GET“集成请求”处理程序配置为从"method.request.querystring.abc“映射"abc”。
然而,当我访问我的网址时,例如https://myapp.execute-api.us-east-1.amazonaws.com/prod/myfunc?abc=123,唯一记录的是:
event: {}
context: <bootstrap.LambdaContext object at 0x7fc7a6cb0850>我做错了什么?为什么在event字典中没有传递"abc“?
发布于 2020-04-19 06:04:21
检查集成请求中的Use Lambda Proxy integration,使其传递event中的所有请求详细信息。
发布于 2020-05-26 17:28:56
我也有类似的问题,我知道这有多令人沮丧。使用此映射模板:
{
"method": "$context.httpMethod",
"body" : $input.json('$'),
"headers": {
#foreach($param in $input.params().header.keySet())
"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end
#end
},
"queryStringParameters": {
#foreach($param in $input.params().querystring.keySet())
"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end
#end
},
"pathParameters": {
#foreach($param in $input.params().path.keySet())
"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
#end
}
}然后你会发现你的事件看起来像这样:
{
"method":"GET",
"body":{
},
"headers":{
},
"queryParams":{
"id":"459463732",
"command":"join_session"
},
"pathParams":{
}
}上下文用于其他信息,例如IP地址和超时设置。
https://stackoverflow.com/questions/61296479
复制相似问题