是否可以在一个 API 网关请求中执行多个集成请求?

Is it possible to do multiple integration requests in one API gateway request?

挑战

我想用 API 网关构建一个简单快速(< 50 毫秒)API,作为智能缓存。对 API 的请求应该根据它们的键从 DynamoDB 中批量获取一些项目。但是,如果在 dynamoDB 中找不到一个或多个项目,我想以某种方式触发 lambda 函数,谁知道如何在 dynamoDB 中为以后的请求)填充那些丢失的项目。

我的想法

我这样做的方法是仅使用它们的键在 DynamoDB 中创建任何缺失的项目,然后使用 DynamoDB steams 调用 lambda 函数,该函数读取记录并用来自另一个外部的值填充它们的空白属性 API。

问题

然而,我的问题是,据我所知,我只能对 API 网关的每个请求向 dynamoDB 发出一个请求(BatchGetItem 或有条件的 PutItem)。有什么方法可以实现我想要的。

我真的很想使用 API 网关,因为这需要非常积极地扩展,我不想处理服务器和应用程序的扩展。

备选方案

另一种方法是让客户端代码决定响应中缺少哪些项目,然后向 "queue" 那些用于人口的项目发送第二个请求,但是我真的很喜欢这种逻辑不要在客户端进行,也可以避免两次网络往返。

我还研究了 dynamoDB 是否能够为我做到这一点 "find or create"-行为 - 但看起来,运气不好:

如果您的 API 网关端点调用 Lambda 函数(而不是执行 DynamoDB 代理,无论如何都不是干净的 API),那么您可以 运行 您可以编写任何代码想。每当 API 网关调用触发 Lambda 函数时,您可以根据需要对 DynamoDB 和其他服务进行任意多次调用。唯一的限制是您的 Lambda 函数可以 运行.

的时间量