AWS CloudWatch предоставляет широкий спектр показателей для мониторинга работоспособности вашего лямбда-выражения. Но что делать, если здоровье не измеряется разовыми исключениями?

Вы можете разработать собственный рабочий процесс мониторинга с соответствующими уведомлениями.

Что мы будем делать:

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

  1. Создайте новую лямбду в консоли AWS.

Я использую C# и .NET Core 2.1.

Я создаю новую роль для целей мониторинга.

Я пока не прикрепляю политики для новой роли.

2. Добавьте события CloudWatch в качестве триггера запуска лямбда-мониторинга.

Просто щелкните в окне «Добавить триггеры» CloudWatch Events.

3. Настройте события CloudWatch.

Нажмите на него в дизайнере и настройте. Я создаю новое правило для выполнения.

Расписание создается в cron-выражении. В нашем случае мы устанавливаем выполнение каждый будний день в 14:00. УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ.

Объяснение выражений Cron:

https://docs.aws.amazon.com/en_us/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html

Сохраните изменения в лямбде.

4. Создайте тему простой службы уведомлений.

Откройте панель управления SNS в консоли AWS.

Создать тему.

Создать подписку.

Установите целевой адрес электронной почты в качестве конечной точки.

После этого вы получите электронное письмо от AWS для подтверждения подписки.

Подтвердить подписку.

5. Прикрепите к своей роли политики для вызова Lambda и отправки уведомлений.

Откройте IAM в консоли AWS и найдите свою роль.

Прикрепить политики. Я создаю две новые политики.

Для вызова лямбды вы должны установить действие InvokeFunction для службы Lambda. Я ограничиваю лямбда-выражения, которые я могу вызывать только целевым (устанавливаю его ARN).

Для использования SNS вы должны установить для действия «Публикация» значение «Служба SNS». Я ограничиваю темы только одной (устанавливаю ее ARN).

Прикрепите новые политики к роли.

6. Создайте новый проект Lambda в Visual Studio и напишите код.

У вас должны быть установлены Visual Studio и AWS SDK.

Напишите код:

using (var client = new AmazonLambdaClient())
{
   var request = new InvokeRequest
   {
      FunctionName = "YourTargetLambdaName"
   };
   var response = await client.InvokeAsync(request);
   string result;
   using (var sr = new StreamReader(response.Payload))
   {
      result = sr.ReadToEnd();
   }
   if (string.IsNullOrEmpty(result))
   {
      using (var snsClient = new AmazonSimpleNotificationServiceClient())
      {
         await snsClient.PublishAsync("arn:aws:sns:us-east-1:xxxxxxxxxxxx:monitoring", "Email body", "Email Subject");
      }
   }
}

где

if (string.IsNullOrEmpty(result)) 

является условием, что наша целевая лямбда не здорова.

7. Опубликуйте свой проект AWS в мониторинге lambda и ждите писем.