У меня есть множество функций, все в Node.js, в AWS Lambda. Они запускаются определенными событиями, такими как триггеры S3, методы API Gateway, а иногда просто вызываются вручную. Я создаю их, вставляя код в консоль или загружая zip-файл, который я создал локально.
В редких случаях функция не работает. Для обнаружения сбоев я настроил сигнал тревоги CloudWatch, который выглядит следующим образом:
Это работает, в некоторой степени: когда какая-либо функция в моей учетной записи дает сбой, я получаю электронное письмо. Проблема в том, что в электронном письме просто говорится, что сработала сигнализация. Он не указывает , что Лямбда-функция на самом деле потерпела неудачу, поэтому мне нужно копаться в Лямбде, чтобы найти, какая функция фактически вызвала тревогу.
Я учел следующее:
- Настройка будильника CloudWatch для каждой функции. Это наиболее очевидное решение, но оно также является самым утомительным и самым дорогим в обслуживании.
- Построение конвейера CI / CD для моих функций Lambda вместо ввода кода или загрузки zip-файлов в консоль. Затем я могу добавить шаг, который автоматически устанавливает оповещение CloudWatch для этой функции. Это лучше, чем первый вариант, но также имеет много инфраструктуры для настройки на потенциально простую проблему.
- Использование другой лямбда-функции для пользовательской обработки оповещения. Проблема в том, что, насколько я могу судить, сообщение SNS, которое публикует CloudWatch, не содержит больше данных, чем электронная почта; в сущности, это просто говорит: «Твой сигнал тревоги называется X сработал», но не почему.
Есть идеи, как этого добиться?