каждая очередь SQS представляет собой «задание» клиента.Так что установка лямбда-ограничения на параллелизм в 5 не имеет смысла, так как будет много клиентов, создающих много очередей SQS или «заданий» для обработки максимум 5 лямбда-функциями одновременно.
однако некоторые клиенты, которые платят больше денег, захотят увеличить это, скажем, до 20 лямбда-функций.как программно измерить максимальный предел лямбда-очереди каждой очереди SQS?
идея заключается в том, что в то время как лямбда-функция запускается из источника события очереди SQS.Как мне убедиться, что максимум 5 лямбда-функций будут работать на полную мощность для одной группы пользователей и 20 для другой группы?поэтому, пока очередь заполняется, максимальное количество одновременных обрабатываемых сообщений должно составлять 5.
Как мне обеспечить это программно через boto3?
import boto3
lada = boto3.client('lambda')
response=lada.create_event_source_mapping(
EventSourceArn='jobSpecificQueueArn',
FunctionName='myLambdaFunction',
Enabled=True,
BatchSize=1
)
Кроме того, как установить уникальный лимит лямбда-параллелизма для очереди?
попытка решения: единственная идея, которую я имею, - это создать несколько разных ограничений на лямбда-параллелизм путем клонирования одной и той же лямбда-функции.Тогда, если клиент хочет наложить ограничение «14 лямбда-параллелизма» на данную очередь, я бы просто create_event_sourcing()
с lambda-function-hard-limit-at-14
.Если пользователь хочет уменьшить масштаб, я бы update_event_sourcing()
с lambda-function-hard-limit-at-3
.
С другой стороны, я буду создавать дублирующие лямбда-функции вручную ... примерно в 20 раз.