Amazon Cognito のクォータ - Amazon Cognito

Amazon Cognito のクォータ

Amazon Cognito は、アカウントで実行できる操作の数を制限します。Amazon Cognito では、Amazon Cognito リソースの数とサイズも制限されます。

操作クォータ

リソースクォータ

操作クォータ

クォータのカテゴリ

Amazon Cognito では、アプリケーション内で特定のユーザーアクションを実行するために使用できる InitiateAuth または RespondToAuthChallenge などの操作の数を制限します。これらの操作は、UserAuthentication または UserCreation などの一般的なユースケースのカテゴリに分類されます。分類された操作のリストについては、「カテゴリ操作」を参照してください。これらのカテゴリは、使用状況の監視と、クォータ引き上げのリクエストを容易にします。

操作のクォータは、カテゴリ内のすべての操作について、許可される 1 秒あたりのリクエスト (RPS) の数として定義されます。Amazon Cognito ユーザープールサービスは、各カテゴリのすべての操作にクォータを適用します。例えば、カテゴリ UserCreation には SignUpConfirmSignUpAdminCreateUser、および AdminConfirmSignUp の 4 つのカテゴリが含まれています。これには合計で 30 RPS のクォータが割り当てられています。このカテゴリ内の各操作は、単独で、または同時に複数の操作が実行される場合は合計で、最大 30 個の RPS を呼び出すことができます。

注記

カテゴリクォータは、アカウントとリージョン内のすべてのユーザープール全体で、各 AWS アカウントに実施されます。

操作の特別な取扱い

操作クォータでは、カテゴリレベルでのリクエストの合計数が測定され、施行されますが、特別な取扱いルールが適用される AdminRespondToAuthChallenge および RespondToAuthChallenge 操作は例外になります。

UserAuthentication カテゴリには、AdminInitiateAuthInitiateAuthAdminRespondToAuthChallenge、および 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 のカテゴリクォータセットを超過しており、カテゴリクォータの 80 RPS を30 RPS 上回っていることから、このアプリはスロットルされます。

カテゴリ操作

以下の表では、操作とそれぞれのカテゴリ間のマッピングを確認できます。この表にリストされているすべてのカテゴリには調整可能なクォータがあり、お客様のリクエストに応じて引き上げることができます。詳細については、「API リクエストレートクォータ」を参照してください。調整可能なクォータは、アカウントレベルで適用されます。カテゴリ操作には、ユーザープールレベルで低い制限しきい値が設定されている、より厳しいクォータ規則の対象となるものがあります。この表では、これらのカテゴリにアスタリスクが付いており、それらのクォータは表の下に記載されています。

注記

各カテゴリのレート制限は、月間アクティブユーザー数 (MAU) に応じて異なります。デフォルトの制限は、最大 200 万の MAU をサポートします。MAU が 100 万未満の場合は、制限引き上げリクエストを送信しないことが推奨されます。

カテゴリ操作クォータは、ユーザープール内のすべてのユーザーに適用されます。また、各ユーザーに適用されるユーザーあたりのクォータもあります。ユーザーごとに、サインイン、またはプロファイルやデバイス情報の取得などの「読み取り」操作リクエストを、1 秒あたり最大 10 回実行できます。また、プロファイル情報や MFA 設定の更新などの「書き込み」操作リクエストを、1 秒あたり最大 10 回実行することもできます。ユーザーあたりのクォータは変更できません。

カテゴリ名 操作 説明 デフォルトのクォータ

(1 秒あたりのリクエスト数)

UserAuthentication ユーザーを認証 (サインイン) する操作。

これらの操作は 操作の特別な取扱い の対象となります。

120
UserCreation ネイティブ Amazon Cognito ユーザーを作成または確認する操作。ネイティブユーザーとは、Cognito ユーザープールによって直接作成され、検証されるユーザーです。 50
UserFederation サードパーティ IdP 経由でユーザーを Cognito にフェデレートするための、Amazon Cognito が管理する操作。 サードパーティ ID プロバイダーを使用してユーザーを Cognito ユーザープールにフェデレート (認証) する操作。 25
UserAccountRecovery ユーザーのアカウントを回復する、またはユーザーのパスワードを変更もしくは更新する操作。 30
UserRead ユーザープールからユーザーを取得する操作。 120
UserUpdate ユーザーとユーザー属性を管理するためにお客様が使用する操作。 25
UserResourceRead デバイスやグループなどのユーザーリソース情報を Amazon Cognito から取得する操作。 50
UserResourceUpdate グループなどのユーザーリソース情報を更新する操作。 25
UserList ユーザーのリストを返す操作。 30
UserPoolRead ユーザープールを読み取る操作。 15
UserPoolUpdate ユーザープールを作成、更新、および削除する操作。 15
UserPoolResourceRead ユーザープールからグループなどのリソースを取得する操作。* 20
UserPoolResourceUpdate ユーザープールのグループなどのリソース情報を更新する操作。* 15

