增加DynamoDB Stream + Lambda吞吐量

use*_*339 5 scalability amazon-dynamodb aws-lambda amazon-dynamodb-streams

我有一个触发Lambda函数的DynamoDB流.我注意到,对DynamoDB表的一千次写入的爆发可能需要花费很多分钟(我看到的最长时间是30分钟)才能被Lambda处理.批量大小为3的每个Lambda调用的平均持续时间约为2秒.这些Lambdas执行I/O繁重的任务,因此小批量和更多并行调用是有利的.但是,这些Lambdas的并行性与DynamoDB Stream分片的数量挂钩,但我找不到一种扩展分片数量的方法.

除了使用更大的批量大小和更优化的代码之外,有没有办法提高这些Lambda的吞吐量?

Udo*_*eld 5

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

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


Ale*_*kis 4

每个流分片都与 DynamoDB 中的一个分区关联。如果您将表上的吞吐量增加太多导致分区分裂,那么您将获得更多分片。随着分片数量的增加,并行运行的 Lambda 函数的数量也会增加。