每个SQS队列代表客户的“工作”。因此,将lambda并发限制设置为5是没有意义的,因为将有多个客户创建许多SQS队列或“作业”,一次最多可以处理5个lambda函数。
但是,有些支付更多钱的客户希望增加此功能,比如说有20个lambda函数。如何以编程方式保证每个SQS队列的最大lambda并发限制?
这个想法是,当从SQS队列事件源触发lambda函数时。如何确保一组用户最多只能运行5个lambda函数,而另一组用户最多可以运行20个lambda函数?因此,当队列填满时,正在处理的并发消息的最大数量应为5。
如何通过boto3以编程方式确保这一点?
import boto3 lada = boto3.client('lambda') response=lada.create_event_source_mapping( EventSourceArn='jobSpecificQueueArn', FunctionName='myLambdaFunction', Enabled=True, BatchSize=1 )
此外,如何设置唯一的lambda并发限制 per 队列?
解决方案尝试:我唯一的想法是通过克隆相同的lambda函数来创建几个不同的lambda并发限制。然后,如果客户希望在给定的队列上施加“ 14 lambda并发性”限制,那么我只需要create_event_sourcing()
和一个lambda-function-hard-limit-at-14
。如果用户想缩小比例,我会用update_event_sourcing()
lambda-function-hard-limit-at-3
。
缺点是我将手动创建重复的lambda函数...大约20次。