
AWS Systems Managerの機能”Incident Manager”をセットアップしよう!
本記事では、AWSリソースを含むシステムの運用をする際に便利なサービス「AWS Systems Manager」を複数回にわたってご紹介します。
今回は第3回目の記事ということで、AWS Systems Managerが持つオペレーション管理機能の1つである「Incident Manager」について解説します。
今回の記事で機能概要の説明とセットアップについて取り上げ、次回の記事ではより応用的な内容を解説しますので、記事を是非ともお読みいただき、 Incident Manager によるインシデント管理を始めてみましょう。
Incident Managerとは
Incident Managerは、AWS Systems Managerが持つオペレーション管理機能の1つで、AWS環境およびハイブリッド環境で発生したインシデントを管理する機能です。
インシデント管理とは
この「インシデント」という単語自体、あまり馴染みの無い方もいらっしゃると思います。まずは、この単語の意味を押さえるところからIncident Managerの理解を始めていきます。
Incident は「事件/事故」などと訳すことができる英単語ですが、ITの分野では、ITサービス品質の低下や計画外の中断により業務に影響が及ぶようなシステムの不具合を意味します。つまり、”システムにおける重大な事故”です。
それでは、”インシデントを管理する”とは具体的にどのようなことをするのでしょうか。
ITサービスマネジメントのベストプラクティスをまとめたガイドブックである「ITIL(Information Technology Infrastructure Library)」では、「インシデント管理」はインシデントを迅速に解決することを目的とし、次のプロセスの下でインシデントを管理および対処することと説明されています。

- 識別
報告されたものがインシデントであるかを判断し、インシデントの場合は内容を識別したうえで適切な対処プロセスに引き渡します。 - 記録
インシデントと識別したものについて、詳細を記録します。 - カテゴリ化
インシデントを種類ごとに分類します。 - 優先度付け
「インパクト」および「緊急度」より、インシデントの優先度を決定します。 - 初期診断
インシデントがサービスデスク(※)を経由する場合、サービスデスクで初期診断を実施します。
診断の結果、高等技術者や権限を持つスタッフへのエスカレーションを行う場合もあれば、この段階でインシデントを解決してクローズする場合もあります。
※ユーザからインシデントの報告を受け付ける1次窓口です。 - エスカレーション
対応状況やインパクトに応じて、高度技術者や上位権限者へエスカレーションを行います。 - 調査と診断
既知の回避策がない場合、調査と診断を実施し、根本的な原因究明にこだわらずに障害等の解決策を検討します。 - 解決と復旧
解決策が判明した場合、解決策をテストおよび適用します。 - クローズ
インシデントをクローズします。
これらフローの詳細な説明は今回省略しますが、Incident ManagerはITILのインシデント管理フローに近い形で、AWSクラウドおよびハイブリッド環境で発生したインシデントを管理する機能であると理解してください。
Incident Managerの機能
インシデント管理フローのイメージを持った上で、Incident Managerが持つ具体的な機能を見ていきましょう。
対応プラン
インシデント発生時に準備が必要な物を定義するテンプレートを提供します。
- インシデント発生時の対応者
- インシデントを軽減するための自動対応
- 対応者がインシデントに関する自動通知を受け取るコンタクトツール
インシデント検知
AWS リソースに影響する条件や変更が検出されたときにインシデントを作成するようにAmazon CloudWatch アラームとAmazon EventBridge イベントを設定できます。
ランブックオートメーションサポート
インシデントへの重要な対応を自動化し、詳細なステップを提供します。
エンゲージメントとエスカレーション
エンゲージメントは、インシデント発生の度に個別の連絡先やメンバー全員を宛先として通知する機能です。エスカレーションパスを指定すると、様々な関係者にインシデントをエスカレーションでき、可視性の向上およびインシデント対応プロセスへの積極的な参加を促進できます。
オンコールスケジュール
対応者以外に技術者や上位層メンバーの介入が必要なインシデントが発生したケースを想定して、通知先を定義できます。24 時間365 日のインシデント対応を実現するのにも役立ちます。
アクティブコラボレーション
Slack、Microsoft Teams、Amazon Chime等に対応するAWS Chatbotクライアントと連携して、インシデントへの積極的な対応を促します。チャットでは、対応者との直接的なやりとりは勿論、自動通知やいくつかのIncident Managerコマンドラインインターフェース(CLI)操作もできます。
インシデント診断
インシデント発生中、Incident Manager コンソールで最新の情報を表示できます。更新される情報に基づき、フォローアップ項目の作成、オートメーションランブックによる修復が可能です。
他サービスからの検出結果
インシデント診断をサポートするために、他サービスからの検出結果を利用できる「検出結果オプション」を有効化できます。根本的な原因究明に必要な時間を短縮し、インシデントからの平均復旧時間(MTTR)を短縮できます。
インシデント後分析
インシデント解決後、検知までの時間や緩和策など、インシデント対応の改善点を特定します。分析によって、インシデントの根本原因を突き止めることもできます。また、今後に活かせる推奨フォローアップ行動リストも作成できます。
Incident Managerの料金
Incident Managerの料金体系は次の通りです。
詳細 | 料金 |
---|---|
対応プラン | 1プランごとに月額7 USD |
SMS および音声メッセージ ※月額100 件のSMS または音声メッセージが無料 | メッセージごと、SMS および1 分間の音声メッセージの宛先国の料金に基づく |
仮に対応プランを2つ用意し、日本国内宛に月120件のSMSメッセージを送信した場合、
2 つの対応プラン:7USD * 2 = 14 USD
日本国内宛に120 件のメッセージ:0.10USD * (120件- 無料分100件) = 2 USD
合計月額コスト= 対応プランコスト+ メッセージコスト= 14 USD + 2 USD = 16 USD
となります。
これらIncident Managerの料金に加え、対応プランによるランブック実行を行うAWS Systems Manager OpsCenterやAWS Systems Manager Automationの料金が課金されます。
Incident Managerのセットアップ
まだIncident Managerの利用を開始していない方は、以降の手順を参考にIncident Managerをセットアップしてみましょう。また、今回はセットアップに加えて「連絡先設定」、「エスカレーションプラン」、「対応プラン」、「オンコールスケジュール」の設定も簡単に紹介します。
Incident Managerのセットアップ
1.AWS Systems Managerコンソールの左ペインにある「オペレーションツール」のメニューより、「インシデントマネージャー」のリンクをクリックします。

