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處理新郵件。