メインコンテンツに移動
AWS ソリューション紹介

クォータを自動で確認して通知 ~ AWS でのクォータモニタのアップデートを確認してみた

2024-04-02 | Author : 奥村 美生, 吉澤 巧

はじめに

本記事は、2022 年に公開されたブログ「クォータを自動で確認して通知。AWS でのクォータモニタを試してみた」の 2024 年アップデート版です。この記事では、クォータと呼ばれる各サービスごとに定められた利用上限を監視するための AWS ソリューションを紹介しました。

その後、このソリューションに大きなアップデートがありました。変更点は大きく分けて 2 つあります。まず、AWS Organizations への対応です。マルチアカウント環境においてそれぞれのアカウントでクォータを監視、収集された情報をモニタリングアカウントに集約できるようになりました。次に Amazon CloudWatch を使用したクォータ監視機能の強化です。これまでは、主に AWS Trusted Advisor を使用してリソース利用量を監視していたため、ビジネスレベル以上の AWS サポートが必須でした。今回のアップデートにより、CloudWatch を使用した監視機能が強化されたため、AWS サポートへの加入が必須ではなくなりました。(とはいえ、環境に応じたサポートプランへの加入を推奨しております)

一方で、アーキテクチャやデプロイ手順も大きく変わっております。そこで、今回の記事ではソリューションが更新されてユーザーが嬉しくなったポイント、そして新しくなったデプロイ手順に焦点を当ててお話しします。


X ポスト » | Facebook シェア » | はてブ »

ご注意

本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

*ハンズオン記事およびソースコードにおける免責事項 »

builders.flash メールメンバー登録

builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。

今すぐ登録 »

ソリューションの概要

AWS ソリューションとは

AWS ソリューションでは、お客様の課題を解決するためのアーキテクチャを提供しております。アーキテクチャ図や導入コスト試算に加え AWS CloudFormation のテンプレートも用意されており、お客様は迅速に課題を解決するためのソリューションを使用することができます。

AWS でのクォータモニタ

AWS ソリューションの 1 つとして提供される「AWS でのクォータモニタ」を使用することで、お客様は AWS リソースの使用率を追跡することが可能になります。

そもそも、クォータとは各サービスごとに定められた利用上限で、お客様の誤った操作を防ぐ役割を果たします。例えば、AWS Lambda はデフォルトで各リージョンあたり最大同時実行数が 1,000 といった制限が設定されています。これにより、 AWS リソースの過剰なプロビジョニングを防げる一方で、本来必要であるリソースの作成を妨げてしまうこともありえます。

本ソリューションを使用することにより、クォータに対するサービス使用率の追跡が可能になり、必要に応じて E メールや Slack を通した通知を実現できます。これにより、クォータの上限に達する前に引き上げリクエストを申請することや、不要なリソースの削除が可能になります。

加えて、このソリューションはシングルアカウント環境のみならず、Organizations を使用したマルチアカウント環境に対しても適用可能です。収集したサービス使用率の情報はモニタリング用のアカウントに集約可能で、通知や永続化の仕組みを一元的に管理することができます。

アーキテクチャの説明

以下の画像は、マルチアカウント環境に対して本ソリューションをデプロイした際のアーキテクチャ図です。

Monitoring account は クォータ使用率を集約するためのアカウントで、Organization 1 つにつき 1 アカウントです。Member account はクォータ監視対象となるアカウントで、複数存在します。Monitoring account には、Hub Template がデプロイされます。Member account には、Service Quotas spoke template が各リージョン、Trusted Advisor spoke template がバージニア北部リージョンにそれぞれデプロイされ、クォータの監視と Monitoring account への情報転送を行います。

アーキテクチャ図

アーキテクチャの構成要素

アーキテクチャの構成要素は、それぞれ以下のような役割を果たします。

  1. Reporting : 全アカウントのクォータの監視履歴を、Amazon DynamoDB に格納します。

  2. Centralized event collection : Member Account より送られてきたクォータの記録を元に、使用率が 80 % を超えた場合、メールや Slack で通知します。

  3. Deployment management : AWS CloudFormation StackSets を使用し、Member account に対して、各種リソースをデプロイします。対象となるアカウントや 組織単位 (OU) は、AWS Systems Manager Parameter Store において指定します。

  4. Quota list generation : 確認対象とするクォータの一覧を DynamoDB に格納します。

  5. Quota utilization alerting : Lambda 関数はワークフロー 4 で作成された DynamoDB 内を参照し、確認対象となるサービスの使用率を CloudWatch で確認します。この Lambda 関数は各リージョンに作成され、それぞれ 12 時間に 1 度実行されます。

  6. 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 による監視のみを利用する (ビジネスレベル以上のサポートプランが必要) といった方法が考えられます。

