
AWS Health Aware (Ver.2.2.1)のCloudFormation版を組織に導入してみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS Health Aware (以降 AHA)はAWS Healthの通知フレームワークです。
組織(AWS Organizations)やAWSアカウント単体の AWS Health イベントの通知を管理します。 テンプレートを展開するだけで、 Slackチャンネルや Eメール、EventBridge など 各種エンドポイントへの 通知設定を簡単に構築できます。
このAHAを以前にブログで紹介しました。
あれからバージョンも上がったので、再度展開してみます。 最近の Healthのアップデート もあり、特に委任周りで手順が簡素化されています。 そのため、今回は既存AHAを削除して再インストールします。
新しいバージョン(Ver.2.2 以降)の要素も紹介します。
要旨
- AHAの新しいバージョンについて
Version 2.2.1
: Python 3.8 から Python 3.11 に更新Version 2.2
: EventBridge イベントバスへ送られるスキーマを改善
- AHAの展開方法 in Organizations環境
- ✅ 管理アカウント上の作業
- Health Organizational View の有効化
- AWS Health の委任設定
- ✅ 委任先メンバーアカウント上の作業
- 通知先エンドポイント(Slack WebhookやEventBridgeなど)の作成
- AHAパッケージのS3格納
- AHAテンプレートの展開
- ✅ 管理アカウント上の作業
AHAの展開 その1(管理アカウント)
まずは 管理アカウント上 で行う作業を記載します。 すでに実施されている場合は省略できます。
Health Organizational View の有効化
Health Organizational View を有効化します。 AWS Health ページの [組織の状態] → [設定] から有効化できます。
AWS Health の委任設定
以下コマンドを実行して、メンバーアカウントに AWS Healthを委任します。
# (注意) ACCOUNT_ID 部分を委任したいメンバーアカウントのIDに置き換えます
aws organizations register-delegated-administrator \
--account-id ACCOUNT_ID \
--service-principal health.amazonaws.com
AHAの展開 その2(委任先メンバーアカウント)
次に 委任先メンバーアカウント上 で行う作業を記載します。
通知先のエンドポイントの作成
この設定は 委任先メンバーアカウント上 で行います。
最低一つ、通知先のエンドポイントを作成します。 サポートしているエンドポイントは以下のとおりです。
- Amazon Chime
- Slack
- Microsoft Teams
- EventBridge
今回は EventBridge を使います。 カスタムイベントバス aha-eventbus
を作成しました。
そして、 aha-eventbus
上に EventBridgeルール catch-all-aha-events
を作成しています。 ルールのターゲットに CloudWatchロググループを設定して、 内容を確認できるようにします。
AHAテンプレート展開の準備
リポジトリのクローン
AHAリポジトリを一旦ローカルへ落とします。
$ git clone https://github.com/aws-samples/aws-health-aware.git
Cloning into 'aws-health-aware'...
remote: Enumerating objects: 257, done.
remote: Counting objects: 100% (96/96), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 257 (delta 79), reused 57 (delta 57), pack-reused 161
Receiving objects: 100% (257/257), 1.46 MiB | 15.13 MiB/s, done.
Resolving deltas: 100% (137/137), done.
$ ls
aws-health-aware
パッケージのファイルを圧縮
パッケージのルートにある handler.py
と messagegenerator.py
を zip圧縮します。 名前を aha-v2.2.1.zip
としました。
zipファイルのS3格納
aha-v2.2.1.zip
を委任先メンバーアカウント上の適当なS3バケットへ格納します。
AHAテンプレート展開
パッケージにある CFN_DEPLOY_AHA.yml
を CloudFormationスタックとして展開します。
スタック名を適当 (AHA-Deployment 等) に入力します。 以下記載のパラメータで、展開しました。
⬇ Customize Alerts/Notifications ~ Package Information
パラメータ | 値 | 参考: デフォルト |
---|---|---|
AWS Organizations Enabled? | Yes | No |
The types of events to get alerted on | (デフォルト値) | issue|accountNotification|scheduledChange |
Name of S3 Bucket | ( aha-v2.2.1.zip ファイルがあるS3バケット) | |
Name of .zip file in S3 Bucket | aha-v2.2.1.zip |
⬇ Communication Channels - Slack/Microsoft Teams/Amazon Chime And/or EventBridge
パラメータ | 値 | 参考: デフォルト |
---|---|---|
Slack Webhook URL | (デフォルト値) | None |
Microsoft Teams Webhook URL | (デフォルト値) | None |
Amazon Chime Webhook URL | (デフォルト値) | None |
EventBusName | aha-eventbus | None |
Email From | (デフォルト値) | none@domain.com |
Email To | (デフォルト値) | none@domain.com |
Subject of Email | (デフォルト値) | AWS Health Alert |
⬇ More Configurations - Optional
パラメータ | 値 | 参考: デフォルト |
---|---|---|
EventSearchBack | (デフォルト値) | 1 |
Which regions to search for events in | ap-northeast-1,global | all regions |
ARN of the AWS Organizations Management Account assume role (if using) | (デフォルト値) | None |
Deploy in secondary region? | (デフォルト値) | No |
Exclude any account numbers? | (デフォルト値) | None |
参考: 展開前の変更セット
イベントを確認する
[2023/10/10] 現時点で通知を貰っていないので、貰い次第サンプルとして記載します。
新しい AWS Health Aware の EventBridgeスキーマについて
Ver.2.2 以降のAHAのEventBridgeスキーマは以下のようになっています。
{
"version": "0",
"id": "7bf73129-1428-4cd3-a780-95db273d1602",
"detail-type": "AHA Event",
"source": "aha",
"account": "123456789012",
"time": "2022-07-14T03:56:10Z",
"region": "region of the eventbus",
"resources": [
"i-1234567890abcdef0"
],
"detail": {
"eventArn": "arn:aws:health:region::event/id",
"service": "service",
"eventTypeCode": "typecode",
"eventTypeCategory": "category",
"region": "region of the Health event",
"startTime": "2022-07-02 12:33:26.951000+00:00",
"endTime": "2022-07-02 12:33:26.951000+00:00",
"lastUpdatedTime": "2022-07-02 12:36:18.576000+00:00",
"statusCode": "status",
"eventScopeCode": "scopecode",
"eventDescription": {
"latestDescription": "description"
},
"affectedEntities": [{
"entityValue": "i-1234567890abcdef0",
"awsAccountId": "account number",
"awsAccountName": "account name"
}]
}
}
– Readme for new AHA Event schema より引用
以前のスキーマと比べてフィルタルールを作成しやすいように改善されていますね。 (参考: 過去バージョンのイベントサンプル)
おわりに
以上、新しい AWS Health Aware を組織に導入してみました。
新しい EventBridgeスキーマを活用したい場合や、 内部のPythonバージョンを更新する必要がある場合に参考になれば幸いです。