我有一个非常常见的用例需要同步2个dynamoDB表。逻辑流程如下:
现在,我的想法是在Requests表上启用流。当请求完成时,它将触发一个lambda函数来检查是否所有请求都已完成。
我看过很多文件。并发现这种方法的许多局限性:
因此,我认为每次触发lambda函数时都必须扫描requests表。这种方法会有多少开销吗?
我也对可以解决这个问题的所有其他解决方案持开放态度。我不确定我是否遵循这里的最佳做法。
答案 0 :(得分:0)
我认为你可以使用另一台DynamoDB服务器来解决它。
您可以在DynamoDB中创建一个单独的表:
<强> FinishedTasks 强> JobId - 分区键 - 作业的ID FinishedRequestId - 排序键 - 已完成请求的ID
每个lambda工作都会执行以下操作:
在这种情况下,您有一个幂等任务(如果您覆盖 FinishedTasks 中的项目两次并不重要)
当然,您需要从 FinishedTasks 中删除旧项目。要使用TTL feature自动删除旧项目。