我的lambda函数包含一些包含对dynamodb的查询的代码。执行查询后,lambda将继续执行其余代码,该代码基于该查询的结果。如果我超过dynamodb的容量限制会怎么样?我可以将查询推送到SQS并稍后处理它,但之后我将无法继续执行lambda。另一个解决方案是重试每个失败的查询,但如果dynamodb非常繁忙,我的lambda可能会超过5分钟的限制。似乎是一个双输的局面。你会做什么?
答案 0 :(得分:0)
最容错的解决方案是解除查询和处理结果。
不是立即处理结果,而是将结果写入另一个SQS队列并发送SNS通知。
将处理移至第二个Lambda函数。这个新功能可以由SNS通知触发。它可以读取结果队列并处理任何待处理的消息。
修改原始函数以排队任何失败的查询以供日后使用。