UserPoolClientRead

ユーザープールクライアントをリスト化する操作。* 15
UserPoolClientUpdate ユーザープールクライアントを作成、更新、および削除する操作。* 15
UserToken トークンを作成、更新、および削除する操作。 120

*このカテゴリの個々の操作には、単一のユーザプールに対して 5 RPS を超えるレートで操作が呼び出されないようにする制約があります。

クォータの使用状況を追跡する

各 API カテゴリには、アカウントレベルで適用される CallCountThrottleCount 両方の CloudWatch メトリクスがあります。お客様が実行するカテゴリ関連のコールの合計数を追跡するには、CallCount を使用できます。カテゴリ関連のスロットルされたコールの合計数は、ThrottleCount を使用して追跡できます。カテゴリ内のコールの合計数を計上するには、Sum 統計で CallCount および ThottleCount メトリクスを使用できます。CloudWatch の使用状況メトリクスの詳細については、「CloudWatch の使用状況メトリクス」を参照してください。

使用率と使用状況は、サービスクォータのモニタリングを理解するために役立つ 2 つの用語です。使用率は、使用しているサービスクォータの割合です。例えば、クォータの値が 200 リソースで 150 リソースが使用中の場合、使用率は 75% です。使用状況は、サービスクォータに対する使用中のリソースまたは操作の数です。

CloudWatch メトリクスを使用した使用状況の追跡

CloudWatch を使用して、Amazon Cognito ユーザープールの使用率メトリクスを追跡し、収集することができます。CloudWatch ダッシュボードには、使用するすべての AWS のサービスに関するメトリクスが表示されます。CloudWatch を使用してメトリクスアラームを作成できます。アラームは、通知を送信する、または監視している特定のリソースに変更を加えるように設定できます。CloudWatch メトリクス、および Service Quotas の詳細については、「CloudWatch の使用状況メトリクスを追跡する」を参照してください。

Service Quotas メトリクスを使用した使用率の追跡

Amazon Cognito ユーザープールは、サービスクォータの使用状況を表示して管理するために使用できるブラウザベースのインターフェイスである Service Quotas と統合されています。Service Quotas コンソールでは、特定のクォータの値を調べる、モニタリング情報を表示する、クォータの引き上げをリクエストする、および CloudWatch アラームをセットアップすることができます。アカウントがアクティブ状態になってからしばらくすると、リソース使用率のグラフを表示できます。

Service Quotas コンソールでのクォータの表示に関する詳細については、「Service Quotas の表示」を参照してください。

クォータ要件を特定する

クォータ要件を計算するには、特定の期間内にアプリケーションとやり取りするアクティブなユーザーの数を判断します。例えば、アプリケーションが 8 時間の期間内に平均 100 万人のアクティブユーザーによるサインインを期待する場合、1 秒あたり平均 35 人のユーザーを認証できる必要があります。

さらに、平均的なユーザーセッションが 2 時間であると仮定して、トークンが 1 時間後に期限切れになるように設定されている場合、各ユーザーは、このセッション中にトークンを 1 回更新する必要があります。そうすると、この負荷をサポートするために UserAuthentication カテゴリに必要な平均クォータは 70 RPS になります。

8 時間の期間内でのユーザサインイン頻度の変動を考慮して、ピーク対平均比を 3:1 と仮定する場合、望ましい UserAuthentication クォータは 200 RPS にする必要があります。

注記

ユーザーアクションごとに複数の操作を呼び出す場合は、カテゴリレベルで個々の操作のコールレートの合計数を計算する必要があります。

クォータを最適化する

ピークコールレートの処理には、以下のアプローチのいずれかに従ってください。

バックオフ待機期間後に再試行する

API コールごとにエラーをキャッチし、バックオフ期間後に再試行することができます。バックオフアルゴリズムは、ビジネスのニーズと負荷に応じて調整できます。Amazon SDK には、組み込みの再試行ロジックがあります。Amazon のツールと SDK に関する詳細については、「AWSAWS での構築ツール」を参照してください。

頻繁に更新される属性に外部データベースを使用する

