【以下的问题经过翻译处理】 我有一个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)有什么想法吗?我没有维护碎片排序的要求,因此最大的异步性是目标。感谢您提供的任何见解!
rePost Polyglot
已提问 3 年前111 查看次数
【以下的回答经过翻译处理】 并发性可通过两个因素实现:
我猜想您的DynamoDB表只有一个分区,这会导致流中只有一个分片,从而只能调用一个Lambda函数。为了增加并发性,您可以采取以下措施:
已回答 3 年前
您未登录。 登录 发布回答。
一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。
已提问 3 年前
已提问 4 年前
Tim
已发布 2 年前
Summer
已发布 1 年前