Проблема в том, что вам нужно выполнить какой-нибудь код где-то, чтобы фактически выполнить действие «отправить SMS». Вот почему функции Lambda хорошо подходят: они запускают код, а вы не управляете серверами. Но, конечно, вы не обязаны их использовать.
Вы можете легко подключить конечную точку шлюза API к SNS, но затем вам нужно обработать сообщение, которое поступило в SNS через подписчика (это то место, где запускается Lambda), в противном случае, что бы вы сделали с сообщением, которое никто может потреблять? У вас есть несколько вариантов подписки на тему SNS, но Lambda - самый простой. Но допустим, что вы не хотите использовать Lambda по какой-либо причине, вы можете иметь очередь SQS, подписанную на вашу тему SNS, и экземпляр EC2, истощающий эту очередь SQS, но это намного сложнее и далеко от мира без серверов.
Итак, мое предложение:
- Создание шлюза API
- Свяжите это с темой SNS
- Создайте лямбда-функцию и подпишите ее на только что созданную тему SNS
- Отправьте запрос на ваш API-шлюз (это отправит сообщение в SNS, поэтому активируется подписанная функция Lambda)
- Ваша лямбда-функция теперь вызывается с сообщением от SNS. Соберите информацию, которая вам нужна для отправки вашего SMS.
Я предлагаю вам взглянуть на Создание API-интерфейса шлюза API с интеграцией AWS , а затем узнать, как Отправлять SMS-сообщения, например, с помощью API Twillio .
Я также рекомендую вам взглянуть на SNS Event и на API Gateway , чтобы вы знали, чего ожидать в своем коде.