【问题标题】:How to retrieve a URL query string parameter from inside an AWS Lambda Python function?如何从 AWS Lambda Python 函数中检索 URL 查询字符串参数?
【发布时间】:2020-08-01 10:07:31
【问题描述】:

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

我同时设置了 API 网关 + Lambda 函数,因此我可以从公共 URL 调用它。我的 Python 函数很简单:

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

我已将 API 的 GET“方法请求”处理程序配置为通过“abc”查询字符串参数。

我还配置了 API 的 GET "Integration Request" 处理程序以从 "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”?

【问题讨论】:

    标签: python amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    检查集成请求中的Use Lambda Proxy integration,使其传递event 中的所有请求详细信息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多