Запускать лямбда-функцию в AWS, когда сообщение присутствует в очереди SQS

Я использую функцию AWS Lambda для обработки сообщений в очереди, она работает нормально. Но мне нужно выполнить эту лямбда-функцию, когда сообщения доступны или добавлены в очередь SQS.

Можно ли активировать лямбда-функцию на основе очереди SQS? Пожалуйста, предложите один метод для достижения этой цели.


person Team    schedule 14.12.2016    source источник


Ответы (2)


Вызов лямбда-функций из очередей SQS напрямую не поддерживается. Вы можете увидеть список доступных триггеров здесь: http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html

Возможные решения:

  1. Замените очередь SQS на Kinesis или DynamoDB. Оба могут запускать лямбда-функции при обновлениях.
  2. Введите SNS перед SQS. Социальная сеть может добавлять элементы в SQS и запускать лямбда-функцию.

Если вам не нужна обработка в режиме, близком к реальному времени, также действительны эти два варианта:

  1. Создайте правило события CloudWatch, которое будет запускать лямбда-функцию каждые N минут (например, каждую минуту).
  2. Создайте параметр ApproximateNumberOfMessagesVisible наблюдения за тревогами CloudWatch для вашей очереди SQS. Этот сигнал тревоги должен публиковаться в теме SNS, что, в свою очередь, вызовет функцию лямбда.
person Sergey Kovalev    schedule 14.12.2016
comment
Не могли бы вы подробно объяснить этот метод: введите SNS перед SQS. SNS может добавлять элементы в SQS и запускать лямбда-функцию - person Team; 14.12.2016
comment
Вы можете опубликовать в SNS тему через SNS API. SNS будет разветвлять сообщения на несколько конечных точек. - person Sergey Kovalev; 14.12.2016
comment
Я не очень хорошо разбираюсь в этом AWS, потому что я здесь только новичок. Не могли бы вы помочь мне с подробностями - person Team; 14.12.2016
comment
См. docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS .html для получения дополнительной информации. По сути, вы меняете свою систему, которая помещает сообщения в вашу очередь SQS; он должен публиковать сообщения в теме SNS, которая затем будет разветвлена ​​в вашу очередь SQS, если вы настроите очередь в качестве подписчика. - person Vijay Dev; 24.12.2016
comment
При внедрении SNS перед SQS, как вы гарантируете, что лямбда-функция сработает после того, как сообщение добавлено в SQS? - person Brian; 04.02.2018

Lambda теперь поддерживает SQS как собственный источник событий.

https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

person andrhamm    schedule 07.09.2018