アプリケーションが、カスタム属性の読み取りと書き込みにユーザープールへの複数のコールを必要とする場合は、外部ストレージを使用します。優先データベースを使用してカスタム属性を保存する、またはキャッシュレイヤーを使用してサインイン時にユーザープロファイルをロードすることができます。このプロファイルは、ユーザープールからユーザープロファイルを再ロードする代わりに、必要に応じてキャッシュから参照することができます。

クライアント側で JWT トークンを検証する

アプリケーションは、JWT トークンを信頼する前にそれらを検証する必要があります。トークンの署名と有効期間は、API コールをユーザープールに送信することなく、クライアント側で検証できます。トークンが検証されたら、トークン内のクレームを信頼して、さらに多くの getUserAPI コールを実行せずにクレームを使用することができます。JSON トークンの検証に関する詳細については、「JSON Web トークンの検証」を参照してください。

API リクエストレートクォータ

Amazon Cognito は、アカウントで実行できるユーザープールオペレーションの数を制限します。Amazon Cognito では、調整可能な API リクエストレートクォータの引き上げをリクエストできます。クォータの引き上げをリクエストするには、Service Quotas コンソール、サービス制限の緩和フォーム、RequestServiceQuotaIncrease API、または ListAWSDefaultServiceQuotas API を使用できます。

  • Service Quotas コンソールを使用してクォータの引き上げをリクエストするには、Service Quotas ユーザーガイドの「Requesting a API quota increase」を参照してください。

  • Service Quotas でクォータがまだ利用できない場合は、サービス制限の緩和フォームを使用してください。

注記

クォータは、調整可能なもののみを引き上げることができます。

リソースクォータ

リソースクォータは、リソースの数とサイズを制限するクォータです。Amazon Cognito では、調整可能なリソースクォータの引き上げをリクエストできます。クォータの引き上げをリクエストするには、Service Quotas コンソール、またはサービス制限の緩和フォームを使用できます。Service Quotas コンソールからクォータの引き上げをリクエストするには、Service Quotas ユーザーガイドの「Requesting a quota increase」を参照してください。Service Quotas でクォータがまだ利用できない場合は、サービス制限の緩和フォームを使用してください。

調整可能なリソースクォータ

以下の表には、Amazon Cognito の調整可能なリソースクォータが記載されています。これらのクォータは変更可能です。

ユーザープールのリソースクォータ

リソース クォータ
ユーザープールあたりのアプリクライアントの最大数 1,000
アカウントあたりのユーザープールの最大数 1,000
ユーザープールあたりのユーザーインポートジョブの最大数 1,000
ユーザープールあたりの ID プロバイダーの最大数 300
ユーザープールあたりのリソースサーバーの最大数 25
ユーザープールあたりのユーザーの最大数 40,000,000

ID プール (フェデレーティッドユーザー) のリソースクォータ

リソース クォータ
アカウントあたりの ID プールの最大数 1,000
ID プールあたりの Amazon Cognito ユーザープールプロバイダーの最大数 50

Sync のリソースクォータ

リソース クォータ
ID あたりのデータセットの最大数 20
データセットあたりのレコードの最大数 1,024
1 つのデータセットの最大サイズ 1 MB

調整不可能なリソースクォータ

以下の表には、Amazon Cognito の調整不可能なクォータが記載されています。これらのクォータは変更できません。

ユーザープールのトークン有効期間クォータ

トークン クォータ
ID トークン 5 分~1 日
更新トークン 1 時間~3,650 日
アクセストークン 5 分~1 日

ユーザープールのリソースクォータ

リソース クォータ
ユーザープールごとのカスタム属性の最大数 50
属性あたりの最大文字数 2,048 バイト
カスタム属性名の最大文字長 20
パスワードの最小および最大文字数 6~99
1 日に送信される 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 メール設定」を参照してください。

ユーザープールのコード有効期間のリソースクォータ

リソース クォータ
サインアップ確認コード 24 時間
ユーザー属性検証コードの有効性 24 時間
MFA 認証コード 3 分
パスワードを忘れた場合のコード 1 時間

ホストされた UI のクォータ

ワークフロー名 クォータ
クライアント認証情報 1 秒あたり 150 リクエスト

ID プール (フェデレーティッドユーザー) リソースクォータ

リソース クォータ
ID プール名の最大文字長 128 バイト
ログインプロバイダー名の最大文字長 2,048 バイト
ID プールあたりの ID の最大数 無制限
ロールマッピングを指定できる ID プロバイダーの最大数 10
単一のリストまたは lookup コールからの結果の最大数 60
ロールベースのアクセスコントロール (RBAC) ルールの最大数 25

Sync のリソースクォータ

リソース クォータ
データセット名の最大文字数 128 バイト
正常なリクエスト後の一括発行の最小待機時間 24 時間