Я реализую решение, которое включает SQS, который запускает функцию Lambda, которая использует сторонний API для выполнения некоторых операций. Этот сторонний API имеет ограничение на количество запросов в секунду, поэтому я хотел бы ограничить количество SQS-сообщений, обрабатываемых моей функцией Lambda, аналогичной скоростью.
Есть ли способ ограничить количество сообщений, отображаемых в SQS в секунду, или количество вызовов функции Lambda в секунду?
[отредактировано]
После некоторого понимания, данного в комментариях об AWS Kinesis: не существует экономичного решения, обрабатывающего параметры Kinesis Batch Window, Batch size и payload size, из-за поведения Kinesis, которое запускает выполнение лямбда, если ЛЮБОЙ из пороговых значений и достигается: * Учитывая N = максимальное количество запросов в секунду, которые я могу выполнить через сторонний api. * При настройке окна пакета = 1 секунда и размера пакета N, обратное предварительное задание должно запускать выполнение с более чем N_MAX запросами. * Конфигурация пакетной Windows = 1 секунда и размер пакета MAX_ALLOWED_VALUE, будет недостаточно производительным и также не гарантирует выполнение менее N выполнений в секунду.
Самым простым решением, которое я нашел, является создание лямбды с фиксированной скоростью выполнения в 1 секунду, которая считывает фиксированное количество сообщений N из SQS / Kinesis и записывает их в другой SQS / Kinesis, имея в качестве конечной точки другую лямбду.
sqs
, другой способ сделать это -kinesis
с опциейbatch window
. - person Ersoy   schedule 06.06.2020