是否可以在 AWS API Gateway 的响应正文映射模板中访问原始请求正文?

AlV*_*Vaz 5 amazon-web-services aws-api-gateway

使用 API Gateway,我尝试定义一个接受 application/json 的 POST 端点来执行以下操作:

  1. 异步触发 Lambda
  2. 使用由请求正文中的元素组成的 JSON 负载进行响应

我有#1工作。我觉得书上是这样的

这是我被绊倒的#2。看起来我无权访问响应映射模板上下文中的请求正文。我可以使用 $input.params 访问原始查询参数,但找不到任何可以为我提供原始请求正文的属性,并且我需要它来获取我想要响应的数据。要么是这样,要么我需要弄清楚如何异步启动 Lambda 以某种方式提供原始请求正文。

有谁知道这是否可能?

我的目标是确保我的 API 尽可能快地响应,而不会导致 Lambda 冷启动来响应,并通过启动 Lambda 同时触发异步工作流程。我也愿意与 SNS 而不是直接与 Lambda 集成,并让 Lambda 订阅该主题,但我不知道这是否能让我访问响应映射模板中所需的数据。

And*_*per 6

来自/sf/answers/4303768731/

将原始请求正文保存在集成映射模板中:

#set($context.requestOverride.path.body = $input.body)
Run Code Online (Sandbox Code Playgroud)

在集成映射响应中检索它:

#set($body = $context.requestOverride.path.body)
{
   "statusCode": 200,
   "body": $body,
}
Run Code Online (Sandbox Code Playgroud)

您还可以访问特定属性:

#set($object = $util.parseJson($body))
{
    "id": "$object.id"
}
Run Code Online (Sandbox Code Playgroud)


AlV*_*Vaz -1

我已经确定,我想做的事情是不可能的。