DynamoDB流无法触发Lambda的并发。

0

【以下的问题经过翻译处理】 我有一个DynamoDB表,我已经配置了一个Lambda来接收DynamoDB流触发器,以便我可以实现下面显示并在这里描述的“扇出”模式的目标:

https://aws.amazon.com/blogs/database/how-to-perform-ordered-data-replication-between-applications-by-using-amazon-dynamodb-streams/

在我的DynamoDB表中,只有一个分区键(没有排序键),分区键由唯一的GUID组成,因此我们的分区具有最大的稀疏性(建议防止热分区)。当我更新这个表中的记录时,我的触发器Lambda并没有同时运行,尽管我设置了并发=5。无论我将批处理配置设置为何种值,我总是得到一个单个Lambda同时运行,并且流批处理大小=1。更糟糕的是,如果我同时触发多个记录(这是我主要的需求),不仅存在这种单线程行为,而且在一个接一个运行几分钟后,整个流仅被取消,不再触发任何Lambda(导致更新的记录没有任何Lambda处理)。您对可能正在发生的问题以及如何修复以实现扇出模式(即多个并发Lambda)有什么想法吗?我没有维护碎片排序的要求,因此最大的异步性是目标。感谢您提供的任何见解!

profile picture
EXPERTE
gefragt vor 9 Monaten26 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 并发性可通过两个因素实现:

  1. DynamoDB表中的分区数。
  2. Lambda函数的并行化因子。

我猜想您的DynamoDB表只有一个分区,这会导致流中只有一个分片,从而只能调用一个Lambda函数。为了增加并发性,您可以采取以下措施:

  1. 将DynamoDB表上的吞吐量容量单位(WCU)增加到40,000,并在表处于“活动”状态时,将其降低为您的可用工作容量需求。这将增加分区,并最终增加并行化。
  2. 并行化因子增加到最大值10。即对于每个流中的分片,可以调用10倍的Lambda函数。
profile picture
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen