Почему мое неудачное мероприятие не отправлено в AWS Dead Letter Queue DLQ? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь настроить DLQ для захвата сбойных событий из функции Lambda.

Вот что я сделал: 1. Создал DeadLetterQueue (QueueX) в SQS, 2. Установите для моего ресурса лямбда-функции DLQ значение «Amazon SQS». 3. Установите для SQS Queue значение QueueX 4. Создана политика для предоставления всех разрешений (sqs: *) всем ресурсам (*); VisibilityTimeout = 5 минут, MessageRetentionPeriod = 3 дня 5. Прикрепите политику к роли, которая выполняет лямбда-функцию

Теперь через «Действия с очередями» я могу отправить сообщение и увидеть его в «Доступных сообщениях». Но если я отправляю http-запрос в лямбда-функцию - я специально создал искаженный JSON, исключение которого не перехватывается - я увидел сообщение об ошибке в cloudwatch, но ничего не отправлено в QueueX.

Чего мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2019

Согласно вашему последнему комментарию:

тестирование путем отправки HTTP-запроса от Почтальона непосредственно к шлюзу Api для лямбды

Это причина проблемы, которую вы

Чтобы объяснить, когда у вас есть прокси-сервер шлюза API для Lambda, шлюз API обрабатывает ошибки, которые Lambda отправляет обратно (вместо самой службы Lambda, которая имеет конфигурацию DLQ), и ошибкине будет в конечном итоге в DLQ.Чтобы реализовать DLQ, вам нужен другой дизайн, возможно, что-то вроде вызовов, идущих на SNS -> Lambda, и затем при сбое Lambda отправит эти сообщения в DLQ.

Вы также можете это исправитьесли у вас нет интеграции с прокси-сервером, но я не проверял это лично, и я точно не знаю, сработает ли это.

...