Как отправить ошибку в DLQ, если лямбда-функция выдает ошибку (не timedOut)? - PullRequest
0 голосов
/ 18 октября 2018

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

Есть ли способ, которым я могу обработать, если в моем DLQ возникает какая-либо ошибка, напечатайте ошибку в сообщении, затем повторите попытку, затем удалите сообщение?

  • пример ошибки из CloudWatch:

TypeError: commandArray не может быть повторен

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Функция AWS Lambda имеет механизм повторных попыток асинхронного вызова. Если AWS Lambda не может полностью обработать событие, она автоматически дважды повторяет вызов с задержками между повторными попытками.

После повторных попыток AWS Lambda отправит подробное сообщение об ошибке в указанную очередь Amazon SQS или тему Amazon SNS.

https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html

Сообщение об ошибке не содержит сбой лямбдыимя функции по любой причине (исключения / тайм-аут).Чтобы добавить имя лямбда-функции в сообщение об ошибке, можно воспользоваться двумя идеями.

Решение - 1

  • Имя лямбда-функции можно найти с помощью S3 API., Сведения о сегменте S3 можно найти в полученном объекте события в сообщении об ошибке.

Решение - 2

Соглашение: имя темы SNS содержит имя лямбда-функции вit

  • Настройка темы SNS для лямбда-функции
  • Добавление лямбда-функции в список подписчиков темы SNS
  • Подписанная лямбда-функция может получить имя лямбда-функции из имени темы SNS иМожно добавить любую пользовательскую деталь в полученное сообщение об ошибке
0 голосов
/ 18 октября 2018

Lambda имеет возможность повторять попытки и перекачивать сбои в очередь недоставленных сообщений.

Любая лямбда-функция, вызываемая асинхронно, повторяется дважды, прежде чем событие сбрасывается.Если повторная попытка не удалась и вы не уверены, почему, используйте Dead Letter Queues (DLQ), чтобы перенаправить необработанные события в очередь Amazon SQS или в раздел Amazon SNS для анализа ошибки.

После этого вы можете иметьлямбда-функция в теме SNS или очереди SQS, которая может реагировать на ошибку и реагировать так, как вы хотите.

Для получения дополнительной информации см .: https://docs.aws.amazon.com/lambda/latest/dg/dlq.html

...