Моя лямбда-функция не получает события от службы SQS

Я установил лямбда-функцию и службу SQS. Я хочу, чтобы события из службы SQS использовались лямбда-функцией.

Конфигурация SQS

Все остальные настройки настроены в соответствии с настройками по умолчанию.

Лямбда-триггер

Конфигурация лямбда

Используемый код взят из sqs-poller шаблон (и конфигурация тоже)

Конфигурация кода

Я использую следующий код для отправки события. Я запускаю код с помощью следующей команды

      AWS_SDK_LOAD_CONFIG=true AWS_SHARED_CREDENTIALS_FILE=./credentials node sqs.js

Это нормально работает, потому что я вижу сообщения на панели мониторинга службы SQS.

Есть идеи, почему моя лямбда-функция не использует события?

1 ответ

Казалось бы, у вас есть две конкурирующие концепции в вашей архитектуре.

Amazon SQS и AWS Lambda

Когда очередь Amazon SQS настроена как триггер для функции AWS Lambda, сервис AWS опрашивает очередь SQS в поисках сообщений. При обнаружении сообщения (сообщений) вызывается функция Lambda, при этом сообщения передаются в функцию через переменную.

Затем функция Lambda может обрабатывать эти сообщения, считывая детали сообщений из event Переменная.

Если функция Lambda завершится без ошибок, сервис AWS автоматически удалит сообщения из очереди SQS. Если в функции произошла ошибка, сообщения автоматически снова появятся в очереди SQS по истечении периода невидимости.

Функция AWS Lambda никогда не вызывает на самом деле сервис Amazon SQS для получения или удаления сообщений. Скорее, он получает сообщения при его вызове.

SQS опросчик

Вы упомянули, что используете sqs-pollerучебный класс. Я не уверен, имеете в виду получение сообщений с использованием класса QueuePoller в Amazon SQS - AWS SDK для Ruby или @jishimi / sqs-poller - npm.

Тем не менее, опрос - это традиционный способ, с помощью которого рабочие процессы извлекают сообщения из очереди SQS, а затем удаляют сообщения после их обработки. Процесс такой:

  • Просят проверить, есть ли сообщения в очереди SQS
  • Если это так, они вызывают работника
  • Когда воркер закончит, они удаляют сообщение

Вы должны заметить, что это те же шаги, которые выполняет сервис AWS Lambda, когда SQS настроен как триггер для функции AWS Lambda. Следовательно, использование архитектуры опроса несовместимо с использованием SQS в качестве триггера для функции AWS Lambda.

Вы должны выбрать одно или другое, а не оба.

Другие вопросы по тегам