在dynamodb update上并行执行lambda



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

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

有很多细微差别决定了并行执行多少Lambda函数来处理DynamoDB流。你应该测试你的实现,看看你是否建立了一个需要处理的项目的更长的备份日志,或者处理这些项目的延迟是否对你的需求来说太长了。

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


根据您的评论进行更新

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

  • DynamoDB到Lambda(你已经这样做了)
  • Lambda到SQS
  • SQS到Lambda

或者,你也可以你也可以直接从订阅了DynamoDB流的Lambda函数触发AWS步进函数。AWS Step Functions是一个工作流服务,它还允许您编排并行执行。此模式将是Lambda到阶跃函数。

最新更新