【发布时间】:2019-06-27 03:33:57
【问题描述】:
使用 API Gateway,我正在尝试定义一个接受 application/json 的 POST 端点来执行以下操作:
- 异步触发 Lambda
- 使用由请求正文中的元素组成的 JSON 有效负载进行响应
我有 #1 工作。我认为这是书本上的。
这是我被绊倒的#2。看起来我无法在响应映射模板的上下文中访问请求正文。我可以使用 $input.params 访问原始查询参数,但我找不到任何可以为我提供原始请求正文的属性,我需要它来获取我想要响应的数据。要么就是这样,要么我需要弄清楚如何让 Lambda 异步启动以某种方式提供原始请求正文。
有人知道这是否可行吗?
我的目标是确保我的 API 尽可能快地响应,而不会导致 Lambda 冷启动以响应并同时通过启动 Lambda 来触发异步工作流。我也愿意直接与 SNS 而不是 Lambda 集成,并让 Lambda 订阅该主题,但我不知道这是否能让我访问响应映射模板中所需的数据。
【问题讨论】:
-
你有没有尝试过类似
{ "name" : "$input.params('name')", "body" : $input.json('$') }或者直接$input.body的东西? -
@NickiKlein $input.params 具有请求的原始查询字符串参数,但 $input.body 为空,因为它来自异步 lambda 调用,我无法在任何变量中找到原始请求正文。
标签: amazon-web-services aws-api-gateway