Вложенное задание Cron в лямбда-функции AWS - PullRequest
0 голосов
/ 01 ноября 2019

Требование: Чтобы отправить напоминание n пользователям в нужное время. Например, пользователь 1 в 9:10, пользователь 2 в 22:50, пользователь 3 в 4:20 и т. Д.

Решение в Nodejs У меня есть задание Nodejs Cron, которое выполняется вкаждые 55 минут (т.е. 9:55, 10:55, 11:55). Сначала он удаляет все дочерние задания cron, а затем извлекает данные из базы данных и проверяет настройки напоминаний для пользователей. На основе настроек напоминаний в базе данных создаются дочерние задания cron для всех пользователей для отправки напоминаний.

Решение в AWS Lambda

Я создал лямбда-функцию и запланировал ее на55 минВнутри лямбды я делаю то же самое, что и в nodejs, но поскольку выполнение лямбды завершено, задание дочернего cron не выполняется.

Я думал о пошаговых функциях, но не уверен, как этого добиться. так как это динамично. Также кто-то предложил запустить SNS, но это также не сработает в моем сценарии.

Кто-то, пожалуйста, помогите мне в достижении этого с помощью AWS Lambda.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Почему бы не иметь 1 задание cron, которое выполняется каждую минуту и ​​отправляет все напоминания, которые должны быть отправлены на основе информации базы данных? Я действительно не понимаю, зачем вам вложенные задания cron?

В любом случае, вы можете также использовать time для динамического атрибута DynamoDB и поток, который запускает функцию Lambda. Создайте запись для отправки напоминания в X каждый Y, где X - время истечения. Лямбда-функция срабатывает, и когда вы закончите, вы создаете новую запись DDB со временем истечения X + Y. В этом случае вам может даже не понадобиться cron-работа Lambda.

0 голосов
/ 01 ноября 2019

Полагаю, вы могли бы использовать aws-sdk для динамического создания правил cloudwatch в задании cron для nodejs.

для лучшей контрастности, создайте 2 отдельные функции.

  1. Основное задание Cron (удаление задания дочернего cron в облачном хранилище, извлечение данных из базы данных, создание правил облачного наблюдения, которое вызывает задание дочернего cron в определенное время)

  2. Child Cron Job (только отправка напоминаний)

Подробнее: Nodejs Создать CloudWatch

...