2.Incident Managerの管理コンソールが表示されるので、画面右にある「準備する」をクリックします。

3.「全般設定」の「セットアップ」をクリックします。

4.利用規約を確認し、利用規約に同意する旨のチェックボックスにチェックを入れ、「次へ」をクリックします。

5.「全般設定を指定」画面が表示されるので、設定内容を変更したい場合は変更し、画面右下にある「作成」をクリックします。特に設定を変更しなくても「作成」をクリックすると、全般設定を完了させることができます。また、これらの設定は後から変更することも可能です。
リージョン

インシデントのマスタデータを管理するリージョンは、AWS Systems Managerを利用しているリージョン(画像の場合はap-northeast-1)が自動的に指定されています。ここでは、インシデントデータのレプリケートを置きたいリージョンを追加指定したい場合に指定できます。
レプリケートは「複製」を意味し、要するにインシデントデータの複製(リアルタイムで同期されるデータ)を別リージョンに配置することで、障害等でマスタデータが見れない場合に備える機能です。AWSでは、最低2つのリージョンでレプリケートさせることを推奨しています。
KMS暗号化

インシデントデータの暗号化に利用するKMSキーを指定します。「AWS所有キー」か独自で作成した「既存のAWS KMSキー」のいずれかを選択できます。
暗号化キーに関する運用ルールを特に定めていないのであれば、AWS所有キーを利用するのがいいでしょう。無料で利用でき、キーポリシーの変更や管理も不要で使い易いためです。
タグ

他のAWSリソース同様にタグを付与できます。
サービスアクセス

他サービスからの検出結果を利用できる「検出結果オプション」の設定です。根本的な原因究明に必要な時間を短縮し、インシデントからの平均復旧時間(MTTR)を短縮するのに役立ちます。
「このアカウントの検出結果のサービスロールを作成」にチェックを入れると、cloudformationやcodedeployといったサービスへのアクセス権限が付与された「IncidentManagerIncidentAccessServiceRole」というIAMロールが作成されます。
セットアップ処理が開始すると次のメッセージが表示されます。

しばらく待機するとセットアップが完了し、次のメッセージが表示されます。

連絡先設定
インシデントが発生した際に、通知先となる連絡先を指定する機能です。
1.セットアップに続いて連絡先設定を行う場合は、以下画面の「連絡先を作成」をクリックします。

