Вы можете воспользоваться приведенным ниже подходом для решения сценария использования
- Схема базы данных
| pk | sk | notifyOn | notificationStatus |
| user1 | uuid1234 | 12-5-3019 | Pending | some other metadata
| user1 | uuid2345 | 12-5-2018 | done | some other metadata
| user2 | uuid2645 | 12-5-2028 | Pending | some other metadata
...
There is a GSI created with notifyOn as primary Key and sk as secondary Key
Для части уведомлений вы можете настроить оповещение cloudwatch, которое запускает лямбдуфункция.В лямбда-функции вы можете перечислить всех пользователей, которые должны быть уведомлены сегодня, и отправить уведомление всем пользователям.
Исходя из вашего варианта использования и масштаба, вы можете выполнить дальнейшую оптимизацию, например
Вместо того, чтобы одна лямбда-функция отправляла все уведомления, просто поместите sk в несколько sqsкакая другая лямбда-функция берет и отправляет уведомление.Это решит такие проблемы, как
a.регулирование записей в таблице dyanmodb.
b.ограничение других ресурсов, которые вы можете использовать для отправки уведомлений.
c.Так как время выполнения лямбды ограничено 15 минутами, вы можете столкнуться с проблемами при отправке слишком большого количества уведомлений.