У меня есть несколько лямбда-функций AWS, запускаемых событиями из других приложений, например через кинезис. Некоторые из этих событий должны вызывать что-то происходящее в другое время. В качестве примера рассмотрим случай отправки пользователю электронного письма с напоминанием / уведомлением о чем-либо, когда прошло 24 часа с момента события X.
Ранее я работал с лямбда-функциями, которые планируют другие лямбда-функции, динамически создавая правила cron CloudWatch во время выполнения, но сейчас я пересматриваю свой старый дизайн и думаю, является ли это лучшим подходом. Было немного утомительно настраивать лямбды, которые планируют другие лямбды, потому что в дополнение к отправке правил CW с новой лямбдой в качестве цели мне также пришлось иметь дело с предоставлением во время выполнения активированных лямбда-разрешений, запускаемых новым правилом CW.
Таким образом, другой подход, который я рассматриваю, состоит в том, чтобы отправлять задания, которые нужно выполнить, добавляя их в таблицу базы данных с заданным временем выполнения, а затем запускать одно правило CW Cron каждые x минут, которое проверяет базу данных на наличие заданий. , Это уменьшает сложность правил CW (только одно, требуется статическое правило), лямбда-разрешений (также статических) и т. Д., Но добавляет сложность в дополнительную таблицу базы данных и т. Д. Другое отличие состоит в том, что, хотя старый дизайн выполнял только одно выполненное одно «задание» за вызов этот дизайн потенциально может выполнить 100 ожидающих заданий в одном вызове, и я не уверен, может ли это вызвать проблемы с тайм-аутом и т. д.
Кто-нибудь успешно реализовывал нечто подобное? Какой подход вы выбрали?
Я знаю, что есть и другие сервисы, такие как AWS Batch, но это кажется излишним для планирования простых задач, таких как отправка электронной почты, когда время t
прошло с момента события e
, так как, насколько мне известно, это не так поддерживать простые лямбда-задания. SQS также поддерживает синхронизированные сообщения, но только до 15 минут, поэтому это не кажется полезным для планирования чего-либо за 24 часа.