У меня есть очередь AWS SQS, которую я собираюсь настроить с помощью триггера функции Lambda для запуска функции Lambda для каждого элемента, который добавляется в очередь для выполнения некоторой обработки.
Одним из этапов обработки будет попадание в конечную точку API, чтобы получить данные обратно для каждого элемента, добавленного в очередь, и затем сохранить их в таблице DynamoDB. Чтобы управлять затратами и контролировать этот процесс, я хочу ограничить количество вызовов этой лямбда-функции за определенный период времени.
Например, я хочу, чтобы эта функция запускалась максимум 100 раз в день, чтобы не перегружать емкость таблицы DynamoDB или конечную точку API. Также было бы неплохо ограничить его, чтобы он выполнял не более 5 одновременных действий одновременно с задержкой в 1 секунду между повторными запусками. Этот тип управления позволил бы мне напрямую сопоставить функцию с пределами таблицы DynamoDB, чтобы гарантировать, что я не превышаю емкость, и соблюдать любые ограничения скорости API.
Я изучил AWS Lambda Managing Concurrency . В частности, раздел «Предел одновременного выполнения на уровне функций». Но в этом разделе, похоже, не рассматривается ограничение в 100 раз в день или задержка в 1 секунду между запуском следующей функции.
Я также знаю, что я мог бы просто ограничить его на другой стороне, ограничивая количество элементов, которые я помещаю в очередь за раз (или за день). Но из-за того, как я планирую эту систему, это добавит много сложностей, которых я бы хотел избежать.
Есть ли способ использовать AWS SQS и Lambda для достижения этого и ограничения этих функций Lambda?