Incident Managerの管理コンソールからは、左ペインにある「Incident Manager」のメニューより「コンタクト(または「連絡先」)」をクリックし、画面右ペインに表示される「コンタクトを作成」をクリックします。

2.「コンタクトの情報」画面が表示され、連絡先設定を作成することができます。
コンタクトの詳細

連絡先の名前とエイリアス(別名)を設定します。
コンタクトチャネル

この連絡先で使用する連絡手段を設定します。連絡手段を示す「タイプ」は「Eメール」、「SMS」、「音声」の3つから選択できます。各タイプの制限事項は次の通りです。
タイプ | 制限事項 |
---|---|
Eメール | ・6~1000 文字 ・[ユーザー名] @ [ドメイン名] ・有効な文字は、半角英数字および記号 ( . : + = @ % – ) |
SMS、音声 | ・9~15 文字 ・+ で始まり、その後に国コードと加入者番号が続く形 ・有効な文字は、半角数字と+ のみ |
※スマートフォンの場合、SMSは国コード(2桁:日本の場合は 81)+ 電話番号(11桁)で指定します。一方、音声は国コード(2桁)+ 電話番号(10桁)で指定し、電話番号の頭の0を除く必要があります(指定を誤ると後手順のアクティベーションコードを受信できません)。
エンゲージメントプラン

先に追加した「コンタクトチャネル」を指定する形でエンゲージメントを追加できます。「エンゲージメント時間」を設定することで、インシデントが発生して即時連絡するのか、数分待機して連絡するのか制御することができます。
例えば、複数のエンゲージメントを設定し、インシデントが発生して即時Eメールでコンタクトを取り、その2分後に音声でコンタクトを取るといった制御が可能です。
タグ

他のAWSリソース同様にタグを付与できます。
一通り設定を終えたら、画面右下の「作成」をクリックすることで、コンタクトの作成処理が実行されます。

3.「コンタクトチャネルのアクティベーション」画面が表示され、コンタクト作成時に設定したコンタクトチャネルのアクティベーションを促されます。
前手順で「作成」をクリックした直後、設定したコンタクトチャネル宛にアクティベーションコードが送信されるため、アクティベーションコードを確認してこの画面に入力します。

「音声」をコネクトチャネルに選択した場合は、電話が掛かってきます。応答すると自動音声が流れ、6桁のアクティベーションコードが読み上げられます(通話を終了する際はダイヤルキーの“1” を入力します)。
この時、着信する発信元の電話番号は、次の画像のようにIncident Managerだと判別できない形です。

AWSは、Incident Managerのアドレス帳情報を通知先のモバイルデバイスにインポートすることを推奨しています。モバイルデバイスで次のURLにアクセスし、アドレス帳情報をインポートしましょう。
https://d26vhuvd5b89k2.cloudfront.net/aws-incident-manager.vcf
URLにアクセスすると、次のようにvcfファイルが電話アプリで開かれます。新規連絡先として登録しましょう。

登録すると、以下のように発信元がIncident Manager(AWS Systems Manager)と判別できる形で音声通知を受け取ることができます。

エスカレーションプラン設定
「ステージ」という概念で、インシデント発生後のエスカレーションフローを設定する機能です。
1.連絡先設定に続いてエスカレーションプランの設定を行う場合は、以下画面の「エスカレーションプランを作成」をクリックします。

Incident Managerの管理コンソールからは、左ペインにある「Incident Manager」のメニューより「エスカレーションプラン」をクリックし、画面右ペインに表示される「エスカレーションプランを作成」をクリックします。

2.「エスカレーションプランを作成」画面が表示され、エスカレーションプランを作成することができます。
エスカレーションプランの詳細

エスカレーションプランの名前とエイリアス(別名)を設定します。
ステージ

エスカレーションフローを構成するステージを設定します。
例えば、ステージ1の担当者が応答しない場合、ステージ2にエスカレーションをするなどの制御ができます。
ステージ期間:次のステージを開始するまでの時間(分)で設定します。
エスカレーションチャネル:作成済みのコンタクトをエスカレーションチャネルとして指定します。
エスカレーションチャネル:エスカレーション先となるコンタクトを1つないし複数設定できます。
確認により、プランの進行が停止します:連絡した担当者が確認するとプランを中断する設定です。
タグ

