Гид по технологиям

CloudWatch Events: запуск Lambda при изменении состояния EC2

• 5 min read • AWS • Обновлено 21 Nov 2025
Запуск Lambda при изменении состояния EC2
Запуск Lambda при изменении состояния EC2

Обложка: диаграмма связи CloudWatch Events, правил и целей

Amazon CloudWatch Events описывает изменения в ресурсах AWS. Мы можем сопоставлять события и направлять их к одной или нескольким целевым функциям. CloudWatch Events узнаёт об операционных изменениях в момент их возникновения — например, если в регионе создаётся ресурс, правило CloudWatch, настроенное на этот тип события, обнаружит его и при совпадении запустит целевую функцию.

Ниже — краткое определение основных терминов:

  • События — изменение в окружении AWS, которое можно обнаружить.
  • Правила — критерии сопоставления событий; правило определяет, какие события проходят дальше.
  • Цели — ресурсы, которые получают и обрабатывают событие (Lambda, EC2, SQS, SNS, Step Functions и т. д.).

В этой статье мы создадим правило, которое отслеживает изменение состояния экземпляра EC2 и вызывает функцию Lambda. В примере функция удаляет неиспользуемые EBS‑тома, но вы можете использовать любую логику.

Предварительные условия

  1. Аккаунт AWS (создайте, если ещё нет).
  2. Функция Lambda, готовая к вызову.

Важно: функция Lambda должна иметь необходимые IAM‑права для операций, которые она выполняет (например, describe/delete EBS).

Что мы сделаем

  1. Войдём в AWS Management Console.
  2. Создадим правило CloudWatch Events, которое будет вызывать Lambda при смене состояния EC2.

Вход в AWS

Перейдите на страницу входа в AWS и авторизуйтесь под своей учётной записью.

Экран входа в AWS Console

После успешного входа вы увидите панель управления AWS Management Console.

Главная страница консоли AWS после входа

Создание правила CloudWatch Events для вызова Lambda

  1. В консоли AWS найдите CloudWatch и перейдите на панель CloudWatch.

Результат поиска CloudWatch в консоли AWS

  1. В левом меню выберите Rules (Правила) в разделе Events (События).

Секция Rules в CloudWatch

  1. Нажмите Create rule (Создать правило).

Кнопка Создать правило в CloudWatch

  1. В разделе Source (Источник) выберите Event Pattern, затем Service Name — EC2, Event Type — EC2 instance state change notification.

  2. Нажмите Add target и выберите вашу Lambda‑функцию в качестве цели. Затем Configure details (Настроить детали).

Выбор шаблона события EC2 и добавление цели Lambda

  1. Укажите имя правила и описание, затем нажмите Create rule (Создать правило).

Поле ввода имени и описания правила в CloudWatch

После создания правило будет вызывать указанную Lambda всякий раз, когда произойдёт изменение состояния экземпляра EC2.

Важно: правило действует в конкретном регионе. Убедитесь, что Lambda и EC2 находятся в одном регионе, либо используйте межрегиональную логику.

Пример кода Lambda

Ниже — образец Python‑кода для Lambda, который удаляет доступные (available) EBS‑тома, если у них нет тега Name или значение тега отличается от DoNNotDel. Измените region_name на ваш регион при необходимости.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
 
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('EBS Volume Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DoNNotDel' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('EBS Volume Deleted ' +vid)  

Примечание: этот код удаляет тома — тестируйте в безопасной среде и используйте теги/исключения для защиты критичных данных.

Тестирование и приёмка

Критерии приёмки:

  • Правило CloudWatch существует и включено.
  • При смене состояния EC2 (например, остановка или запуск) правило получает событие.
  • Lambda вызывается и получает ожидаемую полезную нагрузку (payload).
  • Lambda выполняет только те операции, которые разрешены её IAM‑ролю.

Минимальные тесты:

  1. Остановите и запустите тестовый экземпляр EC2 — убедитесь, что событие генерируется.
  2. Проверьте CloudWatch Logs Lambda‑функции на наличие записей о вызове.
  3. Убедитесь, что нежелательные удаления не происходят (проверка на теги).

Когда это не подходит

  • Если нужно сложное коррелирование событий (несколько источников и временных окон), лучше использовать EventBridge с правилами более высокого уровня или Step Functions для оркестрации.
  • Для массовой обработки событий в реальном времени (высокая пропускная способность) рассмотрите Kinesis или SQS в качестве буфера перед Lambda.

Альтернативные подходы

  • EventBridge: расширенные фильтры, маршрутирование и интеграция с SaaS‑источниками.
  • SNS → Lambda: когда нужно рассылать события нескольким подписчикам.
  • Step Functions: если требуется многоэтапная обработка и устойчивость к ошибкам.

Мини‑методология внедрения

  1. Разработайте Lambda локально и протестируйте на тестовом аккаунте/регионе.
  2. Создайте IAM‑роль с минимально необходимыми правами.
  3. Создайте правило в CloudWatch/EventBridge в целевом регионе.
  4. Настройте мониторинг — CloudWatch Logs и метрики ошибок.
  5. Прогоните контрольные сценарии и откатную процедуру.

Чек‑лист ролей

  • Разработчик: написать и покрыть тестами логику Lambda, подготовить инфраструктурный план.
  • Инженер безопасности: проверить IAM‑права, определить исключения для критичных томов.
  • Оператор/DevOps: настроить правило в CloudWatch/EventBridge, мониторинг и оповещения.

Безопасность и рекомендации по правам

  • Минимизируйте права Lambda — используйте IAM‑политику, ограничивающую действия только над нужными ресурсами.
  • Запретите удаление томов для продакшн‑мастеров через теги/условия в IAM при возможности.
  • Включите журналирование CloudTrail для отслеживания вызовов API удаления томов.

Важно: перед автоматическим удалением томов всегда имейте процесс резервного копирования и проверки тегов.

Факты и практические заметки

  • Правила CloudWatch/EventBridge работают в рамках региона; убедитесь, что ресурсы и функции находятся в нужном регионе.
  • Lambda может быть синхронно или асинхронно вызвана в зависимости от настроек; для критичных операций используйте надёжную обработку ошибок.

Глоссарий (1‑строчные определения)

  • CloudWatch Events / EventBridge — сервис AWS для маршрутизации событий внутри облака.
  • Правило — шаблон или фильтр, который определяет, какие события обрабатывать.
  • Цель — ресурс AWS, который получает событие (Lambda, SNS, SQS и т. д.).

Заключение

Мы настроили правило CloudWatch Events для отслеживания смены состояния EC2 и показали, как вызвать Lambda‑функцию. Важно: тестируйте правила и функции в безопасной среде, давайте функциям минимально необходимые права и настраивайте мониторинг. Альтернативные подходы и рекомендации по безопасности помогут адаптировать решение под производственные требования.

Ключевые шаги: подготовить Lambda с корректными правами, создать правило с Event Pattern для EC2, назначить Lambda как цель и протестировать обработку событий.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро