У меня есть следующая инфраструктура:
У меня есть экземпляр EC2 с процессом NodeJS + Express, прослушивающим порт для сообщений (процесс 1). Каждый раз, когда процесс получает сообщение, он отправляет его в очередь SQS. Затем у меня есть другой процесс на той же машине, читающей очередь, используя длительный опрос (процесс 2). Когда он находит сообщение в очереди, он вставляет данные в базу данных MariaDB, сидящую на экземпляре RDS.
(Чтобы уточнить, сообщения генерируются пользователями, они отправляют кусок данных, который может содержать произвольную информацию в конечной точке, где прослушивается процесс 1)
Теперь я хочу поместить процесс, который читает SQS (процесс 2) в функции Lambda, так что процесс, который записывает в очередь и тот, который читает из очереди, полностью независим. Проблема в том, что я не знаю, возможно ли это.
Я знаю, что функция Lambda вызывается в ответ на событие, а событиями, поддерживаемыми на данный момент, являются S3, SNS, SES, DynamoDB, Kinesis, Cognito, CloudWatch и Cloudformation, но НЕ SQS.
Я думал об использовании SNS-уведомлений для вызова функции Lambda, так что каждый раз, когда сообщение помещается в очередь, уведомление SNS запускается и вызывает функцию Lambda, но после того, как я немного поиграл с ней, я понял, что это невозможно создать уведомление SNS из SQS, возможно только запись SNS-уведомлений в очередь.
Сейчас я немного застрял, потому что не знаю, как продолжить. У меня такое ощущение, что создать эту инфраструктуру невозможно из-за существующих ограничений в услугах AWS. Есть ли другой способ сделать то, что я хочу, или я в тупике?
Просто, чтобы расширить мой вопрос с помощью некоторых исследований, которые я сделал, это github repo показывает, как читать Query QQS из функции лямбда , но функция лямбда работает только в том случае, если она запущена из командной строки
https://github.com/robinjmurphy/sqs-to-lambda
В readme автор упоминает следующее:
Обновление: теперь Lambda поддерживает уведомления SNS в качестве источника событий, что делает этот хак совершенно ненужным для SNS notifcations. Вы может по-прежнему считаться полезным, если вам нравится идея использования лямбда для обработки заданий в очереди SQS.
Но я думаю, что это не решает мою проблему, уведомление SNS может вызывать функцию Lambda, но я не вижу, как я могу создать уведомление, когда сообщение получено в очереди SQS.
Спасибо