dynamodb 更新上的并行 lambda 执行
parallel lambda executions on dynamodb update
我正在构建一个处理 dynamodb 条目的 aws lambda 服务 table。这个过程非常耗时,每个条目大约需要 2 秒,并且条目会以大约 20 个的批次添加。我正在寻找一种方法来同时处理一批中的所有条目,例如为每个添加的条目触发一个单独的 lambda 事件,以便它们可以全部 运行 并行,从而更快地完成。据我所知,dynamodb 触发器每秒轮询几次并将所有更新的条目发送到单个 lambda 事件。有没有办法配置触发器为每个条目创建并发事件?
我是 aws 的新手,所以如果我使用了错误的命名法,请原谅。
如果我没理解错的话,你是在使用 DynamoDB Streams 来触发你的 lambda?
有很多细微差别决定并行执行多少 Lambda 函数来处理您的 DynamoDB 流。您应该测试您的实施,看看您是否正在建立一个需要处理的项目的更长的积压日志,或者处理这些项目的延迟是否对您的要求来说太长了。
如果是这种情况,您可以将 Amazon SQS 引入到您的解决方案中。在 Lambda 函数中,使用您的 DynamoDB 流,您只需将项目转发到 SQS 队列中。这个队列之后可以很容易地由许多 Lambda 函数并行处理。
根据您的评论更新
1 分钟的延迟可能不会太长,您需要知道您的业务用例可以接受哪些延迟。如果你觉得 1 分钟的延迟太长,那么你可以结合以下无服务器模式来并行处理项目:
- DynamoDB 到 Lambda
(你已经这样做了)
- Lambda to SQS
- SQS to Lambda
或者,你也可以触发AWS Step Functions directly from your Lambda Function which is subscribed the DynamoDB Stream. AWS Step Functions is a workflow service, which also allows you to orchestrate a parallel execution. The pattern for this would be Lambda to Step Functions。
我正在构建一个处理 dynamodb 条目的 aws lambda 服务 table。这个过程非常耗时,每个条目大约需要 2 秒,并且条目会以大约 20 个的批次添加。我正在寻找一种方法来同时处理一批中的所有条目,例如为每个添加的条目触发一个单独的 lambda 事件,以便它们可以全部 运行 并行,从而更快地完成。据我所知,dynamodb 触发器每秒轮询几次并将所有更新的条目发送到单个 lambda 事件。有没有办法配置触发器为每个条目创建并发事件? 我是 aws 的新手,所以如果我使用了错误的命名法,请原谅。
如果我没理解错的话,你是在使用 DynamoDB Streams 来触发你的 lambda?
有很多细微差别决定并行执行多少 Lambda 函数来处理您的 DynamoDB 流。您应该测试您的实施,看看您是否正在建立一个需要处理的项目的更长的积压日志,或者处理这些项目的延迟是否对您的要求来说太长了。
如果是这种情况,您可以将 Amazon SQS 引入到您的解决方案中。在 Lambda 函数中,使用您的 DynamoDB 流,您只需将项目转发到 SQS 队列中。这个队列之后可以很容易地由许多 Lambda 函数并行处理。
根据您的评论更新
1 分钟的延迟可能不会太长,您需要知道您的业务用例可以接受哪些延迟。如果你觉得 1 分钟的延迟太长,那么你可以结合以下无服务器模式来并行处理项目:
- DynamoDB 到 Lambda (你已经这样做了)
- Lambda to SQS
- SQS to Lambda
或者,你也可以触发AWS Step Functions directly from your Lambda Function which is subscribed the DynamoDB Stream. AWS Step Functions is a workflow service, which also allows you to orchestrate a parallel execution. The pattern for this would be Lambda to Step Functions。