增加DynamoDB中的分片数量以并行启动更多lambda

ins*_*ide 6 concurrency sharding amazon-web-services amazon-dynamodb aws-lambda

我目前正在使用DynamoDB流通过lambda函数处理更改的集合值,但是,目前,我仅并行运行两个lambda实例,这不足以处理所有传入数据,而lambda函数只是排队。

AWS文档中,我可以看到可以并行运行的lambda数量与DynamoDB的分片数量成正比:

如果您创建一个Lambda函数来处理基于流的服务(Amazon Kinesis Streams或DynamoDB流)中的事件,则每个流的分片数是并发单位。如果您的流中有100个活动分片,则将同时运行100个Lambda函数。然后,每个Lambda函数以事件到达的顺序在碎片上处理事件。

所以我的问题是,如何增加DynamoDB的分片数量?可能吗?我找不到如何在设置中进行设置。

git*_*agi 1

不,无法手动控制 DDB UpdateStream 中的分片数量。DDB 通过创建尽可能多的分片来匹配传入的更新速率,自动为您处理该问题。

理想情况下,发生在 DDB 表上的更新应该流经某个分片(发生在同一记录上的更新将始终进入同一分片,这意味着它们是根据您的 hashKey 进行分区的)。它是您的更新流,也按时间顺序排列,因此对相同记录的更新最终会在同一个分片中(或者说排队),以便最终处理器按发生的顺序处理它们。

每个分片都有自己的数据输入和输出吞吐能力,除非需要更多分片来支持即将到来的表更新速率(在 DDB 更新流的情况下,表上的写入 tps 很高,当前的分片数量无法处理)