提问者:小点点

如何从Amazon API网关向AWS Lambda传递querystring或route参数


例如,如果我们想使用

获取/user?name=bob

获取/user/bob

如何将这两个示例作为参数传递给Lambda函数?

我在文档中看到了一些关于设置“Mapped From”的内容,但我在API网关控制台中找不到该设置。

  • Method.Request.path.parameter-name用于在“方法请求”页中定义的名为parameter-name的路径参数。
  • Method.Request.querystring.parameter-name用于在“方法请求”页中定义的名为parameter-name的查询字符串参数。

尽管我定义了一个查询字符串,但我没有看到这两个选项中的任何一个。


共2个答案

匿名用户

截至2017年9月,您不再需要配置映射来访问请求体。

您只需在资源下的Integration Request下勾选“Use Lambda Proxy Integration”。

然后,您就可以访问查询参数、路径参数和头,如下所示

event['pathParameters']['param1']
event["queryStringParameters"]['queryparam1']
event['requestContext']['identity']['userAgent']
event['requestContext']['identity']['sourceIP']

匿名用户

实现此操作的步骤如下:

在API网关控制台内...

>

  • 转到资源->集成请求
  • 单击“模板”下拉菜单旁边的“加号”或“编辑”图标(我知道是奇数,因为“模板”字段已经打开,此处的按钮看起来是灰色的)
  • 在content-type字段中显式键入application/json,即使它显示默认值(如果不这样做,它将不会保存,也不会给出错误消息)
  • 将其放入输入映射{“name”:“$input.params('name')”}

    单击templates下拉列表旁边的复选框(我假设这是最终保存它的方法)