当前位置: 首页 > 知识库问答 >
问题:

如何从AWS Lambda Python函数中检索URL查询字符串参数?

孙洋
2023-03-14

如何从通过API网关提供的AWS Lambda函数中访问URL查询字符串参数

我有两个API网关Lambda函数设置,所以我可以从公共URL调用它。我的Python函数很简单:

def lambda_handler(event, context):
    print('event:', event)
    print('context:', context)

我已经配置了API的GET“方法请求”处理程序来传递“abc”querystring参数。

我还将API的GET“Integration Request”处理程序配置为从“method.Request.querystring.abc”映射“abc”。

但是,当我访问我的URL时,例如https://myapp.execute-api.us-east-1.amazonaws.com/prod/myfunc?abc=123,唯一记录的是:

event: {}
context: <bootstrap.LambdaContext object at 0x7fc7a6cb0850>

我做错了什么?为什么没有在事件字典中传递“abc”?

共有2个答案

徐高懿
2023-03-14

我也有类似的问题,我知道这是多么令人沮丧。使用此映射模板:

{
  "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地址和超时设置。

段曦
2023-03-14

选中集成请求中的使用Lambda代理集成,使其在事件中传递所有请求详细信息

 类似资料:
  • 问题内容: 从Java脚本的路径中删除查询字符串的简便方法是什么?我已经看到了使用window.location.search的Jquery插件。我不能这样做:在我的情况下,URL是从AJAX设置的变量。 问题答案: 一个简单的方法是: 对于那些还希望在不存在querystring的情况下删除哈希(不是原始问题的一部分)的人,需要做更多的工作: 编辑 @caub(最初为@crl)建议了一个更简单的

  • 问题内容: 用户可以在我的网站上使用HTML表单输入URL,因此他们可以输入以下内容:http : //www.example.com?test=123&random=abc,可以是任何内容。我需要提取某个查询参数的值,在本例中为“ test”(值123)。有没有办法做到这一点? 问题答案: 你可以用与这样的: 允许将URL分为不同的部分(方案,主机,路径,查询等);在这里,我们使用它仅获取查询(

  • 问题内容: 从格式如下的URL查询字符串中获取参数的“较少代码”方法是什么? www.mysite.com/category/subcategory?myqueryhash 输出应为: 我知道这种方法: 问题答案: 包含您要查找的数据。 文件资料 **php.net:$** _SERVER-手册

  • 如何在我的routes.jsx文件中定义一个路由来捕获参数值,这些参数值是在从服务器重定向后由Twitter的单点登录进程生成的URL中获得的? 我尝试了以下路由配置,但未捕获提到的参数:

  • 我有url从中我需要得到的值. “TypeError:无法读取未定义的属性'query'”

  • 问题内容: 我有一个HTML表单字段,其中包含一些URL字符串作为值。示例值是: 等等 如何仅从这些URL /值中获取参数? 请注意,我没有从浏览器地址栏中获取这些字符串。 问题答案: 您可以使用和。