aws-lambda - dynamodb 更新上的并行 lambda 执行
问题描述
我正在构建一个处理 dynamodb 表条目的 aws lambda 服务。这个过程非常耗时,每个条目大约需要 2 秒,并且当时分批添加大约 20 个条目。我正在寻找一种同时处理批处理中的所有条目的方法,例如为每个添加的条目触发一个单独的 lambda 事件,以便它们都可以并行运行,从而更快地完成。据我了解,dynamodb 触发器每秒轮询几次,并将所有更新的条目发送到单个 lambda 事件。有没有办法配置触发器为每个条目创建并发事件?我是aws的新手,所以如果我使用了错误的命名法,请原谅。
解决方案
如果我理解正确,您正在使用DynamoDB Streams来触发您的 lambda?
有很多细微差别决定了并行执行多少个 Lambda 函数来处理您的 DynamoDB 流。您应该测试您的实现,以查看您是否正在构建需要处理的项目的更长的积压日志,或者处理这些项目的延迟是否对于您的要求来说太长了。
如果是这种情况,您可以将Amazon SQS引入您的解决方案。在 Lambda 函数中,使用您的 DynamoDB 流,您只需将项目转发到 SQS 队列。这个队列随后可以很容易地被许多 Lambda 函数并行处理。
根据您的评论更新
1 分钟的延迟可能不会太长,您需要知道您的业务用例可以接受哪些延迟。如果您认为 1 分钟的延迟太长,那么您可以结合以下无服务器模式来并行处理这些项目:
- DynamoDB 到 Lambda (您已经在这样做了)
- Lambda 到 SQS
- SQS 到 Lambda
或者,您也可以直接从订阅 DynamoDB 流的 Lambda 函数触发AWS Step Functions 。AWS Step Functions 是一种工作流服务,它还允许您编排并行执行。这样做的模式是Lambda 到 Step Functions。
推荐阅读
- exception - React 和 sequelize 错误处理以显示来自前端的消息
- javascript - Openlayers 3 地图,如何在没有焦点的情况下刷新
- java - 将元素分配给空数组
- javascript - 测试使用 mongoDB 和 mocha/chai 的 ejs/nodejs 函数
- oauth-2.0 - OAuth 2.0 隐式授权流程 - 读取日历 API 返回 403
- node.js - 使用nodejs从gmail imap获取发送的电子邮件
- generics - 如何确保泛型类型具有某个字段
- c# - 如何防止 EntityFramework Core 创建关系
- css - 这个css规则中'i'的目的是什么:input [type =“color” i]?
- python-3.x - 仅在 python-telegram-bot 中向新用户发送消息