他のAWSリソース同様にタグを付与できます。
一通り設定を終えたら、画面右下の「エスカレーションプランを作成」をクリックすることで、エスカレーションプランの作成処理が実行されます。

対応プラン作成
1.エスカレーションプランの作成に続いて対応プランの設定を行う場合は、以下画面の「対応プランを作成」をクリックします。

Incident Managerの管理コンソールからは、左ペインにある「Incident Manager」のメニューより「対応プラン」をクリックし、画面右ペインに表示される「対応プランを作成」をクリックします。

2.「対応プランを作成」画面が表示され、対応プランを作成することができます。
対応プランの詳細

対応プランの名前とエイリアス(別名)を設定します。
インシデントのデフォルト

タイトル:インシデントリストに表示される一意なインシデントタイトルを設定します。
影響:インシデントが顧客の業務に及ぼす影響度(トリアージ)を5段階で設定します。影響度を設定することで対応時間や優先度の目安を付けやすくなります。
影響コード | 影響名 | サンプルの定義スコープ |
---|---|---|
1 | 重大(Critical) | ほとんどのユーザに影響するアプリケーション全体の障害 |
2 | 高(High) | 一部のユーザに影響するアプリケーション全体の障害 |
3 | 中(Medium) | ユーザに影響する部分的なアプリケーション障害 |
4 | 低(Low) | ユーザへの影響は限定的な断続的障害 |
5 | 影響なし(No Impact) | ユーザは現在影響を受けていないものの、影響を回避するための緊急のアクションが必要。 |
概要:インシデントの概要をMarkdown形式で表示します。
重複排除文字列:同一アカウントに根本原因が同じインシデントを複数作成するのを防ぐための文字列を設定します。
チャットチャネル

AWS Chatbotで作成したチャットチャネルを指定し、SNSによる通知を受け取る設定を行います。AWS Chatbotでは、Amazon Chime、Slack、Microsoft Teamsのいずれかを選んでチャットチャネルを作成できます。Slack、Microsoft Teamsを選択した場合、チャットツール内でコマンドを実行してインシデント情報を取得することも可能です。
エンゲージメント

あらかじめ作成したエスカレーションプランや連絡先を指定して、エンゲージメントチャネルとして設定できます。
ランブック設定

インシデント発生時に、AWS Systems Manager Automationのランブックを呼び出し、インシデント対応操作を自動実行することができます。インシデント対応用のランブックテンプレートも用意されています。
ここでは、使用するランブック、ランブック名、ランブック実行に必要なサービスロール、ランブック実行対象となるアカウントなどを設定します。
サードパーティーの統合

統合すると、Incident Managerがインシデントを作成するたびに、PagerDutyが対応します。PagerDutyとは、サードパーティ製のインシデント管理ツールです。
タグ

他のAWSリソース同様にタグを付与できます。
一通り設定を終えたら、画面右下の「対応プランを作成」をクリックすることで、対応プランの作成
処理が実行されます。

オンコールスケジュール設定
インシデント対応窓口となる担当者のシフトスケジュールを設定できます。また、複数のスケジュールを組み合わせてローテーションさせることも可能で、長い時間開かれた対応窓口を実現できます。
1.Incident Managerの管理コンソール左ペインにある「Incident Manager」のメニューより「オンコールスケジュール」をクリックし、画面右ペインに表示される「オンコールスケジュールを作成」をクリックします。

2.「オンコールスケジュールを作成」画面が表示され、オンコールスケジュールを作成することができます。
スケジュールの詳細

オンコールスケジュールの名前とエイリアス(別名)を設定します。
ローテーション

オンコールスケジュールのローテーションは、対応窓口のシフトに関する設定です。1つないしは複数のローテーションを設定することで、シフト制で対応窓口としてコンタクトを運用することができます。
ローテーション単位で有効期間の開始および終了の時刻、ローテーションスケジュール、やり取りを担当するコンタクトを設定します。
一通り設定を終えたら、画面右下の「作成」をクリックすることで、オンコールスケジュールの作成処理が実行されます。

さいごに
さて、今回は「AWS Systems Managerフル攻略マニュアル」の第3回ということで、Incident Managerの概要とセットアップについて説明しました。より応用的な内容は、次回の記事で説明する予定です。次回と合わせて参考にしていただき、インシデント管理の第一歩を踏み出しましょう。