在 AWS Lambda 中访问 GET 参数

Posted

技术标签:

【中文标题】在 AWS Lambda 中访问 GET 参数【英文标题】:Access GET parameter in AWS Lambda 【发布时间】: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 参数吗?

【问题讨论】:

Aws Api Gateway Integration Request How to append a property to request body?的可能重复 感谢您的回复!如果我错了,请纠正我,但除非我有 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)来获取查询字符串,这不是官方的. 【参考方案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

【讨论】:

以上是关于在 AWS Lambda 中访问 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 上的 Nestjs(无服务器框架)|如何访问事件参数?

如何在 AWS API Gateway GET 请求中传递查询参数? [复制]

从 AWS lambda 函数访问 Parameter Store 字符串时出错

如何用 Java 编写 AWS Lambda 来使用查询字符串参数?

如何从 JAVA 调用 AWS lambda 函数?

如何将事件信息从 aws API Gateway get 传递给 Lambda?