【问题标题】:Access GET parameter in AWS Lambda在 AWS Lambda 中访问 GET 参数
【发布时间】:2018-03-10 04:19:59
【问题描述】:

我是 AWS 新手,我刚刚成功设置了一个带有 RDS 连接的 Lambda 函数。现在我想通过 API 网关从外部访问我的新函数并传递一些参数,例如:“color”:“red”

https://my-api-id.execute-api.region-id.amazonaws.com/flowers?color=red

我已经按照developer guide 设置了所有内容,但遗憾的是我无法在我的 Python Lambda 函数中访问 GET 参数。

到目前为止,我在 AWS API Gateway 中所做的工作:

  • 创建资源“/flowers”和 GET 方法
  • GET -> 方法请求 -> URL 查询字符串参数 -> 添加“颜色”
  • GET -> 集成请求 -> 类型:Lambda 函数
  • GET -> 集成请求 -> URL 查询字符串参数 -> 添加了name: colormapped: method.request.querystring.color

我尝试访问 lambda 处理程序中的 color 参数,但事件始终为空,我不知道该参数应该在哪里

def handler(event, context):

    return event     // {}

我认为我无法使用 body 映射模板,除非我没有使用 GET 的请求正文。

有人知道我需要在 Python Lambda 函数中做什么,才能访问我的 color 参数吗?

【问题讨论】:

  • 感谢您的回复!如果我错了,请纠正我,但除非我有 GET 请求,否则我没有任何请求正文,甚至没有内容类型。我看到我可以使用 $input.params('querystringkey') 访问 Body Mapping Template 中的参数,但您能解释一下如何在我的实际 lambda 函数中访问这些数据吗?
  • 访问查询字符串的最佳和标准方式是仅使用集成请求。甚至 AWS 官方文档也只建议这样做。请查看docs.aws.amazon.com/apigateway/latest/developerguide/… 中的“使用查询参数创建 GET 方法以调用 Lambda 函数”部分。或者,您可以使用其他 npm 包,如“querystring”(nodejs.org/api/querystring.html)来获取查询字符串,这不是官方的.

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


【解决方案1】:

使用 Lambda 代理 作为您的集成请求类型。

在你的处理程序中,

def handler(event, context):

    return {
        'statusCode': 200,
        'body': json.dumps(event),
    }

您的查询参数应该可以通过event['queryStringParameters'] 访问。

参考:Set up a Proxy Resource with the Lambda Proxy Integration

【讨论】:

    猜你喜欢
    • 2019-10-10
    • 2023-04-03
    • 1970-01-01
    • 2021-03-01
    • 2016-02-14
    • 2015-03-11
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多