📬

【ビジュアルルールビルダー対応版】EventBridge を利用した AWS Health Event のメール通知

に公開

🧩 なぜ Health Event の通知設定が必要なのか

AWS Health Dashboard では、利用中のアカウントやリージョンに影響するイベント(EC2 の障害、RDS のメンテナンスなど)を確認できます。
しかし、管理者が定期的にダッシュボードを開かないと気づけないという課題があります。

特に以下のようなケースでは、即時通知が重要です。

  • 本番システムに影響するリージョン障害
  • メンテナンスに伴うインスタンス再起動
  • IAM や S3のセキュリティ関連イベント

これらをリアルタイムで把握するために、Amazon EventBridgeでAWS Health のイベントをトリガーにSNS 経由でメール通知する構成を作ります。

🏗️ 構成概要

以下の構成で、AWS Health Event 発生時にメール通知を送信します。

構成要素の役割:

コンポーネント 役割
AWS Health AWS サービスの障害・メンテナンスイベントを発行
Amazon EventBridge Health Event を検知しSNSへ転送
Amazon SNS 通知メッセージを Eメールに配信

◼️ AWS Health Dashboard

AWS Health Dashboard は、ご利用中のアカウントやリージョンに関連する障害・メンテナンス・変更などのイベント情報を提供するサービスです。
たとえば「 EC2 の特定インスタンスで障害が発生」「 RDS インスタンスが再起動予定」といった通知を受け取ることができます。

  • パーソナライズされたAWSサービスの稼働状況を把握可能
  • AWS Health Dashboard から確認可能

◼️ Amazon EventBridge

EventBridgeは、AWSサービスや自社アプリから発生するイベントをルールに基づいて処理・転送できるイベント駆動型サービスです。
「特定のイベントが発生したらSNSに通知する」などの自動化が可能です。

  • イベントのフィルタリングやルーティングを柔軟に設定可能
  • LambdaやSNSなど、多様なターゲットに転送できる

◼️ Amazon SNS ( Simple Notification Service )

SNSは、通知メッセージを複数のサブスクライバー(メール、SMS、Lambdaなど)に配信できるサービスです。
今回の場合は、EventBridgeから受け取ったイベントをメールで送る際に利用します。

  • メール通知を簡単に実装可能
  • マルチチャネル(HTTP、Lambda、SQSなど)に対応

💪 この構成を導入するメリット

メリット 説明
即時検知 AWS Healthイベントをリアルタイムに検知し、ダッシュボードを開かなくても障害を把握できる。
運用効率化 管理者が手動でステータスを確認する手間を削減。
初動対応の迅速化 重要イベント発生時にメール通知されるため、即座に対応可能。
組織統合監視 AWS Organizationsを利用すれば、複数アカウントのHealthイベントを一元管理できる。
柔軟な拡張性 将来的にSlack通知(AWS Chatbot)などへの拡張も容易。

⚙️ 設定手順

◼️ SNS トピックとサブスクリプションを作成する

Amazon SNSでは、通知の宛先を管理するために『トピック』と『サブスクリプション』を使います。

▪️ トピック( Topic )

トピックは 通知を送るための“宛先リスト” です。
例えるなら「メーリングリスト」や「LINEのグループ」に近いイメージです。
今回の構成では、SNS トピックに登録されている全ての宛先に同じ通知が届きます。
今回の例では、aws-health-notification というトピックを作成し、そのトピックにメールアドレスを登録します。
【参考】Amazon SNS トピックを作成する

▪️ サブスクリプション( Subscription )

サブスクリプションは、トピックに登録されている個々の宛先のことです。
トピックに対して、次のような「通知先」を追加できます。

  • Email
  • SMS
  • Lambda
  • SQS
  • Slack(AWS Chatbot経由)
  • HTTP/HTTPS など

【参考】Amazon SNS トピックのサブスクリプションの作成

▪️ 作成手順

  1. AWSコンソールで Amazon SNS を開く
  2. 左側のメニューより「トピック」を選択し、「トピックの作成」をクリックします。
  3. トピックの作成画面にて、以下を設定
    • タイプ:スタンダード
    • 名前:トピックの名前(例:aws-health-notification)
  4. トピックの作成画面下部の「トピックを作成」をクリックして、トピックを作成します。
  5. 作成後、「サブスクリプションを作成」をクリック
  6. サブスクリプションの作成画面にて、以下を設定
    • プロトコル:Eメール
    • エンドポイント:通知を受け取るメールアドレスを入力
  7. 「サブスクリプションの作成」をクリックして、サブスクリプションを作成します。
  8. 登録したメールに届く確認メールを開き、「Confirm subscription」をクリック

これで SNS トピックとサブスクリプションの準備は完了です。

◼️ EventBridge ルールを作成する

EventBridge の「ルール」は以下の 2 つを指定する設定のことです。

  1. どんなイベントに反応するか(イベントパターン)
    例:source = "aws.health"
  2. 反応したとき何をするか(ターゲット)
    例:SNS トピックに通知 → メール送信
    つまり、条件(イベントパターン)+アクション(ターゲット)を定義したものがルールです。

