REL 1: サービスクォータと制約はどのように管理しますか?
クラウドベースのワークロードアーキテクチャには、サービスクォータ (サービスの制限とも呼ばれます) というものがあります。このようなクォータは、誤って必要以上のリソースをプロビジョニングするのを防ぎ、サービスを不正使用から保護することを目的として API 操作のリクエスト頻度を制限するために存在します。リソースにも制約があります。たとえば、光ファイバーケーブルのビットレートや、物理ディスクの記憶容量などです。
リソース
AWS Live re:Inforce 2019 - Service Quotas
What Is Service Quotas?
AWS Service Quotas (formerly referred to as service limits)
Amazon EC2 Service Limits
AWS Trusted Advisor Best Practice Checks (see the Service Limits section)
AWS
limit monitor on AWS answers
AWS Marketplace: CMDB products that help track limits
APN Partner: partners that can help with configuration management
ベストプラクティス:
-
サービスクォータと制約を認識する: あなたは、ワークロードアーキテクチャに対するデフォルトのクォータとクォータ引き上げリクエストを認識しています。さらに、ディスクやネットワークなど、どのリソースの制約が潜在的に大きな影響を与えるかを知っています。
-
アカウントおよびリージョンをまたいでサービスクォータを管理する: 複数の AWS アカウントまたは AWS リージョンをご利用の場合は、必ず本番ワークロードを実行するすべての環境で必要十分なクォータをリクエストしてください。
-
アーキテクチャを通じて、固定サービスクォータと制約に対応する: サービスクォータと物理リソースには変更できないものもあることに注意し、これらが信頼性に影響を及ぼさないように設計します。
-
クォータをモニタリングおよび管理する: 予想される使用量を評価し、クォータを必要に応じて引き上げて、使用量を予定通り増やせるようにします。
-
クォータ管理を自動化する: しきい値に近づいたときに警告するツールを実装します。AWS Service Quotas API を使用すると、クォータの引き上げリクエストを自動的に行うことができます。
-
フェイルオーバーに対応するために、現在のクォータと最大使用量の間に十分なギャップがあることを確認する: リソースでエラーが発生したときには、リソースが正常に停止されるまで、クォータにカウントされます。エラーが生じたリソースが停止されるまで、エラーが生じたすべてのリソースと代替リソースの合計リソース数がクォータ内に収まるようにします。このギャップを計算する際、アベイラビリティーゾーンの不具合を考慮する必要があります。
改善計画
サービスクォータと制約を認識する
What is Service Quotas?
- サービスの要件、レイテンシー、および災害対策 (DR) 要件に基づいて、関連するアカウントとリージョンを選択する
- 公開されたドキュメントの AWS のサービスクォータと Service Quotas を確認する
AWS Service Quotas (formerly referred to as limits)- デプロイコードを調べて、ワークロードに必要なすべてのサービスを決定する
- AWS Config を使用して、AWS アカウントで使用されているすべての AWS リソースを検索する
AWS Config Supported AWS Resource Types and Resource Relationships - また、AWS CloudFormation を使用して、使用されている AWS リソースを把握することもできます。AWS コンソールで、または list-stack-resources
CLI コマンドを使用して、作成されたリソースを確認します。テンプレート自体にデプロイされるように設定されたリソースも確認できます。
Viewing AWS CloudFormation Stack Data and Resources on the AWS Management Console
AWS CLI for CloudFormation: list-stack-resources - 適用されるサービスクォータを決定します。Trusted Advisor と Service Quotas を使用してプログラムでアクセスできる情報を使用します。
アカウントおよびリージョンをまたいでサービスクォータを管理する
What is Service Quotas?
- サービスの要件、レイテンシー、および災害対策 (DR) 要件に基づいて、関連するアカウントとリージョンを選択する
- 公開されたドキュメントの AWS のサービスクォータと Service Quotas を確認する
AWS Service Quotas (formerly referred to as limits)- デプロイコードを調べて、ワークロードに必要なすべてのサービスを決定する
- AWS Config を使用して、AWS アカウントで使用されているすべての AWS リソースを検索する
AWS Config Supported AWS Resource Types and Resource Relationships - また、AWS CloudFormation を使用して、使用されている AWS リソースを把握することもできます。AWS コンソールで、または list-stack-resources
CLI コマンドを使用して、作成されたリソースを確認します。テンプレート自体にデプロイされるように設定されたリソースも確認できます。
Viewing AWS CloudFormation Stack Data and Resources on the AWS Management Console
AWS CLI for CloudFormation: list-stack-resources - 適用されるサービスクォータを決定します。Trusted Advisor と Service Quotas を使用してプログラムでアクセスできる情報を使用します。
アーキテクチャを通じて、固定サービスクォータと制約に対応する
AWS Service Quotas
クォータをモニタリングおよび管理する
- 現在のリソース消費 (バケットやインスタンスなど) を取得し、確認する: 現在のリソース消費状況を収集するには、Amazon EC2 DescribeInstances API などのサービス API オペレーションを使用します。
- 現在のクォータをキャプチャする: AWS Service Quotas、AWS Trusted Advisor、AWS ドキュメントを使用する
- 100 を超える AWS のサービスのクォータを一元的に管理するのに役立つ AWS のサービスである AWS Service Quotas を使用する
- Trusted Advisor のサービスの制限を使用して、現在のサービスの制限を判断する
- サポートされている場合は、サービス API オペレーションを使用して現在のサービスクォータを決定する
- リクエスト済みのクォータの緩和と、そのステータスを記録しておく: クォータの引き上げが承認されたら、クォータの変更を反映するようにレコードを更新します。
クォータ管理を自動化する
- Service Quotas を使用し、AWS Limit Monitor や AWS Marketplace からのサービスなど、自動クォータモニタリングソリューションでサービスを強化する
What is Service Quotas?
AWS limit monitor - Amazon SNS および AWS Service Quotas API を使用して、クォータしきい値に基づいてトリガーされたレスポンスをセットアップする
- 制限のしきい値を設定する
- AWS Config、デプロイパイプライン、Amazon EventBridge、またはサードパーティーからの変更イベントと統合する
- 通知に対して適切なアクションをとるトリガーを設定し、必要に応じて AWS サポートに問い合わせる
- 自動化をテストする
- 応答をテストするために人為的に低いクォータのしきい値を設定する
- 変更イベントを手動でトリガーする
- ゲームデーを実行して、クォータ引き上げの変更プロセスをテストする
フェイルオーバーに対応するために、現在のクォータと最大使用量の間に十分なギャップがあることを確認する
- デプロイのパターン、可用性の要件、消費の増加を考慮して、サービスクォータを決定する
- 信頼性の要件 (「9 の数」としても知られる) を決定する
- 障害シナリオ (コンポーネント、アベイラビリティーゾーン、リージョンの損失など) を確立する
- デプロイ手法 (例えば、Canary、ブルー/グリーン、レッド/ブラック、またはローリング) を確立する
- 現在の制限に適切なバッファ (例えば、15%) を含めます
- 消費の増加を計画する (例えば、消費の傾向をモニタリングする)
- 必要に応じてクォータの引き上げをリクエストする: クォータの増加リクエストの実行に必要な時間を計画する