首页 > 解决方案 > dynamodb 更新上的并行 lambda 执行

问题描述

我正在构建一个处理 dynamodb 表条目的 aws lambda 服务。这个过程非常耗时,每个条目大约需要 2 秒,并且当时分批添加大约 20 个条目。我正在寻找一种同时处理批处理中的所有条目的方法,例如为每个添加的条目触发一个单独的 lambda 事件,以便它们都可以并行运行,从而更快地完成。据我了解,dynamodb 触发器每秒轮询几次,并将所有更新的条目发送到单个 lambda 事件。有没有办法配置触发器为每个条目创建并发事件?我是aws的新手,所以如果我使用了错误的命名法,请原谅。

标签: aws-lambdaamazon-dynamodb

解决方案


如果我理解正确,您正在使用DynamoDB Streams来触发您的 lambda?

有很多细微差别决定了并行执行多少个 Lambda 函数来处理您的 DynamoDB 流。您应该测试您的实现,以查看您是否正在构建需要处理的项目的更长的积压日志,或者处理这些项目的延迟是否对于您的要求来说太长了。

如果是这种情况,您可以将Amazon SQS引入您的解决方案。在 Lambda 函数中,使用您的 DynamoDB 流,您只需将项目转发到 SQS 队列。这个队列随后可以很容易地被许多 Lambda 函数并行处理。


根据您的评论更新

1 分钟的延迟可能不会太长,您需要知道您的业务用例可以接受哪些延迟。如果您认为 1 分钟的延迟太长,那么您可以结合以下无服务器模式来并行处理这些项目:

或者,您也可以直接从订阅 DynamoDB 流的 Lambda 函数触发AWS Step Functions 。AWS Step Functions 是一种工作流服务,它还允许您编排并行执行。这样做的模式是Lambda 到 Step Functions


推荐阅读