AWS DynamoDB:如何对使用 DynamoDB Stream 触发的 Lambda 进行排序?

AWS DynamoDB: How to ordering the Lambda's triggered with DynamoDB Stream?

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

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

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

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

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

这是分步演练:创建无服务器工作流 使用 AWS Step Functions 和 AWS Lambda

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

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

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

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