首页 > 解决方案 > 在 AWS lambda 中,提取、转换、聚合和写入 DynamoDB 的最佳方法是什么

问题描述

我想获得在以下用例中使用 AWS 服务的第二个选项:

  1. 客户端调用 lambda 函数并将Invoice记录写入 DynamoDB ( InvoiceTbl)
  2. 在 中Invoice, 有 一个bills存储 为 json 属性的 集合[{bill1, bill2, bill3}]—— 我 想 将 它们 拆分 并 单独 写入BillTbl,只有 当状态Invoice's被 标记 为 已支付时 .
  3. 如果InvoicePaid,我还想汇总金额并将其更新为InvoiceTotalTbl

当然,直接的方法是在 lambda 函数中执行它们。但是,我想解耦2 and 3到另一个过程。我在想:

设计一

  1. 使用DynamoDB StreamonInvoiceTbl触发另一个 lambda 函数
  2. 在那个 lambda 函数中,检查Invoice状态是否为Paid,然后执行2 and 3

设计二

  1. 在 lambda 函数中,如果Invoice状态为Paid,则将其添加到SQS
  2. 然后SQS会调用一个 lambda 函数来做2 and 3

缺点

SQS有效负载限制为 256 KB


设计 3

  1. 利用Step Function
  2. 一旦Invoice状态转换为已付款,它会做2 and 3

缺点

Step Function很贵(成本方面)


设计 1在速度方面似乎很好 -2 and 3可以快速执行而没有太多延迟。但我不喜欢它每次都被触发的想法。只有在状态为Paid2 and 3时才应该触发,而且恐怕随着时间的推移,成本会很昂贵Invoice

对于我的特定用例,我应该寻找其他更好的设计/aws 服务吗?

谢谢。

标签: amazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


推荐阅读