はじめに
本記事は、2022 年に公開されたブログ「クォータを自動で確認して通知。AWS でのクォータモニタを試してみた」の 2024 年アップデート版です。この記事では、クォータと呼ばれる各サービスごとに定められた利用上限を監視するための AWS ソリューションを紹介しました。
その後、このソリューションに大きなアップデートがありました。変更点は大きく分けて 2 つあります。まず、AWS Organizations への対応です。マルチアカウント環境においてそれぞれのアカウントでクォータを監視、収集された情報をモニタリングアカウントに集約できるようになりました。次に Amazon CloudWatch を使用したクォータ監視機能の強化です。これまでは、主に AWS Trusted Advisor を使用してリソース利用量を監視していたため、ビジネスレベル以上の AWS サポートが必須でした。今回のアップデートにより、CloudWatch を使用した監視機能が強化されたため、AWS サポートへの加入が必須ではなくなりました。(とはいえ、環境に応じたサポートプランへの加入を推奨しております)
一方で、アーキテクチャやデプロイ手順も大きく変わっております。そこで、今回の記事ではソリューションが更新されてユーザーが嬉しくなったポイント、そして新しくなったデプロイ手順に焦点を当ててお話しします。
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
ソリューションの概要
アーキテクチャの説明
以下の画像は、マルチアカウント環境に対して本ソリューションをデプロイした際のアーキテクチャ図です。
Monitoring account は クォータ使用率を集約するためのアカウントで、Organization 1 つにつき 1 アカウントです。Member account はクォータ監視対象となるアカウントで、複数存在します。Monitoring account には、Hub Template がデプロイされます。Member account には、Service Quotas spoke template が各リージョン、Trusted Advisor spoke template がバージニア北部リージョンにそれぞれデプロイされ、クォータの監視と Monitoring account への情報転送を行います。
アーキテクチャ図
アーキテクチャの構成要素
アーキテクチャの構成要素は、それぞれ以下のような役割を果たします。
Reporting : 全アカウントのクォータの監視履歴を、Amazon DynamoDB に格納します。
Centralized event collection : Member Account より送られてきたクォータの記録を元に、使用率が 80 % を超えた場合、メールや Slack で通知します。
Deployment management : AWS CloudFormation StackSets を使用し、Member account に対して、各種リソースをデプロイします。対象となるアカウントや 組織単位 (OU) は、AWS Systems Manager Parameter Store において指定します。
Quota list generation : 確認対象とするクォータの一覧を DynamoDB に格納します。
Quota utilization alerting : Lambda 関数はワークフロー 4 で作成された DynamoDB 内を参照し、確認対象となるサービスの使用率を CloudWatch で確認します。この Lambda 関数は各リージョンに作成され、それぞれ 12 時間に 1 度実行されます。
Trusted Advisor alerting : Trusted Advisor を使用してクォータ使用状況のモニタリングを行います。こちらの機能を使用する場合、ビジネスレベル以上のサポートプランが必要です。サポートプランについては AWS Support プラン比較 を参考にしてください。Trusted Advisor を更新するための Lambda 関数は 24 時間に 1 度実行されます。
コスト試算
このソリューションの総コストは、クォータ監視対象としたアカウント数とリージョン数によって大きく異なります。アーキテクチャ図における、各テンプレートごとの月額コストの目安を以下に記載します。
Hub template |
$ 12.25 |
Trusted Advisor spoke template |
$ 0.01 × [アカウント数] |
Service Quotas spoke template |
$ 0.16 × [リージョン数] × [アカウント数] |
例えば、監視対象アカウントが 10、リージョン数が 25 の場合、月額コストの目安は以下になります。
Hub template |
$ 12.25 |
Trusted Advisor spoke template |
$ 0.01 × [アカウント数:10] = $ 0.10 |
Service Quotas spoke template |
$ 0.16 × [リージョン数:25] × [アカウント数:10] = $ 40.0 |
合計 |
$ 52.35 |
上記の通り、本ソリューションのコストを占めるのは、Service Quotas spoke template のデプロイ数です。もし、コスト最適化を実施したい場合は、Service Quotas spoke template によるクォータ監視を普段使用しているリージョンに限定する、Trusted Advisor spoke template による監視のみを利用する (ビジネスレベル以上のサポートプランが必要) といった方法が考えられます。
デプロイ手順
Step 0. 事前準備
AWS CloudFormation を開く
まず、Organizations の管理アカウントで AWS マネジメントコンソールにログインし、サービス一覧から、「AWS CloudFormation」を選択してください。そして、ナビゲーションペインで、「StackSets」を選択します。「委任された管理者」タブで、「委任された管理者を登録」を選択します。

委任された管理者を登録
モニタリングアカウントの「12 桁のアカウント ID」を入力し、「委任された管理者を登録」を選択します。ここで選択されたアカウントが、上記アーキテクチャ図の Monitoring account となります。

