在 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: color
、mapped: 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 字符串时出错