Как отправлять мобильные SMS-сообщения AWS SNS на основе даты, сохраненной в DynamoDB - PullRequest
0 голосов
/ 04 марта 2019

У меня есть определенный вариант использования в моем приложении, для которого я должен построить систему бронирования на прием.Он сохранит сведения о встрече в таблице DynamoDB, в которой будет информация о дне встречи и номер мобильного телефона пользователя.Система должна отправлять пользователю напоминания о СМС-оповещениях за день до даты встречи.В таблице БД также есть атрибут статуса, который должен измениться на «СЕГОДНЯ», когда наступит дата назначения.

Как мне спроектировать эту систему, чтобы успешно реализовать эти варианты использования.Каким должен быть архитектурный подход для автоматизации этого процесса?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете воспользоваться приведенным ниже подходом для решения сценария использования

  1. Схема базы данных
| 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, которое запускает лямбдуфункция.В лямбда-функции вы можете перечислить всех пользователей, которые должны быть уведомлены сегодня, и отправить уведомление всем пользователям.

Исходя из вашего варианта использования и масштаба, вы можете выполнить дальнейшую оптимизацию, например

  1. Вместо того, чтобы одна лямбда-функция отправляла все уведомления, просто поместите sk в несколько sqsкакая другая лямбда-функция берет и отправляет уведомление.Это решит такие проблемы, как

    a.регулирование записей в таблице dyanmodb.

    b.ограничение других ресурсов, которые вы можете использовать для отправки уведомлений.

    c.Так как время выполнения лямбды ограничено 15 минутами, вы можете столкнуться с проблемами при отправке слишком большого количества уведомлений.

0 голосов
/ 04 марта 2019

Одним из возможных способов решения этой проблемы было бы использование лямбды, работающей по таймеру с использованием триггера событий cron CloudWatch , который сканирует или запросов таблицы DynamoDB длязначения, которые имеют дату, применимую для оповещения SMS, и затем отправляют оповещения соответственно, используя публикацию SNS в SMS (обратите внимание, что ссылки на SDK предназначены для javascript, но эти функции также поддерживаются на других языках)

...