デプロイ手順

今回は Organizations 配下のアカウントに対して、クォータモニタをデプロイする手順を示します。Organizations のセットアップについては、「 チュートリアル: 組織の作成と設定」を参考にしてください。また、本ソリューションを単一のアカウントにデプロイしたい場合は、「 こちらのドキュメント」を参照してください。

Step 0. 事前準備

クォータモニタを実現するためのリソースを各アカウントにデプロイするには、AWS CloudFormation StackSetsを使用します。この機能を使用するため、CloudFormation の委任された管理者を登録する必要があります。

AWS CloudFormation を開く

まず、Organizations の管理アカウントで AWS マネジメントコンソールにログインし、サービス一覧から、「AWS CloudFormation」を選択してください。そして、ナビゲーションペインで、「StackSets」を選択します。「委任された管理者」タブで、「委任された管理者を登録」を選択します。

Screenshot of the AWS CloudFormation StackSets interface in Japanese, highlighting the button to register a delegated administrator. The navigation and button text are in Japanese.

委任された管理者を登録

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

AWS Management Consoleの委任された管理者の登録画面。管理者アカウントIDを入力し、委任された管理者を登録できる日本語UIの設定例が表示されています。

登録完了

委任された管理者を設定することができました。

これで事前準備は以上です。それではここからソリューションをデプロイしていきましょう!

AWSの委任された管理者設定画面を示す日本語のスクリーンショット。『アカウントID』と『アカウント名』として 'monitoring-account' が表示されている。

Step 1. テンプレートの起動

こちらのリンクをクリックしてください。マネジメントコンソールの AWS CloudFormation の画面に移動します。

右上のアカウントを確認し、モニタリングアカウントにログインしているか確認します。確認できたら「次へ」をクリックします。

Screenshot of the AWS CloudFormation console in Japanese for stack creation, showing template selection and Amazon S3 URL input options.

Step 2. テンプレートの詳細の入力

テンプレートの詳細を入力していきます。「スタック名」は任意の名前(例:LimitMonitor )を記入してください。

次に「パラメータ」です。パラメータは、デフォルトのままでもデプロイすることはできますが、必要に応じて E メールや Slack の項目を入力してください。入力できたら「次へ」をクリックします。

スタックオプションの設定」では、なにも変更せずに「次へ」をクリックします。タグ等の設定が必要な場合は適宜変更してください。

Screenshot of a web interface showing notification configuration options, including fields for entering an email address for notifications and a dropdown to select Slack notification preferences.

Step 3. レビュー

次に、「 レビュー」で設定を確認します。

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

Screenshot of the AWS CloudFormation interface in Japanese, showing a confirmation dialog for IAM role creation capabilities. The dialog highlights the requirement to acknowledge IAM resource creation by AWS CloudFormation before proceeding.

Step 4. スタック作成の確認

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

Screenshot of the AWS CloudFormation console in Japanese showing the status of a stack named 'LimitMonitor' with the status 'CREATE_COMPLETE' and a description indicating it is a quota-monitoring hub template. The user interface displays menu options and stack details.

Screenshot of an AWS Simple Notification Service confirmation message indicating a successful subscription, displaying a subscription ID and unsubscribe link.

Step 5. パラメータの更新

AWS マネジメントコンソールにて、AWS Systems Manager に移動します。ナビゲーションペインで、「パラメータストア」を選択します。

マイパラメータ」タブで、「/QuotaMonitor/RegionsToDeploy」の横にあるボックスを選択し、「編集」をクリックします。

Screenshot of the AWS Systems Manager parameter store page in Japanese, showing the parameter list for quota monitoring, including an entry for /QuotaMonitor/RegionsToDeploy. The UI highlights editing and selection options.

RegionsToDeploy の編集

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

