Service Quotasの自動管理設定の通知設定を管理アカウントで集約してみる
先日、Service Quotasに以下の機能が追加されました。
マルチアカウント環境の場合、1アカウントで通知設定を集約できたら便利そうと思い検証してみました。
やってみた
(管理アカウント)AWS Healthイベントを集約
自動管理設定を有効化するとクォータ使用率が 80% に達したとき、95% に達したときに AWS Health Dashboardに通知が送信されます。
AWS Healthの組織ビューを有効にすることで、メンバーアカウントのAWS Health Dashboardの通知を管理アカウントで確認できるようになります。
そのため、AWS Health Dashboardで組織ビューを有効にします。
管理アカウントのCloudShell等で以下のコマンドを実行します。
aws health enable-health-service-access-for-organization --region us-east-1
User Notificationsの作成
今回はSlackチャンネルへ通知を行います。
すでに、通知先チャンネルのAmazon Q Developer in chat applications
がセットアップ済みであるとします。
セットアップ方法の詳細は以下を参照ください。
事前にSlackワークスペースとAWS Chatbotを連携し、通知用チャンネルを準備しておいてください。
チャンネルARNは以下コマンドの出力のChatConfigurationArnから確認できます。
aws chatbot describe-slack-channel-configurations --region us-east-2
余談ですが、Amazon Q Developer in chat applicationsは一部リージョンのみAPIに対応しているため、上記コマンドでは明示的にリージョン指定をしています。
取得した、SlackチャンネルARNを変数に保存します。
SLACK_CHANNEL_ARN="<SlackチャンネルARN>"
通知設定を作成し、ARNを変数に保存します。
NOTIFICATION_CONFIG_ARN=$(aws notifications create-notification-configuration \
--name "Health-Service-Quotas-test" \
--description "Health notifications created for Service Quotas" \
--aggregation-duration SHORT \
--query 'arn' --output text)
イベントルールを作成します。
aws notifications create-event-rule \
--notification-configuration-arn "$NOTIFICATION_CONFIG_ARN" \
--source "aws.health" \
--event-type "AWS Health Event" \
--event-pattern '{"source":["aws.health"],"detail-type":["AWS HealthEvent"],"detail":{"service":["SERVICEQUOTAS"],"eventTypeCode":["AWS_SERVICEQUOTAS_THRESHOLD_BREACH","AWS_SERVICE_QUOTAS_INCREASE_REQUEST_FAILED","AWS_SERVICEQUOTAS_APPROACHING_THRESHOLD"],"eventTypeCategory":["accountNotification"]}}' \
--regions us-east-1
作成したチャンネルと通知設定を関連付けます。
aws notifications associate-channel \
--notification-configuration-arn "$NOTIFICATION_CONFIG_ARN" \
--arn "$SLACK_CHANNEL_ARN"
(管理アカウント)自動管理設定を有効化・通知の設定
aws service-quotas start-auto-management \
--opt-in-level ACCOUNT \
--opt-in-type NotifyOnly \
--region ca-central-1 \
--notification-arn "$NOTIFICATION_CONFIG_ARN"
(メンバーアカウント)自動管理設定を有効化
メンバーアカウントのCloudShell等で以下のコマンドを実行します。
管理アカウント内のUser Notification経由でメールやSlack等へ通知を送るため、メンバーアカウントでは有効化だけでUser Notificationの設定は不要です。
aws service-quotas start-auto-management \
--opt-in-level ACCOUNT \
--opt-in-type NotifyOnly \
--region us-east-1
(メンバーアカウント・管理アカウント)動作確認: Slack通知のテスト
メンバーアカウントでクォータ上限に達したときに通知が届くかテストします。
今回はElastiCacheのユーザーグループをクォータ上限の90%にあたる180個作成しました。(ElastiCacheのユーザーグループのデフォルトのクォータは200個)


EIPやVPCなどのクォータも対象にしたかったのですが、現時点では自動管理設定の対応範囲に含まれていません。
対応しているクォータはView supported quotasから確認できます。

AWS Health Dashboardを確認すると、サービスクォータ通知を確認できました。

管理アカウントのAWS Health Dashboardを確認します。
組織の状態からその他の通知を確認すると、メンバーアカウントのサービスクォータ通知を確認できました。

2種類の通知がきました。
「クォータ・AWSアカウント個別の通知」と「クォータ・AWSアカウントをまとめた通知」です。
クォータ個別の通知は5時間後くらいに来ました。

放置していると、スレッドに1日に2回程度通知が行われました。

複数クォータをまとめた通知は24時間後くらいに来ました。こちらも1日に2回程度の頻度で通知されます。

おわりに
AWS Health Dashboardを統合することで、メンバーアカウントの通知設定を管理アカウントで集約できました。
現時点ではメンバーアカウントでアカウント個別の有効化が必要ですが、今後Organizations統合やCloudFormation対応が実装されれば、さらに運用効率が向上する可能性があります。






