Amazon Web Services ブログ
AWS Health Aware — 組織および個人の AWS アカウントの AWS Health アラートのカスタマイズ
AWS は高い可用性でサービス提供できるよう努力しており、ほとんどのサービスで 99.9% の稼働率を達成しています。そうは言っても、お客様は稀に発生するインシデントに対応できるよう準備する必要があります。AWS Health は、サービス品質の低下、スケジュールされた変更、リソースに影響を与える問題に関する情報を取得するための主要なチャネルです。ミッションクリティカルなアプリケーションを実行しているお客様がインシデントからの復旧プロセス全体を改善し、優れた運用を維持するためにはプロアクティブかつリアルタイムにアラートを受け取れなければなりません。Health イベントのモニタリングと AWS で実行されるお客様のアプリケーションの信頼性と可用性の維持には、スピードと俊敏性が非常に重要です。
AWS Health Aware — AHA は、インシデントの管理と通知を実現するフレームワークです。AHAを導入することにより、AWS Health からのプロアクティブでリアルタイムなアラートを普段使っているコミュニケーションツールに連携することができます。AWS Organizations をご利用のお客様は、組織内の影響を受けるアカウントから集計されたアクティブなアカウントレベルのアラートを受け取ることができます。アラートの通知先には、Slack、Microsoft Teams、Amazon Chime、E メールやその他のエンドポイントを設定することができます。これらのアラートは、お客様にイベントの可視性とガイダンスを提供し、お客様のアプリケーションやワークロードに影響を及ぼす問題を迅速に診断して解決できるようにすることを目的としています。
AHA が提供するもの
AHA は AWS Health API を使用します。AWS Health API はビジネスまたはエンタープライズサポートプランに加入している AWS のお客様のみが利用でき、次の機能を利用することができます。
- Slack、Amazon Chime、Microsoft Teams、E メールなどの通信プラットフォームとの統合による、AWS インシデントの自動化されたリアルタイムなアラート。
- 組織アラートと非組織アラートの両方をイベントバスにインジェスト(投入)する機能を備えたAmazon EventBridge との統合。これにより、NewRelic, DataDog, PagerDutyなど、35を超えるSaaSパートナーのサービスと連携できます。
- AWS Health が提供する規範的なガイダンスを備えた集約された PHD (Personal Health Dashboard)アラート。
- PHD アラートの影響を受ける AWS アカウントとリソースの可視化。
- 特定のリージョンを選択して、不要なアラートを除外する機能。
スコープ
AHAのデプロイ方法について紹介する前に、AHAの機能とアーキテクチャについて理解を深めておきましょう。下の図はAWS Organizaztionsの利用状況に応じて、利用できる AWS Health API イベントの概要を示しています。
アーキテクチャの概要
以下はサーバレスに実現されるAHAのアーキテクチャをシングルリージョン、マルチリージョンそれぞれについて図示したものです。
ユーザーが AWS CloudFormation テンプレート(CFT)を AWS アカウントにアップロードします。CFTはAmazon S3 バケットから事前にアップロードしておいたZIPパッケージを取得します。その後、CFT は Amazon IAM ロール、Amazon EventBridge スケジュール、AWS Lambda 関数、AWS Secrets Manager に保存された Webhook URL、および Amazon DynamoDB テーブルをデプロイします。
シングルリージョン
このアーキテクチャにより、ユーザーは指定された単一の AWS リージョンに AHA をデプロイできます。
マルチリージョン
このアーキテクチャにより、ユーザーは AHA をアクティブな複数のリージョンにデプロイできます。これにより、応答性が維持されたまま、複数のリージョンの AHA デプロイメントが一元化され、AWS イベント中に発生する可能性のある中断が防止されます。
AHA アーキテクチャのリソースとその説明は下表の通りです。
リソース | 説明 |
DynamoDDBTable | イベント情報を保存するための DynamoDB テーブル |
ChimeChannelSecret | AWS Secrets Manager に保存された Amazon Chime の Webhook URL |
EventBusNameSecret | AWS Secrets Manager に保存された Amazon EventBride イベントバスの ARN |
LambdaExecutionRole | Lambda 関数の実行ロール |
LambdaFunction | AWS Health API で情報を取得し、その情報を指定されたウェブフック URL へ送信し、DynamoDB に書き込む Lambda 関数 |
LambdaSchedule | 1分ごとにLambda関数を呼び出す EventBridge ルール |
LambdaSchedulePermission | LambdaSchedule に LambdaFunction の実行を許可するリソースベースポリシー |
MicrosoftChannelSecret | AWS Secrets Manager に保存された Microsoft Teams の Webhook URL |
SlackChannelSecret | AWS Secrets Manager に保存された Slack の Webhook URL |
EventBridgeによる機能拡張
Amazon EventBridge は、カスタムソース、AWS リソース、および SaaS アプリケーションからリアルタイムデータのストリームを配信することで、簡単にアプリケーションを相互に接続することができます。EventBridge に配信されたデータは AWS Lambda, AWS Step Functions, Amazon Kinesis など、さまざまなターゲットに送信することができます。また、Amazon EventBridge を使用すると、アプリケーションをさまざまな SaaS パートナーとサーバーレスに接続できます。お客様は、これらの機能を使用することで密結合ではなくイベント駆動型の疎結合なアーキテクチャを構築することができ、アプリケーションのスケーラビリティと信頼性を向上させることができます。EventBridge でエンドツーエンドの統合を構築するお客様も増えてきているので、AHA がイベントソースとイベントタイプのさまざまな組み合わせの可能性を考えるガイダンスとなれば良いと思っています。
以下のユースケースが挙げられます。
- ニアリアルタイムの監査、および過去のビジネスオペレーションイベントの記録
- ビジネスインテリジェンスおよび運用上の目的でのイベントの可視化と分析
- アプリケーション、サービス、インフラストラクチャに対するアラートと修復の自動化
- 後続のコンシューマーへのイベント連携、あるいはレガシーアプリケーションやオンプレミスアプリケーションとの接続
下の図は、AWS EventBridge とのインテグレーションによる AHA の拡張オプションについて説明しています。
前提条件
エンドポイントの構成
AHA は複数のエンドポイント(ウェブフック URL、電子メール、または EventBridge)にアラート情報を通知することができます。これらのいずれかを使用するには、サードパーティのWebサイトで行われるものもあるため、事前に設定しておく必要があります。ここでは一般的なものをいくつか見ていきましょう。
- Amazon Chime Webhook URL の作成(Amazon Chime ルーム、ウェブフックの管理機能へのアクセス権限が必要です。)
-
- ベント通知のために新しいチャットルームを作成します(例: aws_events)
- 作成したチャットルームで歯車のアイコンから manage webhooks and bots をクリックします
- Add webhook をクリックします
- ボットの名前(例: AHA)を入力して、Createをクリックします
- Copy URL をクリックし、ウェブフック URL を控えておきます
- Slack Webhook URL の作成(チャンネル作成と Slack アプリ作成の権限が必要です。)
-
- イベント通知のために新しいチャンネルを作成します(例: aws_events)
- ブラウザで ワークスペース名.slack.com/apps にアクセスします
- 検索バーで Incoming Webhooks を検索し、検索結果に表示された Incoming Webhooks をクリックします
- Add to Slack をクリックします
- ドロップダウンからステップ1で作成したチャンネルを選択し、Add Incoming Webhooks integration をクリックします
- 次に表示される画面で webhook の名前 (例: AWS Bot) やアイコンなどをカスタマイズすることもできます
- Webhook URL を控えて、Save Settings をクリックします
- Microsoft Teams Webhook URL の作成(チャンネル作成と Teams アプリ作成の権限が必要です。)
-
- イベント通知のために新しいチャンネルを作成します(例: aws_events)
- アプリの画面を開きます
- 検索バーで Incoming Webhooks を検索し、検索結果に表示された Incoming Webhooks の追加をクリックします
- ステップ1で作成したチャンネルのメニューのコネクタを選択します
- 検索バーで Incoming Webhooks を検索し、検索結果に表示された Incoming Webhooks の構成をクリックします
- 次に表示される画面で webhook の名前 (例: AWS Bot) やアイコンなどをカスタマイズして、作成をクリックします
- Webhook URL を控えて、完了をクリックします
- Email への通知を設定する
-
- アラートを複数のメールアドレス宛に送信することができますが、まず初めに Simple Email Service (SES) のコンソール画面でメールアドレスを認証する必要があります。
- AHA には SES がもともと組み込まれているので、送信元メールアドレスと宛先メールアドレスを設定するだけで済みます。
- メールクライアントが AHAのアラートをスパムと判定しないように、明示的に受信を許可する設定を行う必要がある場合があります。
- EventBridge イベントバスの作成
-
- Amazon EventBridge のコンソール画面(https://console.aws.amazon.com/events/)を開きます
- イベントバスを作成をクリックします
- 名前を入力します
- 作成をクリックします
詳しくは EventBridgeのドキュメントを参照してください。
セットアップ
詳しいセットアップ手順は AHA GitHub でご確認いただけます。
AHA の機能強化
AHA の新しい機能強化を発表できることを嬉しく思います。お試しのうえ、フィードバックをいただけるとありがたいです!
- Terraformでのデプロイに対応しました(シングルリージョン、マルチリージョンともに対応)
- AWS Organizations の使用有無に関わらず、マルチリージョンデプロイをサポートしました
- アカウントをフィルタリングする機能を追加しました(AHA 通知からアカウントを除外する方法の詳細については、CloudFormation テンプレートのパラメータ accountIds の Description を参照してください)
- PHDアラートで特定のアカウントIDのアカウント名を表示できるようになりました
- Non-Org モードで AHA を実行している場合、AHA は アカウントID とリソース影響 (該当する場合) を特定のアラートに送信するようになりました
- Org モードのとき、メンバーアカウント単体で AHA をデプロイできるようになりました
- 新しい AWS Health イベントタイプ ”Investigation” をサポートしました
サポート体制とコントリビューションについて
AWS Health Aware ソリューションは GitHub の AWS Samples リポジトリで利用できます。AHA の質問や機能追加リクエストへの応答はベストエフォートでの対応となることをご了承ください。ただし、エンタープライズサポートに加入されているお客様は、テクニカルアカウントマネージャが質問や機能リクエストを受け付けます。また、GitHub 内でのこのプロジェクトへのコントリビューションを歓迎します。皆さまからのプルリクエストをお待ちしています!
まとめ
本稿では、AWS Health API を使用して、お客様に影響を与える AWS Health イベントに関する最新情報をアラートする方法を学習しました。AWS CloudFormation によりサーバーレスインフラストラクチャをデプロイし、これらのアラートを任意のチャネルに通知しました。これで、個人アカウントや AWS Organizations アカウントの AWS Health イベントをプロアクティブに監視し、対応できるようになりました。AHA を使い始めるにまずは GitHub の AWS Samples リポジトリにアクセスして AWS Health Aware (AHA) をダウンロードしてください。
著者について
翻訳はソリューションアーキテクトの 小森谷 が担当しました。原文はこちらです。