Amazon Cognito のクォータ
Amazon Cognito には、アカウントで実行できる操作の最大数のデフォルトクォータ (以前は制限と呼ばれていました) があります。Amazon Cognito では、Amazon Cognito リソースの最大数と最大サイズのクォータがあります。
操作クォータ
クォータのカテゴリ
Amazon Cognito では、アプリケーション内で特定のユーザーアクションを実行するために使用できる InitiateAuth
または RespondToAuthChallenge
といった操作の最大数のクォータがあります。これらの操作は、UserAuthentication
または UserCreation
などの一般的なユースケースのカテゴリに分類されます。分類された操作のリストについては、「Amazon Cognito ユーザープール API オペレーションカテゴリとリクエストレートクォータ」を参照してください。Service Quotas コンソール
操作のクォータは、カテゴリ内のすべての操作について、1 秒あたりのリクエスト (RPS) の最大数として定義されます。Amazon Cognito ユーザープールサービスは、各カテゴリのすべての操作にクォータを適用します。例えば、カテゴリ UserCreation
には SignUp
、ConfirmSignUp
、AdminCreateUser
、および AdminConfirmSignUp
の 4 つのオペレーションが含まれます。これには合計で 50 RPS のクォータが割り当てられています。同時に複数のオペレーションが実行される場合は、オペレーションごとに最大 50 の RPS を別々に、または合わせて呼び出すことができます。
カテゴリクォータは、アカウントとリージョン内のすべてのユーザープール全体で、各 AWS アカウント に適用されます。
リクエストレートの特別な取り扱いを使用した Amazon Cognito ユーザープール API オペレーション
オペレーションクォータは、カテゴリレベルでのリクエストの合計数で測定され、適用されますが、特別な取扱いルールが適用される AdminRespondToAuthChallenge
および RespondToAuthChallenge
オペレーションに対しては例外になります。
UserAuthentication
カテゴリには、AdminInitiateAuth
、InitiateAuth
、AdminRespondToAuthChallenge
、および RespondToAuthChallenge
の 4 つのオペレーションが含まれます。InitiateAuth
および AdminInitiateAuth
オペレーションは、カテゴリクォータごとに測定され、施行されます。マッチングオペレーション RespondToAuthChallenge
および AdminRespondToAuthChallenge
は、別のクォータの対象であり、UserAuthentication
カテゴリの制限の 3 倍です。クォータが拡大されているので、デベロッパーのアプリケーションで設定される複数の認証チャレンジに対応できます。このクォータは、ほとんどのユースケースに十分対応できます。認証コールあたり 3 倍のしきい値を超えると、超過レートが UserAuthentication
カテゴリクォータに計上されます。
例えば、UserAuthentication
カテゴリのクォータが 80 RPS である場合、RespondToAuthChallenge
または AdminRespondToAuthChallenge
を最大 240 RPS (80 RPS x 3) を呼び出すことができます。認証コールごとに 4 回のチャレンジがアプリケーションに設定されており、1 秒あたり 70 件のサインインがある場合、RespondToAuthChallenge
は合計で 280 RPS (70 x 4) になります。これは、クォータを 40 RPS 上回っています。40 RPS が 70回 の InitiateAuth
コールに追加されたことで、UserAuthentication
カテゴリの総使用量 は 110 RPS (40 + 70) になります。この値は、80 RPS に設定されているカテゴリのクォータを 30 RPS 超過しているため、このアプリケーションはスロットリングされます。
月次のアクティブユーザー
月間アクティブユーザー数 (MAU) は、Amazon Cognito ユーザープールの請求の計算に使用されるベンチマークです。MAU は、ユーザープールがクォータ引き上げの対象であるかどうかを判断するためにも使用されます。暦月内に、サインアップ、サインイン、トークンの更新、パスワード変更、ユーザーアカウント属性の更新など、ユーザーに関連した ID オペレーションがある場合、そのユーザーは MAU としてカウントされます。Amazon Cognito は、ユーザーまたはその属性を非アクティブ化または削除するアクションを実行した月に、ユーザーをアクティブとしてカウントします。
Amazon Cognito ユーザープール API オペレーションカテゴリとリクエストレートクォータ
以下の表に、オペレーションとそれぞれのカテゴリ間のマッピングを示します。調整可能なカテゴリのクォータについてのみ、引き上げをリクエストできます。詳細については、「クォータ引き上げのリクエスト」を参照してください。調整可能なクォータは、アカウントレベルで適用されます。ある種のカテゴリオペレーション1 は、ユーザープールレベルで 5 RPS に制限されていますが、デフォルトのクォータは、アカウント内のすべてのユーザープールに適用されます。
各カテゴリのクォータは、月間アクティブユーザー数 (MAU) で測定されます。デフォルトのクォータでは、MAU が 200 万未満のアカウントを対象としています。MAU が 100 万未満の場合は、クォータの引き上げをリクエストしないでください。
カテゴリオペレーションクォータは、ユーザープール内のすべてのユーザーに適用されます。ユーザーあたりのクォータも適用されます。アプリケーションは、read オペレーションを各ユーザーについて毎秒最大 10 件リクエストできます。これには、サインインや、プロファイルやデバイス情報の取得が含まれます。アプリケーションは、write オペレーションも各ユーザーについて毎秒最大 10 件リクエストを行えます。これには、プロファイル情報や多要素認証 (MFA) 設定が含まれます。ユーザーあたりのクォータは変更できません。
カテゴリ | 説明 | デフォルトクォータ (RPS)2 | 調整可能 | クォータ引き上げの対象かどうかの確認3 |
---|---|---|---|---|
UserAuthentication |
ユーザーを認証 (サインイン) するオペレーション。 これらのオペレーションは リクエストレートの特別な取り扱いを使用した Amazon Cognito ユーザープール API オペレーション の対象となります。 |
120 | はい | 100 万 MAU を追加するごとに 40 RPS |
UserCreation |
Amazon Cognito ネイティブユーザーを作成または確認するオペレーション。これは、Amazon Cognito ユーザープールによって直接作成され、検証されるユーザーです。 | 50 | はい | 100 万 MAU を追加するごとに 10 RPS |
UserFederation サードパーティー IdP 経由でユーザーを Amazon Cognito にフェデレートするための、Amazon Cognito が管理するオペレーション。 |
サードパーティー ID プロバイダーを使用してユーザーを Amazon Cognito ユーザープールにフェデレート (認証) するオペレーション。 | 25 | はい | 100 万 MAU を追加するごとに 10 RPS |
UserAccountRecovery |
ユーザーのアカウントを回復する、またはユーザーのパスワードを変更もしくは更新するオペレーション。 | 30 | なし | 該当なし |
UserRead |
ユーザープールからユーザーを取得する操作。 | 120 | はい | 100 万 MAU を追加するごとに 40 RPS |
UserUpdate |
ユーザーとユーザー属性を管理するために使用するオペレーション。 | 25 | なし | 該当なし |
UserToken |
トークン管理のオペレーション | 120 | はい | 100 万 MAU を追加するごとに 40 RPS |
UserResourceRead |
記憶されているデバイスやグループメンバーシップなどのユーザーリソース情報を Amazon Cognito から取得するオペレーション。 | 50 | はい | 100 万 MAU を追加するごとに 20 RPS |
UserResourceUpdate |
記憶されているデバイスやグループメンバーシップなど、ユーザーのリソース情報を更新するオペレーション。 | 25 | なし | 該当なし |
UserList |
ユーザーのリストを返す操作。 | 30 | なし | 該当なし |
UserPoolRead |
ユーザープールを読み取る操作。 | 15 | なし | 該当なし |
UserPoolUpdate |
ユーザープールを作成、更新、または削除するオペレーション。 | 15 | なし | 該当なし |
UserPoolResourceRead |
ユーザープールからグループやリソースサーバーなどのリソースに関する情報を取得するオペレーション。1 | 20 | なし | 該当なし |
UserPoolResourceUpdate |
グループやリソースサーバーなどのユーザープール内のリソースを変更するオペレーション。1 | 15 | なし | 該当なし |
UserPoolClientRead |
ユーザープールクライアントに関する情報を取得するオペレーション。1 | 15 | なし | 該当なし |
UserPoolClientUpdate |
ユーザープールクライアントを作成、更新、および削除するオペレーション。1 | 15 | なし | 該当なし |
ClientAuthentication
|
マシン間リクエストの承認に使用される認証情報を生成するオペレーション | 150 | なし | 該当なし |
1 このカテゴリの個々のオペレーションには、単一のユーザープールに対して 5 RPS を超えるレートでオペレーションが呼び出されないようにする制約があります。
2 200 万 MAU 未満のすべてのユーザープールのリクエストレート。
3 リクエストレートの引き上げは、100 万から 1000 万 MAU の間である場合に考慮されます。クォータの引き上げリクエストは、現在の使用率、現状または予想される MAU、および最適化のベストプラクティスの実装状況に基づいて評価されます。Amazon Cognito には、誤用を防止し、すべてのお客様がサービスを利用できるようにするために、クォータの引き上げリクエストを拒否する権利があります。1000 万を超える MAU がある場合は、AWS ソリューションアーキテクトと協力して、Amazon Cognito クォータに最適化された方法でソリューションを設計することをお勧めします。サポートが必要な場合は、AWS アカウントチームにお問い合わせください。
クォータの使用状況を追跡する
Amazon Cognito では、アカウントレベルでの各 API オペレーションカテゴリの Amazon CloudWatch の CallCount
および ThrottleCount
メトリクスが生成されます。お客様が実行するカテゴリ関連のコールの合計数を追跡するには、CallCount
を使用できます。カテゴリ関連のスロットルされたコールの合計数は、ThrottleCount
を使用して追跡できます。カテゴリ内のコールの合計数を計上するには、Sum
統計で CallCount
および ThottleCount
メトリクスを使用できます。詳細については、「Amazon CloudWatch メトリクスを使用する」を参照してください。
サービスクォータをモニタリングする場合、使用率 は使用中のサービスクォータの割合です。例えば、クォータの値が 200 リソースで 150 リソースが使用中の場合、使用率は 75% です。使用状況 は、サービスクォータに対する使用中のリソースまたはオペレーションの数です。
CloudWatch メトリクスを使用した使用状況の追跡
CloudWatch を使用して、Amazon Cognito ユーザープールの使用率メトリクスを追跡し、収集することができます。CloudWatch ダッシュボードには、使用するすべての AWS のサービス に関するメトリクスが表示されます。CloudWatch を使用すると、メトリクスアラームを作成して通知を受けたり、モニタリングしている特定のリソースを変更したりできます。CloudWatch メトリクスの詳細については、「CloudWatch と Service Quotas でのクォータと使用状況の追跡」を参照してください。
Service Quotas メトリクスを使用した使用率の追跡
Amazon Cognito ユーザープールは、サービスクォータの使用状況を表示して管理するために使用できるブラウザベースのインターフェイスである Service Quotas と統合されています。Service Quotas コンソールでは、特定のクォータの値を調べること、モニタリング情報を表示すること、クォータの引き上げをリクエストすること、および CloudWatch アラームをセットアップすることができます。アカウントがアクティブ状態になってからしばらくすると、リソース使用率のグラフを表示できます。
Service Quotas コンソールでのクォータの表示に関する詳細については、「Service Quotas の表示」を参照してください。
クォータ要件を特定する
UserAuthentication
、UserCreation
、または AccountRecovery
のようなカテゴリに対して Amazon Cognito クォータを引き上げると他のサービスのクォータを引き上げる必要がある場合があります。例えば、Amazon Cognito が Amazon Simple Notification Service (Amazon SNS) または Amazon Simple Email Service (Amazon SES) で送信するメッセージは、これらのサービスでリクエストレートのクォータが不十分な場合に失敗することがあります。
クォータ要件を計算するには、特定の期間内にアプリケーションとやり取りするアクティブなユーザーの数を判断します。例えば、アプリケーションに 8 時間の期間内に平均 100 万人のアクティブユーザーによるサインインがあることを想定する場合、1 秒あたり平均 35 人のユーザーを認証できる必要があります。
さらに、平均的なユーザーセッションが 2 時間であると仮定し、トークンが 1 時間後に期限切れになるように設定している場合、各ユーザーは、セッション中にトークンを 1 回更新する必要があります。この負荷をサポートするために UserAuthentication
カテゴリに必要な平均クォータは 70 RPS になります。
8 時間の期間内でのユーザーのサインイン頻度の変動を考慮して、ピーク対平均の比を 3:1 と仮定する場合、望ましい UserAuthentication
クォータは 200 RPS にする必要があります。
ユーザーアクションごとに複数のオペレーションを呼び出す場合は、カテゴリレベルで個々のオペレーションのコールレートを合計する必要があります。
クォータを最適化する
ピークコールレートを処理するには、次のいずれかの方法に従います。
- バックオフ待機期間後に再試行する
-
API コールごとにエラーをキャッチし、バックオフ期間後に再試行することができます。バックオフアルゴリズムは、ビジネスのニーズと負荷に応じて調整できます。Amazon SDK には、組み込みの再試行ロジックがあります。詳細については、「AWS での構築ツール
」を参照してください。 - 頻繁に更新される属性に外部データベースを使用する
-
アプリケーションが、カスタム属性の読み取りと書き込みにユーザープールへの複数のコールを必要とする場合は、外部ストレージを使用します。優先データベースを使用してカスタム属性を保存する、またはキャッシュレイヤーを使用してサインイン時にユーザープロファイルをロードすることができます。このプロファイルは、ユーザープールからユーザープロファイルを再ロードしないでも、必要に応じてキャッシュから参照することができます。
- クライアント側で JWT トークンを検証する
-
アプリケーションは、JWT トークンを信頼する前にそれらを検証する必要があります。トークンの署名と有効期間は、API コールをユーザープールに送信することなく、クライアント側で検証できます。トークンが検証されたら、トークン内のクレームを信頼して、さらに多くの
getUser
API コールを実行せずにクレームを使用することができます。詳細については、「JSON Web トークンの検証」を参照してください。 - 待合室でウェブアプリケーションへのトラフィックを調整する
-
試験の受験やライブイベントへの参加など、時間が限られているイベント中に多数のユーザーがサインインするトラフィックが予想される場合は、セルフスロットリングメカニズムを使用してリクエストトラフィックを最適化できます。例えば、セッションが利用可能になるまでユーザーが待機できる待合室を設定して、使用可能な容量がある間にリクエストを処理できます。待合室のリファレンスアーキテクチャについては、「AWS Virtual Waiting Room
」を参照してください。
クォータ引き上げのリクエスト
Amazon Cognito には、アカウントで実行できるユーザープール操作の最大数のクォータがあります。Amazon Cognito では、調整可能な API リクエストレートクォータの引き上げをリクエストできます。クォータの引き上げをリクエストするには、Service Quotas コンソール、Service limit increase フォーム、RequestServiceQuotaIncrease
API、または ListAWSDefaultServiceQuotas
API を使用できます。
-
Service Quotas コンソールを使用してクォータの引き上げをリクエストするには、Service Quotas ユーザーガイドの「Requesting a API quota increase」を参照してください。
-
Service Quotas でクォータが利用できない場合は、Service limit increase フォーム
を使用してください。
クォータは、調整可能なもののみを引き上げることができます。クォータの引き上げリクエストは、現在の使用率、現状または予想される MAU、および最適化のベストプラクティスの実装状況に基づいて評価されます。クォータの引き上げリクエストを提出するときは、現在の使用状況、予測使用量、最適化方法に関する情報をできる限り多く提供してください。リクエストレートのクォータを引き上げるには、現在の平均リクエストレートが現在のクォータの最大レートにすでに近づいている必要があります。調整可能なクォータの詳細については、「Amazon Cognito ユーザープール API オペレーションカテゴリとリクエストレートクォータ」を参照してください。
アプリケーションが 500 万 MAU に増加するシナリオの例を考えてみましょう。UserAuthentication カテゴリのオペレーションにおける現在の平均使用率は高く、現在のクォータである 120 に対して 60%、つまり 72 リクエスト/秒です。最初の 200 万 MAU を上回る 300 万 MAU に対して 100 万 MAU ごとに 1 秒あたり 40 リクエストの UserAuthentication クォータの引き上げをリクエストできます。これにより、上限は 1 秒あたり最大 240 リクエストになります。
Amazon Cognito ID プール (フェデレーティッドアイデンティティ) API オペレーションリクエストレートのクォータ
Operation | 説明 | 1 秒あたりのリクエスト数のクォータ | 調整可能 | クォータ引き上げの対象かどうかの確認 |
---|---|---|---|---|
GetId |
ID プールからアイデンティティ ID を取得します。 | 25 | はい | アカウントチームにお問い合わせください。 |
GetOpenIdToken |
クラシックワークフローの ID プールから OpenID トークンを取得します。 | 200 | はい | アカウントチームにお問い合わせください。 |
GetCredentialsForIdentity |
拡張ワークフローの ID プールから AWS 認証情報を取得します。 | 200 | はい | アカウントチームにお問い合わせください。 |
GetOpenIdTokenForDeveloperIdentity |
デベロッパーワークフローの ID プールから OpenID トークンを取得します。 | 200 | はい | アカウントチームにお問い合わせください。 |
リソースクォータ
リソースクォータは、リソースの最大数と最大サイズを定義します。Amazon Cognito では、調整可能なリソースクォータの引き上げをリクエストできます。クォータの引き上げをリクエストするには、Service Quotas コンソール、または Service limit increase フォーム
Amazon Cognito ユーザープールのリソースクォータ
リソース | クォータ | 調整可能 | 最大限度 |
---|---|---|---|
ユーザープールあたりのアプリケーションクライアント | 1,000 | はい | 10,000 |
アカウントあたりのユーザープール | 1,000 | はい | 10,000 |
ユーザープールあたりのアイデンティティプロバイダー | 300 | はい | 1,000 |
ユーザープールあたりのリソースサーバー | 25 | はい | 300 |
ユーザープールあたりのユーザー数 | 40,000,000 | はい | アカウントチームにお問い合わせください。 |
ユーザープールあたりのカスタム属性数 | 50 | なし | 該当なし |
属性あたりの文字数 | 2,048 バイト | なし | 該当なし |
カスタム属性名の文字数 | 20 | なし | 該当なし |
パスワードポリシーに最低限必要なパスワード文字数 | 6~99 | なし | 該当なし |
AWS アカウント ごとに毎日送信される E メールメッセージ¹ | 50 | なし | 該当なし |
E メール件名の文字数 | 140 | なし | 該当なし |
E メールメッセージの文字数 | 20,000 | なし | 該当なし |
SMS 検証メッセージの文字数 | 140 | なし | 該当なし |
パスワードの文字数 | 256 | なし | 該当なし |
ID プロバイダー名の文字数 | 40 | なし | 該当なし |
ID プロバイダーあたり識別子数 | 50 | なし | 該当なし |
ユーザーにリンクされた ID 数 | 5 | なし | 該当なし |
アプリケーションクライアントあたりのコールバック URL 数 | 100 | なし | 該当なし |
アプリケーションクライアントあたりのログアウト URL 数 | 100 | なし | 該当なし |
リソースサーバーあたりのスコープ | 100 | なし | 該当なし |
アプリケーションクライアントあたりのスコープ数 | 50 | なし | 該当なし |
アカウントあたりのカスタムドメイン数 | 4 | なし | 該当なし |
各ユーザーが所属できるグループ数 | 100 | なし | 該当なし |
ユーザープールあたりのグループ | 10,000 | なし | 該当なし |
¹このクォータは、Amazon Cognito ユーザープールにデフォルトの E メール機能を使用している場合にのみ適用されます。より高い E メールの配信ボリュームを有効にするには、Amazon SES の E メール設定を使用するようにユーザープールを設定します。詳細については、「Amazon Cognito ユーザープールの E メール設定」を参照してください。
Amazon Cognito ユーザープールセッションの有効性パラメータ
トークン | クォータ |
---|---|
ID トークン | 5 分~1 日 |
更新トークン | 1 時間~3,650 日 |
アクセストークン | 5 分~1 日 |
ホストされた UI セッション cookie | 1 時間 |
Amazon Cognito ユーザープールコードセキュリティリソースクォータ (調整不可)
リソース | クォータ |
---|---|
サインアップ確認コードの有効期間 | 24 時間 |
ユーザー属性検証コードの有効期間 | 24 時間 |
多要素認証 (MFA) コードの有効期間 | 3 分 |
パスワードを忘れた場合のコードの有効期間 | 1 時間 |
1 ユーザーあたりの ConfirmForgotPassword コールの最大数 |
リスクスコアに応じて 1 時間あたり 5~20 回試行 |
1 ユーザーあたりの ResendConfirmationCode コールの最大数 |
1 時間あたり 5 回試行 |
1 ユーザーあたりの ConfirmUser コールの最大数 |
1 時間あたり 15 回試行 |
1 ユーザーあたりの ChangePassword コールの最大数 |
1 時間あたり 5 回試行 |
1 ユーザーあたりの GetUserAttributeVerificationCode コールの最大数 |
1 時間あたり 5 回試行 |
1 ユーザーあたりの VerifyUserAttribute コールの最大数 |
1 時間あたり 15 回試行 |
Amazon Cognito ユーザープールユーザーインポートジョブリソースクォータ (調整不可)
リソース | クォータ |
---|---|
ユーザープールあたりのユーザーインポートジョブの有効期間 | 1,000 |
ユーザーインポート CSV 行あたりの最大文字数 | 16,000 |
最大 CSV ファイルサイズ | 100 MB |
CSV ファイルあたりのユーザーの最大数 | 500,000 |
Amazon Cognito ID プール (フェデレーティッドアイデンティティ) リソースのクォータ
リソース | クォータ | 調整可能 | 最大限度 |
---|---|---|---|
アカウントあたりのアイデンティティプール | 1,000 | なし | 該当なし |
ID プールあたりの Amazon Cognito ユーザープールプロバイダー数 | 50 | はい | 1000 |
ID プール名の文字長 | 128 バイト | なし | 該当なし |
ログインプロバイダー名の文字長 | 2,048 バイト | なし | 該当なし |
ID プールあたりのアイデンティティ数 | 無制限 | なし | 該当なし |
ロールマッピングを指定できる ID プロバイダー数 | 10 | なし | 該当なし |
単一のリストまたは lookup コールからの結果の数 | 60 | なし | 該当なし |
ロールベースのアクセス制御 (RBAC) ルール | 25 | なし | 該当なし |
Amazon Cognito Sync リソースクォータ
リソース | クォータ | 調整可能 | 最大限度 |
---|---|---|---|
アイデンティティあたりのデータセット | 20 | はい | アカウントチームにお問い合わせください。 |
データセットあたりのレコード | 1,024 | はい | アカウントチームにお問い合わせください。 |
1 つのデータセットのサイズ | 1 MB | はい | アカウントチームにお問い合わせください。 |
データセット名の文字数 | 128 バイト | なし | 該当なし |
正常なリクエスト後の一括発行の待機時間 | 24 時間 | なし | 該当なし |