Service Quotasの自動管理設定の通知設定を管理アカウントで集約してみる

Service Quotasの自動管理設定の通知設定を管理アカウントで集約してみる

2025.10.26

先日、Service Quotasに以下の機能が追加されました。

https://dev.classmethod.jp/articles/automatic-quota-management-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

https://docs.aws.amazon.com/ja_jp/health/latest/ug/enable-organizational-view.html

User Notificationsの作成

今回はSlackチャンネルへ通知を行います。

すでに、通知先チャンネルのAmazon Q Developer in chat applications
がセットアップ済みであるとします。

セットアップ方法の詳細は以下を参照ください。

https://docs.aws.amazon.com/ja_jp/chatbot/latest/adminguide/slack-setup.html#

事前にSlackワークスペースとAWS Chatbotを連携し、通知用チャンネルを準備しておいてください。

チャンネルARNは以下コマンドの出力のChatConfigurationArnから確認できます。

aws chatbot describe-slack-channel-configurations --region us-east-2

余談ですが、Amazon Q Developer in chat applicationsは一部リージョンのみAPIに対応しているため、上記コマンドでは明示的にリージョン指定をしています。

https://docs.aws.amazon.com/chatbot/latest/APIReference/Welcome.html

取得した、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個)

ElastiCache___us-east-1.png

クォータの詳細_-_User_Groups_per_Region___AWS_Service_Quotas_と___team-aws-presales(チャンネル)_-_Classmethod_-_Slack.png

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

対応しているクォータはView supported quotasから確認できます。

自動管理を有効にする___AWS_Service_Quotas.png

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

アカウントの状態___AWS_Health_Dashboard___Global_と___team-aws-presales(チャンネル)_-_Classmethod_-_Slack.png

管理アカウントのAWS Health Dashboardを確認します。

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

組織の状態設定___AWS_Health_Dashboard___Global.png

2種類の通知がきました。

「クォータ・AWSアカウント個別の通知」と「クォータ・AWSアカウントをまとめた通知」です。

クォータ個別の通知は5時間後くらいに来ました。

general__Channel__-_test_-_Slack.png

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

general__Channel__-_test_-_Slack.png

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

general__Channel__-_test_-_Slack.png

おわりに

AWS Health Dashboardを統合することで、メンバーアカウントの通知設定を管理アカウントで集約できました。

現時点ではメンバーアカウントでアカウント個別の有効化が必要ですが、今後Organizations統合やCloudFormation対応が実装されれば、さらに運用効率が向上する可能性があります。

この記事をシェアする

FacebookHatena blogX

関連記事