如何确保每个SQS队列的lambda并发限制可以有不同的值?

2024-06-10 15:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

每个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并发限制

解决方案尝试:我唯一的想法是通过克隆相同的lambda函数来创建几个不同的lambda并发限制。然后,如果客户希望对给定队列施加“14lambda并发性”的限制,我只需要create_event_sourcing()lambda-function-hard-limit-at-14。如果用户想要缩小规模,我会使用lambda-function-hard-limit-at-3update_event_sourcing()

缺点是我将手动创建重复的lambda函数…大约20次


Tags: lambda函数用户event客户队列编程create