1

我有一个触发Lambda函数的DynamoDB流。我注意到,对DynamoDB表的数千次写入操作可能需要很多分钟(我看过的最长时间为30分钟),所有这些都是由Lambda处理的。批量大小为3的每个Lambda调用的平均持续时间大约为2秒。这些Lambdas执行I/O繁重任务,因此小批量和更多并行调用是有利的。但是,这些Lambdas的并行性与DynamoDB Stream分片的数量挂钩,但我无法找到缩放分片数量的方法。增加DynamoDB流+ Lambda吞吐量

除了使用更大的批量和更优化的代码之外,是否有任何方法可以提高这些Lambda的吞吐量?

回答

1

每个流分片都与DynamoDB中的分区关联。如果你增加了桌面上的吞吐量以至于导致你的partitions to split,那么你会得到更多的碎片。随着更多的碎片,并行运行的Lambda函数的数量将会增加。

+0

你可以添加一个链接到包含这个信息的文档:“每个流分片都与DynamoDB中的分区相关联”?我正在努力寻找它。 –

+0

[This](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html)是Kinesis流,但我不确定它们是否相同或相似。有人说lambda将代表您使用Kinesis流客户端。 – HenryLok

1

我没有看到太多配置选项。

你可以分开你的处理。如果您的更改记录不是太大,您的传入Lambda可能会将它们分成几个较小的SNS邮件。每个较小的SNS消息都可能触发一个Lambda进行实际处理。 如果更改较大,您可以使用SQS或S3并通过SNS或直接为文件触发Lambda处理新邮件。