▪️ 作成手順(ビジュアルルールビルダー)

  1. AWSコンソールで Amazon EventBridge を開きます。

  2. 左側のメニューより「ルール」を選択し、「ルールを作成」をクリックします。

  3. 「設定」タブから以下を設定します。
    名前:ルールの名前(例:aws-health-email-alert)
    イベントバス:default

    ルールはデフォルトでは、「有効化」した状態で作成されます。
    「無効化」した状態でルールを作成したい場合は、ここでアクティベーションを無効化します。

  4. 左側のメニューから [イベント] - [AWS サービスイベント] を選択します。

  5. 左側のメニューのフィルタからHealthを検索して、「Health」イベントを右側のトリガーイベントへドラッグ&ドロップします。

  6. 左側のメニューから「ターゲット」を選択します。

  7. 左側のメニューのフィルタからSNSを検索して、左側のメニューから「SNS トピック」イベントを右側のターゲットへドラッグ&ドロップします。

  8. 右側の「ターゲット」にて、以下を設定します。
    ターゲットの場所:このアカウントのターゲット
    トピック:作成したトピック
    許可:実行ロールを使用 (推奨)をチェック
    実行ロール:この特定のリソースのために新しいロールを作成

  9. 画面右上の「作成」をクリックして、EventBridge ルールを登録します

▪️ 作成手順(旧ルールビルダー)

現時点(2025年12月)ではまだ旧ルールビルダーと新ルールビルダーを切り替えることができます。
旧ルールビルダーへの切り替えは、新規ルールを作成もしくは編集画面から切り替え可能です。
※ 旧ルールビルダーの廃止は未定です。

  1. AWSコンソールで Amazon EventBridge を開きます。
  2. 左側のメニューより「ルール」を選択し、「ルールを作成」をクリックします。
  3. 「ビジュアルルールビルダー オプトイン」を無効化

    この設定は画面右上からも切り替え可能です。
  4. ルールを作成画面にて、以下を設定して「次へ」をクリックします。
    名前:ルールの名前(例:aws-health-email-alert)
    イベントバス:default
    ルールタイプ:イベントパターンを持つルール
  5. 「イベントパターンを構築」にて、以下を設定して「次へ」をクリックします。
    例)すべてのhealthイベントを通知する場合
    イベントソース:AWS イベントまたは EventBridge パートナーイベント
    作成のメソッド:パターンフォームを使用する
    イベントソース:AWS のサービス
    AWS のサービス:Health
    イベントタイプ:すべてのイベント

  6. 「ターゲットを選択」にて、以下を設定して「次へ」をクリックします。
    ターゲットタイプ:AWS のサービス
    ターゲットを選択:SNS トピック
    ターゲットの場所:このアカウントのターゲット
    トピック:作成したトピック

  7. 「タグを設定」にて、「次へ」をクリック
  8. 「レビューと作成にて、設定内容に問題がないことを確認
  9. 「ルールを作成」して有効化

▪️ 特定のサービスのみを通知対象にする

AWS Health Event には多くの種類があり、すべてを通知するとメールが増えすぎてしまう場合があります。
そのため、特定のサービスに絞って通知することも可能です。
【設定手順(ビジュアルルールビルダー)】

  1. EventBridge ルール作成もしくは編集画面にて、左側のメニューのフィルタから「Health Event」を検索して、「AWS Health Event」を右側のトリガーイベントへドラッグ&ドロップします。
  2. 右側のトリガーイベントの「スキーマ」タブにて「service」の値を設定します。
    複数のサービスを指定する場合は、「追加」から条件を追加します。
  3. その他、必要に応じて条件を設定します。
  4. 以降の手順は「作成手順(ビジュアルルールビルダー)」と同様です。

※イベントパターン (フィルター) のJSONを直接編集することも可能です。

【設定手順(旧ルールビルダー)】

  1. EventBridge ルール作成もしくは編集画面の「イベントパターンを構築」にて、以下を設定します。
    イベントソース:AWS イベントまたは EventBridge パートナーイベント
    作成のメソッド:パターンフォームを使用する
    イベントソース:AWS のサービス
    AWS のサービス:Health
    イベントタイプ:特定のヘルスイベント
    イベントタイプの仕様:特定のサービス(任意のサービスを指定)
  2. その他、必要に応じて条件を設定します。
  3. 以降の手順は「EventBridge ルールを作成する」と同様です。

【旧ルールビルダーで複数のサービスを対象とする場合は?】
EventBridge ルール作成もしくは編集画面の「イベントパターンを構築」にて、以下を設定します。
作成のメソッド:カスタムパターン (JSON エディタ)
そこで、以下のように JSON を記述すれば 複数サービスの OR 条件が構成できます。

{
  "source": ["aws.health"],
  "detail-type": ["AWS Health Event"],
  "detail": {
    "service": ["EC2", "RDS", "IAM"]
  }
}

⚠️ 制限事項・注意点

項目 内容
通知の遅延 AWS Healthイベントは発生から数分遅れる場合があります。
重複通知 イベント更新時(open → update → resolved)に複数通知されます。
リージョン依存 EventBridge ルールはリージョン単位で管理されます。必要に応じて複数設定してください。
通知量の制御 全サービス対象にするとメールが多くなるため、必要なサービスに絞るのがおすすめです。
セキュリティ SNS トピックをパブリックにせず、アクセス制御を設定しましょう。

💡 まとめ

AWS Health EventをEventBridge経由でSNSへ転送し、メール通知を自動化することで、
障害やメンテナンス情報をリアルタイムで受け取れる仕組みを構築できます。

運用負荷の軽減・初動対応の迅速化に非常に効果的です。
組織アカウント運用の方は、Organizations連携で統合監視するのもおすすめです。

🔗 参考資料

MEGAZONE株式会社 Tech Blog

Discussion