【发布时间】: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 参数吗?
【问题讨论】:
-
感谢您的回复!如果我错了,请纠正我,但除非我有 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