只是想知道什么是处理dynamodb只能编写最大25的批量大小这一事实的最佳方法。
我有3个Lambdas(还有更多,但我正在简化,所以我们不会被跟踪)
以下是发生的事情:
所以我的问题在于SaveAllToDynamoDBLambda只能批量写入25个项目,这意味着我必须告诉我的GetNItemsFromExternalSourceLambda一次只从外部源获取25个项目,这是不理想的。 (能够一次获取250个会好很多)
可以延长SaveAllToDynamoDBLambda的超时时间,以便它可以在一次调用中进行多次批量写入,但我不喜欢这种方法。
我还可以压缩250个项目并在一次上传中保存到s3,这可能会触发流事件,但我会在该解决方案的另一端遇到同样的问题。
只是想知道什么是更好的方法,但只有在所有其他调用的所有信息都保存到dynamodb后才能调用AnalyzeDynamoDBLambda。
答案 0 :(得分:0)
基本上问题是你需要一种方法将大批量(在这种情况下为250个项目)细分为25个以下的批次。
一个非常简单的解决方案是在中间使用Kinesis流。每次PutRecords通话,Kinesis最多可以录制500条记录。然后,您可以GetRecords使用Limit
25,并通过一次BatchWriteItem调用将记录放入Dynamo。
在决定此解决方案是否适合您之前,请务必查看大小限制。