我有一个AWS函数,每1分钟调用一次,每次都有>1000个SNS事件。这是一个问题,因为我的帐户并发设置为3000,所以如果我开始添加更多的作业,那么最终我将有>3000并发Lambda实例。
每个作业大约需要2-5秒才能完成,这意味着在每1分钟的窗口内,并发限制只会在前5秒内受到威胁,而剩下的55秒我将有0的并发性。
如果我为lambda设置了并发限制(例如1000),它会处理第一个1000个SNS事件,然后在并发性释放后自动获取其余部分吗?我是否只为实际运行时而不是等待并发性的时间而被收取费用呢?
否则,AWS是否允许我将作业负载分散在1分钟的窗口中,这样我就可以每隔5秒钟用作业总数的子集调用lambda了吗?
发布于 2019-11-20 11:52:11
,如果我为lambda设置了并发限制(例如,1000),它会处理第一个1000个SNS事件,然后在并发性释放后自动获取其余部分吗?我是否只为实际运行时而不是等待并发性的时间而被收取费用呢?
是。设置并发限制对于您的用例无疑是有用的,并且是可行的。这是并发限制实际存在的原因之一:)
不幸的是,您不能利用SNS批处理的优势,因为它总是发送一个也是唯一的事件。您可以做的是将SQS队列与SNS主题挂钩,让Lambda函数订阅SQS队列,然后可以利用批处理(最大批处理大小为10),大大减少并发Lambda执行量,但仍然需要设置并发限制,以确保不使用所有可用的并发性。
否则,AWS是否允许我将作业负载分散在1分钟的窗口中,这样我就可以每隔5秒钟用作业总数的子集调用lambda了吗?
没有,但这是没有必要的,因为以上所述。
https://stackoverflow.com/questions/58953674
复制相似问题