Concurrency AWS Lambda临时负载平衡

Concurrency AWS Lambda临时负载平衡,concurrency,aws-lambda,Concurrency,Aws Lambda,我有一个AWS Lambda函数,每1分钟调用一次>1000个SNS事件。这是一个问题,因为我的帐户并发设置为3000,所以如果我开始添加更多作业,那么最终我将拥有>3000个并发Lambda实例 每个作业大约需要2-5秒才能完成,这意味着在每个1分钟窗口内,并发限制只会在前5秒内受到威胁,而在剩余的55秒内,我将有0个并发 如果我为lambda设置了并发限制(例如1000),它会处理前1000个SNS事件,然后在并发释放后自动处理剩余的事件吗?我将只收取实际运行时的费用,而不是等待并发减少所花

我有一个AWS Lambda函数,每1分钟调用一次>1000个SNS事件。这是一个问题,因为我的帐户并发设置为3000,所以如果我开始添加更多作业,那么最终我将拥有>3000个并发Lambda实例

每个作业大约需要2-5秒才能完成,这意味着在每个1分钟窗口内,并发限制只会在前5秒内受到威胁,而在剩余的55秒内,我将有0个并发

如果我为lambda设置了并发限制(例如1000),它会处理前1000个SNS事件,然后在并发释放后自动处理剩余的事件吗?我将只收取实际运行时的费用,而不是等待并发减少所花费的时间

否则,AWS是否有一种方法允许我将作业的负载分布在整个1分钟的窗口中,以便我可以每隔~5秒调用lambda,并调用作业总数的子集

如果我为lambda设置了并发限制(例如1000),它会处理前1000个SNS事件,然后在并发释放后自动处理剩余的事件吗?我将只收取实际运行时的费用,而不是等待并发减少所花费的时间

对。设置并发限制在您的用例中肯定会派上用场,这是一条可行之路。这是并发限制实际存在的原因之一:)

不幸的是,您无法利用SNS的批处理,因为它总是发送一个且唯一的事件。您可以做的是将SQS队列与您的SNS主题连接起来,并让Lambda函数订阅SQS队列,然后您可以利用批处理(最大批处理大小为10),大大减少并发Lambda执行的数量,但是,您需要设置一个并发限制,以确保不会耗尽所有可用的并发性

否则,AWS是否有一种方法允许我将作业的负载分布在整个1分钟的窗口中,以便我可以每隔~5秒调用lambda,并调用作业总数的子集

没有,但由于上述原因,这是不必要的