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

Amazon CloudWatch Events описывает изменения в ресурсах AWS. Мы можем сопоставлять события и направлять их к одной или нескольким целевым функциям. CloudWatch Events узнаёт об операционных изменениях в момент их возникновения — например, если в регионе создаётся ресурс, правило CloudWatch, настроенное на этот тип события, обнаружит его и при совпадении запустит целевую функцию.
Ниже — краткое определение основных терминов:
- События — изменение в окружении AWS, которое можно обнаружить.
- Правила — критерии сопоставления событий; правило определяет, какие события проходят дальше.
- Цели — ресурсы, которые получают и обрабатывают событие (Lambda, EC2, SQS, SNS, Step Functions и т. д.).
В этой статье мы создадим правило, которое отслеживает изменение состояния экземпляра EC2 и вызывает функцию Lambda. В примере функция удаляет неиспользуемые EBS‑тома, но вы можете использовать любую логику.
Предварительные условия
- Аккаунт AWS (создайте, если ещё нет).
- Функция Lambda, готовая к вызову.
Важно: функция Lambda должна иметь необходимые IAM‑права для операций, которые она выполняет (например, describe/delete EBS).
Что мы сделаем
- Войдём в AWS Management Console.
- Создадим правило CloudWatch Events, которое будет вызывать Lambda при смене состояния EC2.
Вход в AWS
Перейдите на страницу входа в AWS и авторизуйтесь под своей учётной записью.

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

Создание правила CloudWatch Events для вызова Lambda
- В консоли AWS найдите CloudWatch и перейдите на панель CloudWatch.

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

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

В разделе Source (Источник) выберите Event Pattern, затем Service Name — EC2, Event Type — EC2 instance state change notification.
Нажмите Add target и выберите вашу Lambda‑функцию в качестве цели. Затем Configure details (Настроить детали).

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

После создания правило будет вызывать указанную 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‑ролю.
Минимальные тесты:
- Остановите и запустите тестовый экземпляр EC2 — убедитесь, что событие генерируется.
- Проверьте CloudWatch Logs Lambda‑функции на наличие записей о вызове.
- Убедитесь, что нежелательные удаления не происходят (проверка на теги).
Когда это не подходит
- Если нужно сложное коррелирование событий (несколько источников и временных окон), лучше использовать EventBridge с правилами более высокого уровня или Step Functions для оркестрации.
- Для массовой обработки событий в реальном времени (высокая пропускная способность) рассмотрите Kinesis или SQS в качестве буфера перед Lambda.
Альтернативные подходы
- EventBridge: расширенные фильтры, маршрутирование и интеграция с SaaS‑источниками.
- SNS → Lambda: когда нужно рассылать события нескольким подписчикам.
- Step Functions: если требуется многоэтапная обработка и устойчивость к ошибкам.
Мини‑методология внедрения
- Разработайте Lambda локально и протестируйте на тестовом аккаунте/регионе.
- Создайте IAM‑роль с минимально необходимыми правами.
- Создайте правило в CloudWatch/EventBridge в целевом регионе.
- Настройте мониторинг — CloudWatch Logs и метрики ошибок.
- Прогоните контрольные сценарии и откатную процедуру.
Чек‑лист ролей
- Разработчик: написать и покрыть тестами логику 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 как цель и протестировать обработку событий.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента