AWS DynamoDB:如何订购使用 DynamoDB Stream 触发的 Lambda?

问题描述

我已经启用了我的表的 DynamoDB Streaming,并且有两个 lambda 与它相关联。每当 DynamoDB 表通过 dynamo 触发器发生变化时,这两个触发器都会触发。

问题: Lambda 的两个数据都相应地插入到两个 RDS 表中。就像 Lambda-one 插入 table-one 和 Lambda-two 插入 table-2。 表一主键是表二中的外键

因此,每当两个 lambda 都触发 lambda-two 首先完成执行时,它会显示 外键约束 错误,因为 lambda-two 尝试将数据插入 table-two 中,但在此时间表一还没有主键。

所以我的问题是有什么方法可以通过 DynamoDB 订购 lambda 的触发?

解决方法

AWS Step Functions 是用于编排 Lambda 函数的完美 AWS 功能,专为此类工作流而构建。它确保后续功能的顺序执行,并提供处理错误的方法,例如如果某些功能失败,则回滚并保持一致性。

以下是分步演练:Create a Serverless Workflow with AWS Step Functions and AWS Lambda

话虽如此,如果您需要维护数据库中的参照完整性使用单个 Lambda 函数将两条记录的创建包装到一个事务中可能会简单得多。在这种情况下,数据库本身将负责维护一致性。如果它应该是一个原子写操作,就没有理由将它分成两个函数。

,

是否在内部实现了类似的东西。但我们没有通过 AWS Step Function 增加复杂性,而是使用了 AWS Lambda Destinations。支持 4 种类型的目的地

  1. SQS 队列(在这种情况下可以是 FIFO)
  2. SNS 话题
  3. 事件桥
  4. 另一个 Lambda 函数本身。

节省了围绕服务的大量移动,并且很容易实现集成。