変更を保存」を選択します。

Screenshot of an AWS parameter editing screen in Japanese, showing the configuration for 'QuotaMonitor/RegionsToDeploy'. The screen includes details for setting a list of AWS regions to deploy spoke resources (such as 'us-east-1'), with options for standard and advanced parameter tiers, and a field for entering values. The 'Save changes' button is highlighted.

OUs を開く

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

Screenshot of the AWS Management Console (in Japanese) showing a list of parameters in Quota Monitor, including NotificationConfiguration, OUs, and RegionsToDeploy. The parameter '/QuotaMonitor/OUs' is selected, and options for editing, deleting, and creating parameters are visible.

OUs の編集

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

変更を保存」を選択します。

Screenshot of the AWS Management Console (in Japanese) showing the 'Edit Parameter' screen for quota monitoring, including parameter name, description, usage tier, type, and value input fields. The save changes button and some fields are highlighted.

デプロイ

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

デプロイ手順は以上で終了です。続いて動作確認をします。

Screenshot of the AWS CloudFormation console in Japanese, showing a list of stacks including quota monitoring updates. Displays stack names, statuses as 'CREATE_COMPLETE,' creation timestamps, and related descriptions for quota monitoring and management.

動作確認

バージニア北部リージョンに VPC をクォータ上限まで作成してみました。しばらくすると以下のような通知が届きます。
Screenshot showing an AWS notification message for a VPC quota error from AWS Trusted Advisor, highlighting information such as service limits, current usage, status error, and key message details in a JSON payload.

メール表示の改善

メールから、VPC の作成上限数は 5 で、その上限に達していることが確認できます。

このままでもクォータに関する情報は確認できますが、よりメールを読みやすくするため、画像のように改行を入れる方法を紹介します。

Screenshot of an AWS notification message for a Trusted Advisor check item refresh, highlighting a VPC usage error with Japanese annotations pointing out account ID, service, region, current usage, limit, and error status details.

Lambda 関数の修正

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

Screenshot of the AWS Lambda Quota Monitor user interface in Japanese, displaying a diagram with EventBridge (CloudWatch Events) triggering a Lambda function. The UI includes export, download, and function details sections, with Japanese text throughout.

修正前

ファイルをダウンロードしたら解凍して、「index.js」というファイルの 8 行目を以下のように修正します。

javascript
const eventText = JSON.stringify(event);

修正後

修正後の表記

javascript
const eventText = JSON.stringify(event, null, 2);

コードのアップロード

zip コマンドを使用してファイルを再び圧縮し、先ほどの Lambda 関数の画面からアップロードします。 

これで、メールが改行されて配信されるようになりました。おつかれさまでした !

Screenshot of the AWS Lambda console in Japanese, highlighting the 'Code Source' upload option with the selection menu for uploading a .zip file as the code package source.

リソースの削除

今回デプロイしたリソースを削除する場合、CloudFormation の StackSet を削除します。詳細な手順については、こちらのドキュメント を参照してください。

注意点として、DynamoDB や AWS Key Management Service のカスタマー管理キーは別途削除する必要があります。

まとめ

今回は AWS ソリューションの「AWS でのクォータモニタ」について改めて紹介しました。本ソリューションを使用することで、管理者は AWS リソースの使用率を追跡し、早期の対応が可能になります。加えて今回のアップデートにより、Organizations に対応し、より一元的なリソース管理を実現できるようになりました。

今回のソリューション紹介が、 AWS 活用の促進につながれば幸いです !

筆者プロフィール

A portrait of a woman with straight brown hair, wearing a black top and grey dress, seated casually indoors with a soft, colorful background.

奥村 美生

アマゾン ウェブサービス ジャパン合同会社
ソリューションアーキテクト

2023 年 4 月に入社したソリューションアーキテクトです。趣味は水族館巡りです。水族館の全国制覇を目指しています !

A person wearing glasses and an event badge is smiling while participating in an event. The background features a large indoor venue with spotlights and structural elements visible.

吉澤 巧

アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

2022 年 4 月に入社したソリューションアーキテクト。気象予報士を持っていることが特技でしたが、今では天気予報アプリにおんぶに抱っこです。好きな AWS サービスは Amazon S3、バケツのようなアイコンが可愛いですよね。