首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Amazon网关将查询字符串或路由参数传递给AWS Lambda

如何从Amazon网关将查询字符串或路由参数传递给AWS Lambda
EN

Stack Overflow用户
提问于 2015-07-09 23:20:12
回答 22查看 408.5K关注 0票数 474

例如,如果我们想使用

GET /user?name=bob

GET /user/bob

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

我在文档中看到了一些关于设置“映射自”的内容,但在API控制台中找不到这种设置。

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

即使我定义了一个查询字符串,我也看不到这两个选项。

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2017-09-08 10:19:04

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

您所需要做的就是在Integration下,在资源下面,检查“使用Lambda代理集成”。

然后,您将能够访问查询参数、路径参数和标题,如下所示

代码语言:javascript
运行
复制
event['pathParameters']['param1']
event["queryStringParameters"]['queryparam1']
event['requestContext']['identity']['userAgent']
event['requestContext']['identity']['sourceIP']
票数 486
EN

Stack Overflow用户

发布于 2015-07-10 15:48:07

实现此工作的步骤如下:

在API网关控制台中..。

  1. 转到Resources -> Integration Request
  2. 单击模板下拉菜单旁边的加号或编辑图标(我知道模板字段已经打开,这里的按钮看上去是灰色的)。
  3. 显式地在内容类型字段中键入application/json,即使它显示了默认值(如果不这样做,它将不会保存,也不会提供错误消息)
  4. 将其放入输入映射{ "name": "$input.params('name')" }
  5. 单击“模板”下拉列表旁边的复选框(我假设这是最终保存的内容)
票数 237
EN

Stack Overflow用户

发布于 2015-12-07 01:26:59

我使用这个映射模板为Lambda事件提供了主体、头、方法、路径和URL查询字符串参数。我写了一篇博文,更详细地解释了模板:http://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/

下面是可以使用的映射模板:

代码语言:javascript
运行
复制
{
  "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
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  }  
}
票数 160
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31329958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档