Нет, определенно не очень хорошая идея, в этом случае вы не позволяете лямбда-функции завершиться и вам постоянно выставляется счет. Кроме того, максимальное время выполнения Lambda составляет 15 минут, поэтому вам нужно будет как-то часто его запускать.
Одним из жизнеспособных подходов по-прежнему будет использование Lambda, но вместо продолжения работы выйдите из оператора else и используйте триггер CloudWatch для вызова вашей функции каждую минуту, таким образом, вы можете запускать проверку каждую минуту, но только Плата за время выполнения вашей функции проверки.
Редактировать
Если есть много пользователей для мониторинга, то в зависимости от фактического числа, простое решение будет иметь EC2 с долгим жизненным процессом, и вы сохраните отметку времени последней проверки в БД. Для каждого периода (скажем, 1 минута) выберите базу данных для элементов, которые в последний раз обновлялись> 1 минуту назад, и сохраните их в очереди в этом локальном процессе. И в процессе, с определенной скоростью (скажем, 1 / сек), выполните выборку и проверьте логику и обновите данные и данные последней проверки в БД.
Если вы ожидаете большой объем, вы можете использовать SQS + Lambda с CloudWatch + ELB с отметкой времени последней проверки:
- Каждую минуту CloudWatch запускает Lambda и выбирает записи, которые требуют обновления, и помещает идентификаторы в очередь SQS.
- Использовать рабочую среду ELB и использовать очередь для обновления.
Таким образом, вы можете иметь практически бесконечную скорость. Или, если вам нравится немного меньшая сложность, вы можете использовать простой экземпляр EC2 и вручную управлять экземплярами и масштабом.