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

时间:2017-10-25 16:02:00

标签: amazon-dynamodb aws-lambda aws-api-gateway amazon-dynamodb-streams

挑战

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

我的想法

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

问题

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

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

替代

另一种方法是让客户端代码决定响应中缺少哪些项目,然后向队列发送第二个请求&#34;那些人口,但我真的很喜欢这种逻辑,不要去客户端,也避免两次网络往返。

我还调查了dynamoDB是否能够做到这一点&#34;为我找到或创建&#34; -behaviour - 但似乎没有运气:What event can be triggered to fire a lambda function in DynamoDB?

1 个答案:

答案 0 :(得分:0)

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