Создание правила CloudWatch Events с целью SNS Topic

О чём этот документ
CloudWatch Events (теперь часть Amazon EventBridge) поставляет почти реальное время поток системных событий, описывающих изменения ресурсов AWS. Правила позволяют сопоставлять события и направлять их на одну или несколько целей: EC2, Lambda, Kinesis, ECS, Batch, SNS, SQS и др. Кроме реактивных правил, CloudWatch Events поддерживает планировщик: выражения rate() и cron() для регулярных действий.
В этой инструкции мы создадим правило, которое по расписанию будет публиковать сообщение в SNS Topic каждые 5 минут. Также рассмотрим проверку работы, отладку и рекомендации по безопасности.
Предварительные требования
- Аккаунт AWS (создайте, если ещё нет).
- SNS Topic — тема, которая будет целью правила. Тему можно создать заранее в сервисе Amazon SNS.
- Права IAM: пользователь/роль должен иметь действия events:PutRule, events:PutTargets, events:DeleteRule, events:RemoveTargets и sns:Publish (или эквивалентные managed/policy права).
Что мы сделаем
- Зайдём в консоль AWS.
- Откроем CloudWatch (EventBridge) и создадим правило с типом «Schedule».
- Добавим цель — SNS Topic.
- Проверим получение сообщений и при необходимости удалим правило.
Вход в AWS
Перейдите на страницу входа в AWS.
Когда вы откроете ссылку, появится страница входа, где требуется ввести креденшалы.

После успешного входа вы увидите главную панель. Нажмите на “Service” в левом верхнем углу консоли, чтобы открыть меню сервисов.

Создание правила в CloudWatch (EventBridge)
- Нажмите “Service” и в строке поиска введите “CloudWatch” — выберите CloudWatch из списка.

- В левой панели под разделом “Events” выберите “Rules”.

- Нажмите “Create rule”.

Выберите тип триггера: отметьте радиокнопку “Schedule” и укажите выражение. Пример: “Fixed rate of 5 minutes” соответствует выражению rate(5 minutes). Вместо rate можно использовать cron: cron(0/5 ? ) — пример для каждых 5 минут.
В разделе Targets выберите цель “SNS Topic” и укажите нужную тему.
В примере мы выбрали SNS Topic — тема будет получать сообщение каждые 5 минут.
- Нажмите “Configure details”.

- Дайте правилу имя и описание, затем нажмите “Create rule”.

- После создания правило появится в списке правил CloudWatch.

- Если правило больше не нужно, его можно отключить или удалить: выберите правило, затем “Actions” → “Delete” и подтвердите удаление.

Важно: удалённое правило восстановить нельзя — оно будет удалено навсегда.
Как проверить, что всё работает
- Подпишитесь на SNS Topic тестовым Email/SMS/HTTP — подтвердите подписку.
- После создания правила дождитесь ближайшего срабатывания (или временно уменьшите период для теста).
- Проверьте, пришло ли сообщение в подписки (email, SMS) или в целевой endpoint (HTTP, Lambda). Для отладки можно временно сделать цель — Lambda, которая логирует входящие события.
- В CloudWatch Logs (если цель — Lambda) или в журнале подписки SNS ищите записи о публикации.
Критерии приёмки
- Правило создано и активно.
- SNS Topic получил публикации согласно расписанию минимум дважды подряд.
- Сообщения доставляются подписчикам/endpoint’ам.
- Правило можно отключить и удалить без ошибок.
Частые ошибки и когда это не работает
- Регион: правило и SNS Topic должны быть в одной области (region), иначе цель не сработает.
- Права IAM: у пользователя/роли нет разрешений events:PutTargets или sns:Publish. Проверьте политики.
- Тема SNS не имеет подписчиков или подписки не подтверждены — сообщения не дойдут до конечного получателя.
- Неправильное cron/rate выражение — правило не будет создано или будет неправильно срабатывать.
- Правило отключено (Disabled) — не будет выполнять публикации.
Альтернативные подходы
- Если нужна обработка сообщений перед отправкой — используйте Lambda как промежуточную цель: правило вызывает Lambda, она формирует сообщение и публикует в SNS (или в другие сервисы).
- Для распределённой доставки в очереди используйте SQS в качестве цели, затем потребители читают сообщения асинхронно.
- Event pattern (вместо Schedule) — используйте, если требуется реагировать на конкретные изменения ресурсов (например, запуск EC2, изменения в S3).
Мини-методология (шаблон действий)
- Подготовить SNS Topic и подписки.
- Проверить IAM-права для пользователя/роли.
- Создать правило в CloudWatch: Schedule → Target: SNS Topic.
- Проверить доставку и логи.
- Задокументировать правило (имя, цель, частота, ответственные).
Роль‑ориентированные чек‑листы
- Администратор безопасности:
- Проверить IAM-политику для создания/удаления правил.
- Убедиться в шифровании и настройках KMS (если используется).
- Инженер DevOps:
- Создать правило, настроить мониторинг и алерты.
- Протестировать доставку сообщений.
- Разработчик приложения:
- Проверить обработку сообщений в подписанных сервисах (Lambda/SQS).
Советы по безопасности и приватности
- Минимизируйте права: выдавайте только необходимые действия (least privilege).
- Если сообщения содержат чувствительные данные — используйте шифрование (AWS KMS) и защищённые каналы доставки.
- Контролируйте аудит: включите CloudTrail для событий EventBridge/CloudWatch Actions.
Примеры выражений расписания
- rate(5 minutes) — каждые 5 минут.
- rate(1 hour) — каждый час.
- cron(0 8 ? MON-FRI ) — каждый будний день в 08:00 (UTC).
Заключение
Мы прошли шаги по созданию правила CloudWatch Events (EventBridge) с целью SNS Topic, рассмотрели проверку работы, распространённые ошибки, альтернативные варианты и рекомендации по безопасности. Правила по расписанию — простой и гибкий способ автоматизировать публикации и интеграции в AWS.
Короткий чек: наличие темы SNS и подписок, права IAM, совпадающая область, корректное cron/rate выражение и активное правило.
Сводка:
- Создать тему SNS заранее.
- В CloudWatch → Rules создать правило с типом “Schedule”.
- Выбрать Target: SNS Topic и создать правило.
- Протестировать получение сообщений и управлять правилом (Disable/Delete) при необходимости.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента