AWS CloudWatch предоставляет широкий спектр показателей для мониторинга работоспособности вашего лямбда-выражения. Но что делать, если здоровье не измеряется разовыми исключениями?
Вы можете разработать собственный рабочий процесс мониторинга с соответствующими уведомлениями.
Что мы будем делать:
Создайте отдельную лямбду для мониторинга, которая вызывает целевую лямбду каждый будний день, проверяет, возвращает ли она правильный ответ и отправляет уведомления, если лямбда не работает должным образом.
- Создайте новую лямбду в консоли AWS.
Я использую C# и .NET Core 2.1.
Я создаю новую роль для целей мониторинга.
Я пока не прикрепляю политики для новой роли.
2. Добавьте события CloudWatch в качестве триггера запуска лямбда-мониторинга.
Просто щелкните в окне «Добавить триггеры» CloudWatch Events.
3. Настройте события CloudWatch.
Нажмите на него в дизайнере и настройте. Я создаю новое правило для выполнения.
Расписание создается в cron-выражении. В нашем случае мы устанавливаем выполнение каждый будний день в 14:00. УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ.
Объяснение выражений Cron:
Сохраните изменения в лямбде.
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 и ждите писем.