アーキテクチャ概要
EventBridge を使う理由: EventBridge は組み込みのリトライロジック・デッドレターキュー・IAM ベースのセキュリティを備えた、クリーンな JSON を Webhook に直接送信します。SNS とは異なりサブスクリプション確認のハンドシェイクが不要で、ペイロードの変換に Lambda 関数も必要ありません。
前提条件
- EventBridge ルール・API Destination・接続を作成する権限を持つ AWS アカウント
- モニタリングしたいメトリクスに設定された CloudWatch アラーム
- CloudThinker の Webhook URL(以下の手順で作成)
セットアップガイド
CloudThinker Webhook を作成する
- CloudThinker で Deep Response Engine → Settings → Integrations に移動します
- AWS CloudWatch カードの 「Connect」 をクリックします
- 名前を入力します(例:「Production CloudWatch Alerts」)
- 事前設定済みのフィールドマッピングを確認します。EventBridge フォーマット向けに設定されています。
| インシデントフィールド | JSONPath | 抽出内容 |
|---|---|---|
| タイトル | $.detail.alarmName | アラーム名 |
| 説明 | $.detail.state.reason | 状態変化の理由 |
| 重要度 | $.detail.state.value | アラーム状態(ALARM・OK・INSUFFICIENT_DATA) |
| サービス | $.detail.configuration.metrics[0].metricStat.metric.namespace | AWS サービスネームスペース(例:AWS/EC2) |
- デフォルトの認証方法は API Key でヘッダー名は
x-api-keyです。EventBridge の接続設定と一致しています - 必要に応じて重要度マッピングと自動トリガー設定を行います
- 「作成」 をクリックし、シークレットキーを保存します。EventBridge の接続設定で必要になります
EventBridge 接続を作成する
- AWS コンソールで Amazon EventBridge → Integration → Connections に移動します
- 「接続を作成」 をクリックします
- 接続を設定します:
- 名前:
cloudthinker-webhook - 認証タイプ: API Key
- API キー名:
x-api-key - API キーの値: CloudThinker Webhook 作成ダイアログのシークレットキーを貼り付けます
- 名前:
API Destination を作成する
- Amazon EventBridge → Integration → API destinations に移動します
- 「API Destination を作成」 をクリックします
- 以下を設定します:
- 名前:
cloudthinker-incidents - API destination エンドポイント: CloudThinker の Webhook URL を貼り付けます
- HTTP メソッド:
POST - 接続: 上で作成した
cloudthinker-webhook接続を選択します - 呼び出しレート制限:
100毎秒(必要に応じて調整)
- 名前:
EventBridge ルールを作成する
- Amazon EventBridge → Rules に移動します
- default イベントバスを選択します
- 「ルールを作成」 をクリックします
-
以下を設定します:
- 名前:
cloudwatch-alarms-to-cloudthinker - 説明: CloudWatch アラーム状態変化を CloudThinker にルーティング
- イベントバス: default
- ルールタイプ: イベントパターンを持つルール
- 名前:
- イベントパターンを定義します:
-
ターゲットを選択します:
- ターゲットタイプ: EventBridge API destination
- API Destination:
cloudthinker-incidentsを選択します - 実行ロール:
events:InvokeApiDestination権限を持つ新しいロールを作成するか、既存のロールを使用します
- 「ルールを作成」 をクリックします
イベントペイロード
EventBridge は CloudWatch アラームイベントを以下の形式で配信します。CloudThinker のフィールドマッピングはこの構造からインシデントデータを自動的に抽出します。重要度マッピング
CloudWatch のアラーム状態は CloudThinker の重要度レベルにマッピングされます。デフォルトのマッピングは以下のとおりです。| CloudWatch 状態 | CloudThinker 重要度 |
|---|---|
ALARM | Critical |
INSUFFICIENT_DATA | Medium |
OK | Info |
アラームのフィルタリング
EventBridge ルールのイベントパターンを絞り込むことで、インシデントをトリガーするアラームを制御できます。 アラーム名プレフィックスでフィルタリング:マルチリージョンのセットアップ
CloudWatch イベントはリージョン固有です。アラームは自身のリージョンの EventBridge バスにのみイベントを送信します。マルチリージョンモニタリングには以下の 2 つの方法があります。- オプション A:クロスリージョンイベント転送 — 各ソースリージョンに EventBridge ルールを作成し、CloudWatch アラームイベントを中央リージョンのイベントバスに転送してから CloudThinker にルーティングします。
- オプション B:リージョンごとのルール — 同じ CloudThinker Webhook URL を指す API Destination とルールを各リージョンに作成します。シンプルですが、リージョン全体でルールの管理が必要です。
トラブルシューティング
インシデントが作成されない
インシデントが作成されない
- EventBridge ルールを確認する — EventBridge → Rules → ルールを選択 → Monitoring タブ。ルールがイベントに一致していることを確認します(
Invocationsメトリクスが 0 より大きい) - API Destination を確認する — API destinations → 選択 → エンドポイント URL が CloudThinker Webhook URL と一致しているか確認
- CloudThinker ログを確認する — Deep Response Engine → Settings → Integrations → Webhook を選択 → Logs タブで配信履歴を確認
- CLI でテストする —
aws cloudwatch set-alarm-stateを実行してアラームをシミュレートし、完全なチェーンを確認
イベントは受信されるがフィールドが欠けている
イベントは受信されるがフィールドが欠けている
フィールドマッピングが EventBridge イベント形式と一致しているか確認してください。EventBridge 経由でルーティングされた CloudWatch イベントは
$.detail.* プレフィックスを使用します。- タイトル:
$.detail.alarmName($.AlarmNameではない) - 重要度:
$.detail.state.value($.NewStateValueではない) - 説明:
$.detail.state.reason($.NewStateReasonではない)
ルールがイベントに一致しない
ルールがイベントに一致しない
- イベントパターンが
"detail-type": ["CloudWatch Alarm State Change"]を使用していることを確認します(大文字小文字を区別した正確な文字列) - ルールが default イベントバス上にあることを確認します。CloudWatch はデフォルトバスにイベントを送信します
- アラームと EventBridge ルールが同じリージョンにあることを確認します
API Destination がエラーを返している
API Destination がエラーを返している
- 401/403:EventBridge 接続の API キーの値が Webhook のシークレットキーと一致し、キー名が
x-api-keyであることを確認してください - 422:ペイロード形式が期待するフィールドマッピングと一致していない可能性があります。イベントペイロードの構造を確認してください
- 429:Webhook のレート制限を超えています。CloudThinker の Webhook 設定でレート制限を増やしてください
代替手段:SNS ルート
CloudThinker は SNS 経由での CloudWatch アラームの受信もサポートします。アラームに SNS トピックがすでに設定されている場合に便利な方法です。- SNS サブスクリプションの確認(手動確認不要)
- SNS 通知エンベロープのアンラップによるアラームペイロードの抽出
EventBridge ルートは SNS より推奨されます。クリーンなイベント形式、ネイティブフィルタリング、サブスクリプションハンドシェイクが不要な点で優れています。
関連
Webhook インテグレーション概要
サポート対象プラットフォームと一般的な Webhook 設定について。
根本原因分析
CloudWatch インシデント向けの自動 AI 搭載調査を設定。