登録完了
委任された管理者を設定することができました。
これで事前準備は以上です。それではここからソリューションをデプロイしていきましょう!

Step 1. テンプレートの起動
こちらのリンクをクリックしてください。マネジメントコンソールの AWS CloudFormation の画面に移動します。
右上のアカウントを確認し、モニタリングアカウントにログインしているか確認します。確認できたら「次へ」をクリックします。

Step 2. テンプレートの詳細の入力
テンプレートの詳細を入力していきます。「スタック名」は任意の名前(例:LimitMonitor )を記入してください。
次に「パラメータ」です。パラメータは、デフォルトのままでもデプロイすることはできますが、必要に応じて E メールや Slack の項目を入力してください。入力できたら「次へ」をクリックします。
「スタックオプションの設定」では、なにも変更せずに「次へ」をクリックします。タグ等の設定が必要な場合は適宜変更してください。

Step 3. レビュー
次に、「 レビュー」で設定を確認します。
一番下の「 AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックを入れて、 「 送信」を選択してください。

Step 4. スタック作成の確認
スタックが作成されるまで 5 分程待ちます。なお、途中のパラメータについては、作成後に変更して再デプロイすることも可能になっています。E メールのパラメータを入力した場合、 入力したメールアドレスに確認メールが到着したら、SubscirbeURL リンクをクリックして通知を有効化にしましょう。


Step 5. パラメータの更新
AWS マネジメントコンソールにて、AWS Systems Manager に移動します。ナビゲーションペインで、「パラメータストア」を選択します。
「マイパラメータ」タブで、「/QuotaMonitor/RegionsToDeploy」の横にあるボックスを選択し、「編集」をクリックします。

RegionsToDeploy の編集
「パラメータを編集」にて、クォータを監視したいリージョンを値に入力します。値はスペースを入れずにカンマで区切る必要があります。(例:us-east-1,us-east-2)
デフォルト値は、ALL です。今回はバージニア北部リージョン(us-east-1)に絞って監視してみます。
「変更を保存」を選択します。

OUs を開く
次に、「マイパラメータ」タブの画面に戻って、「/QuotaMonitor/OUs」の横にあるボックスを選択し、「編集」をクリックします。

OUs の編集
「パラメータを編集」で、値を更新します。クォータの監視を行いたい OU の ID を記入します。値はスペースを入れずにカンマで区切る必要があります。(例:ou-a1bc-d2efghij,ou-k1lm-n2opqrst)
「変更を保存」を選択します。

デプロイ
パラメータを更新することで、OU 内のアカウントで自動的にクォータモニターがデプロイされます。指定した OU 内のアカウントにログインし、CloudFormation のスタックの画面に移動してください。
デプロイ手順は以上で終了です。続いて動作確認をします。

動作確認

メール表示の改善
メールから、VPC の作成上限数は 5 で、その上限に達していることが確認できます。
このままでもクォータに関する情報は確認できますが、よりメールを読みやすくするため、画像のように改行を入れる方法を紹介します。

Lambda 関数の修正
Monitoring account の Lambda 関数で「QMSNSPublisherFunctionQMSNSPublisher」という名前が含まれたものを開き、「ダウンロード」から「ファンクションコード .zip をダウンロード」を選択します。

修正前
ファイルをダウンロードしたら解凍して、「index.js」というファイルの 8 行目を以下のように修正します。
const eventText = JSON.stringify(event);
修正後
修正後の表記
const eventText = JSON.stringify(event, null, 2);
コードのアップロード
zip コマンドを使用してファイルを再び圧縮し、先ほどの Lambda 関数の画面からアップロードします。
これで、メールが改行されて配信されるようになりました。おつかれさまでした !

リソースの削除
今回デプロイしたリソースを削除する場合、CloudFormation の StackSet を削除します。詳細な手順については、こちらのドキュメント を参照してください。
注意点として、DynamoDB や AWS Key Management Service のカスタマー管理キーは別途削除する必要があります。
まとめ
今回は AWS ソリューションの「AWS でのクォータモニタ」について改めて紹介しました。本ソリューションを使用することで、管理者は AWS リソースの使用率を追跡し、早期の対応が可能になります。加えて今回のアップデートにより、Organizations に対応し、より一元的なリソース管理を実現できるようになりました。
今回のソリューション紹介が、 AWS 活用の促進につながれば幸いです !
筆者プロフィール

奥村 美生
アマゾン ウェブサービス ジャパン合同会社
ソリューションアーキテクト
2023 年 4 月に入社したソリューションアーキテクトです。趣味は水族館巡りです。水族館の全国制覇を目指しています !

吉澤 巧
アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト
2022 年 4 月に入社したソリューションアーキテクト。気象予報士を持っていることが特技でしたが、今では天気予報アプリにおんぶに抱っこです。好きな AWS サービスは Amazon S3、バケツのようなアイコンが可愛いですよね。
Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages