内容
AWS Systems ManagerのIncident Managerを使用して、以下のようなエスカレーションフローを構築してみます。CloudWatchアラームが発生した際、まずメール通知を行い、対応者が承認を行わなかった場合に電話通知を実行する流れです。
仕組み
CloudWatchでアラーム状態になった際のアクションとして、Incident Managerの「対応プラン」を指定します。対応プランでは、インシデント発生時の処理を定義できます。通知を行うには「エンゲージメント」の設定を行います。Eメールや電話のほか、チャットチャネルに通知したり、Systems Managerのランブックを使用して自動アクションを実行することも可能です。
今回は Eメール通知および電話通知を設定するため、対応プランの中でも「エンゲージメント」の設定を行っていきます。
まず、コンタクト(連絡先)の設定を行います。ここでは「コンタクトチャネル」を設定します。コンタクトチャネルでは、Eメールや電話番号など1つ以上の連絡手段を定義できます。また「エンゲージメントプラン」により、どのタイミングで通知を行うか(何分後にどの連絡先に通知するか)も指定可能です。
今回はEメールアドレスを1つ定義します。また、即時に通知を行うため、通知タイミングには「0分」を指定します。Eメールアドレスを設定すると、そのアドレス宛にアクティベーションコードが送信されます。このコードを入力することで、コンタクトチャネルが有効化され、通知に使用可能となります。
次に、別のコンタクトを定義し、音声(電話)通知の設定を行います。
先ほどと同様に、コンタクトチャネルとして電話番号を追加します。音声通知では、指定した電話番号に英語の音声でアクティベーションコードが読み上げられます。これを入力することで、電話通知チャネルも有効化されます。
作成したコンタクトチャネルをもとに、エスカレーションプランを構成します。
以下の設定では、まずEメールのコンタクトに通知し、3分後に電話のコンタクトへ通知するようになっています。「確認により、プランの進行が停止します」を選択することで、Eメール通知を受け取った対応者が承認を行った場合、次の電話通知はスキップされます。
Incident Manager側の最後の設定として、対応プランを作成します。
対応プランではランブックの指定なども可能ですが、今回は「エンゲージメント」を設定し、先ほど作成したエスカレーションプランを指定します。これにより、インシデント発生時に定義された連絡フローが自動で実行されます。
次に、CloudWatchアラーム側の設定を行います。
アラーム状態時のアクションとして、作成済みの対応プランを指定します。
CloudWatchでアラームをテスト発生させると、Incident Managerにインシデント情報が表示され、同時に確認コードが記載された Eメールが届きます。Incident Managerのコンソールから確認コードを入力し承認を行うと、次の電話通知は行われません。
Eメール通知を無視した場合は、設定された電話番号に電話がかかってきます。音声で読み上げられる確認コードを入力することで、電話通知からも承認操作を行うことが可能です。