无法读取AWS中的查询参数

问题描述:

我想将查询参数从API网关传递到AWS Lambda,但我总是收到null值。无法读取AWS中的查询参数

这是我的Lambda函数,我只想返回http://foo.bar的值? 名=丹

'use strict'; 

exports.handle = (context, event, callback) => { 
    callback(null, event.name); 
} 

在API网关我也做了以下内容:

  1. 创建资源
  2. 创建方法(GET
  3. 选择了正确的lambda函数
  4. 选择我的GET方法并点击Integration Request
  5. 选择Body Mapping Templates
  6. 集的Content-Type到application/json
  7. 新增{"name": "$input.params('name')" }
  8. 保存和部署!

但是,当我加载我的API时,event.name的值总是null。访问API通过...amazonaws.com/beta/user?name=dan

编辑完成的:我已经试过接受的答案here但毕竟只是在回调返回时,我只收到此数据:

{ 
    "callbackWaitsForEmptyEventLoop": true, 
    "logGroupName": "", 
    "logStreamName": "", 
    "functionName": "", 
    "memoryLimitInMB": "", 
    "functionVersion": "", 
    "invokeid": "", 
    "awsRequestId": "", 
    "invokedFunctionArn": "" 
} 

我省略了值。

函数参数为contextevent位置是错误的。更改它们的位置如下

'use strict'; 

exports.handle = (event, context, callback) => { 
    callback(null, event.name); 
} 
+0

呃,这样一个愚蠢的错误!非常感谢你。 – Dan

+0

不客气。 –

+0

好点的伴侣:)。想给10 upvote,但它只允许一个:) –

即使我之前有同样的问题,我已经修改了身体映射模板,如下所示。请尝试一下。

#set($inputRoot = $input.path('$')) 
{  
"name" : "$input.params('$.name')" 
} 

如果您使用路径参数,那么请尝试以下,

#set($inputRoot = $input.path('$')) 
{ 
"name" : "$input.path('$.name')" 
} 
+0

在我的回调函数中使用'event.name'时,我仍然得到'null'值。 – Dan

+0

你使用路径参数或查询字符串吗? –

+0

我试图从查询字符串访问变量所以/ beta/user?name = Dan - 我想访问'name' – Dan