AWS の Personal Health Dashboard に届く AWS からのメンテナンス通知を、 Organizations の管理アカウントで各アカウント分一括管理して、 Slack に通知する。

記事タイトルとURLをコピーする

こんにちは。
技術課の山本です。

山を歩いていて、遠くから視線を感じると思っていたら、オコジョに見られていました。モテ期も近いようです。

AWS の Personal Health Dashboard には、 AWS からメンテナンス通知や障害通知などが来ます。
AWS の ユーザーはそれらの通知に基づいて、AWS アカウント内にあるメンテナンス対象のリソースを操作したり、障害から保護します。
Organizations 機能を使い、複数のAWSアカウントを一括管理しているときには、Organizations の管理アカウントから、各AWSアカウントの Personal Health Dashboard を一括参照できます。(※1)
また、AWS Health Awareという仕組みを使うと、各AWSアカウントの Personal Health Dashboard に来た通知を Slack 等のチャットツールにも連携できます。

Organizations の管理アカウントから、各AWSアカウントの Personal Health Dashboard を一括参照しつつ、Slack に通知するように設定してみたので、記事として残します。
ただし、まだ設定してから通知が来ないので、通知が来たら結果を載せます。→来ました。@2022/9/1

※1Organizations の管理アカウントから委任を受けた AWSアカウントでも、各AWSアカウントの Personal Health Dashboard を一括参照できます。

AWS Health Dashboard の組織ビューを有効にする

まず、Organizations の管理アカウントから、各AWSアカウントの Personal Health Dashboard を一括参照できるようにします。
以下、手順です。

AWS Health Dashboard のサービス画面から 組織ビューを有効にする。

「成功」と出る。

組織内の Health イベントが見えるようになる。有効化した後のイベントしか見えないため注意。

Slack の設定

AWS Health Awareという仕組みを使い、各AWSアカウントの Personal Health Dashboard に来た通知を Slack に通知します。
まずは Slack の設定です。
Webhook で実装する場合と Workflow で実装する場合があります。私は Workflowで実装しました。
以下、手順です。

1. Webhook で実装する場合

以下のURLにアクセスし、「Incoming Webhook」を検索。

  • <Slackのワークスペース名>.slack.com/apps

「Slackに追加」。

「Webhook URL」をメモし、「名前をカスタマイズ」に任意の名前を入力し、「設定を保存」。

2. Workflow で実装する場合

Slack で ワークフロービルダーを起動。

新しいワークフローを作成。

名前を付ける。

Webhook を選択。

以下の変数を全てテキスト型で入れ、「次へ」。

  • text
  • accounts
  • resources
  • service
  • region
  • status
  • start_time
  • event_arn
  • updates

「ステップを追加」。

「メッセージを送信」を選択。

「メッセージの送信先」と「メッセージのテキスト」を以下のように設定。メッセージのテキストには変数が入るように設定。「保存」ボタンを押す。

右上の「公開する」ボタンを押す。

URLを控える。

AWS Health Aware の展開

AWS Health Aware を展開していきます。
マルチリージョンにAWS Health Awareを展開し、冗長構成にする場合は、「StackSets 実行用 IAMロールの作成」も実施ください。
本記事ではシングル構成で作成しています。
以下、手順です。

StackSets 実行用 IAMロールの作成 ※マルチリージョンにAWS Health Awareを展開し、冗長構成にする場合のみ

Cloud Formation のサービス画面から 新しいスタックを作成し、以下のURLを指定。※StackSets用の IAMロール (AWSCloudFormationStackSetAdministrationRole) が既にある場合は不要。

Cloud Formation のサービス画面から 新しいスタックを作成し、以下のURLを指定。※StackSets用の IAMロール (AWSCloudFormationStackSetExecutionRole) が既にある場合は不要。

Organizations の管理アカウントのAWSアカウント番号をパラメータに指定。

AWS Health Aware の展開

AWS Health Aware のGithub リポジトリを自分のPCにクローン。

git clone https://github.com/aws-samples/aws-health-aware.git

handler.pyとmessagegenerator.py を圧縮して、aha-v2.1.zip とします。2.1はバージョン番号。

同じAWSアカウント内に 任意の S3 バケットを作成し、aha-v2.1.zip を アップロード。

CloudFormation スタックを新しく作成。「新しいリソースを使用」を選択。

AWS Health Aware の Github リポジトリからクローンした CFN_DEPLOY_AHA.yml をアップロード。

以下のようにパラメータを入力。S3バケットは上で作成したもの。zipはS3にアップロードしたaha-v2.1.zip。issueのみ通知も可能。

Slack の Webhook または WorkFlow の URL を記載。以下の例ではWorkFlowのURL。

パラメータ確認画面。マルチリージョンに冗長化して展開する場合は「SecondaryRegion」をYesにする。本記事では割愛。

これで、2〜4分待つとデプロイされる。

結果

以下のように Direct Connect のメンテナンス通知が来ました。Organizationsで管理している子アカウントに関する通知でした。

そのほか

Slack 以外のツールへの連携方法につきましては、aws-health-awareのリポジトリにある、「Configuring an Endpoint」を参考にしてください。
Microsoft Teams や Amazon Chime 、Eメールの連携があります。

山本 哲也 (記事一覧)

カスタマーサクセス部のエンジニア。2024 Japan AWS Top Engineers に選んでもらいました。

今年の目標は Advanced Networking – Specialty と Machine Learning - Specialty を取得することです。

山を走るのが趣味です。今年の目標は 100 km と 100 mile を完走することです。 100 km は Gran Trail みなかみで完走しました。OSJ koumi 100 で 100 mile 砕け散りました。どこかで 100 mile やりたいです。

基本的にのんびりした性格です。座右の銘は「いつか着く」