запуск происходит сразу нескольких тысяч выполнений webhook -> lambda function -> stepfunction, проблема в том что в таком случаи я делаю те же самые несколько тысяч запросов к API за одну секунду, что приводит к ошибкам.
Вопрос: как грамотно можно добавить задержку для step function что бы выполнения стартовали по 1 с интервалом в 3-5 секунд?
если нужно именно на уровне степфункции, то видел как-то в блоге AWS имплементацию семафоры на степфункциях. https://github.com/aws-samples/aws-stepfunctions-examples/tree/main/sam/app-control-concurrency-with-dynamodb P.S.: можно и нужно использовать другие инструменты :)
а какие тогда? Я думал сохранять данные для старта в SQS а потом через него триггерить каждую секунду по 1 записи, но оно сразу все что приходит - все и отдает в лямбда функцию, но возможно я нужной настройки не нашел?
SQS это хорошо. Причем его можно использовать как перед степ функцией, так и как шаг отправки в самой функции. Еще можно использовать kinesis firehose для батчинга и обрабатывать кусками.
а можно как-то сделать так, что бы SQS триггерил лямбду функцию и отправлял по 1 элементу в 1 секунд?
Да, fifo очередь, одинаковый group id для всех сообщений и секундная задержка в лямбде
Обсуждают сегодня