Amazon Cognito のクォータ - Amazon Cognito

Amazon Cognito のクォータ

Amazon Cognito には、アカウントで実行できる操作の最大数のデフォルトクォータ (以前は制限と呼ばれていました) があります。Amazon Cognito では、Amazon Cognito リソースの最大数と最大サイズのクォータがあります。

操作クォータ

リソースクォータ

操作クォータ

クォータのカテゴリ

Amazon Cognito では、アプリケーション内で特定のユーザーアクションを実行するために使用できる InitiateAuth または RespondToAuthChallenge といった操作の最大数のクォータがあります。これらの操作は、UserAuthentication または UserCreation などの一般的なユースケースのカテゴリに分類されます。分類された操作のリストについては、「Amazon Cognito ユーザープール API オペレーションカテゴリとリクエストレートクォータ」を参照してください。Service Quotas コンソールで、クォータの使用状況とリクエストの増加をカテゴリ別に追跡できます。

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

注記

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

リクエストレートの特別な取り扱いを使用した Amazon Cognito ユーザープール API オペレーション

オペレーションクォータは、カテゴリレベルでのリクエストの合計数で測定され、適用されますが、特別な取扱いルールが適用される 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 に設定されているカテゴリのクォータを 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

client_credentials 付与タイプは、TOKEN エンドポイントにリクエストします。

マシン間リクエストの承認に使用される認証情報を生成するオペレーション 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 の表示」を参照してください。

クォータ要件を特定する

重要

UserAuthenticationUserCreation、または 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 フォームを使用します。Service Quotas コンソールからクォータの引き上げをリクエストするには、Service Quotas ユーザーガイドの「Requesting a quota increase」を参照してください。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 時間
認証セッショントークン 3 分~15 分

Amazon Cognito ユーザープールコードセキュリティリソースクォータ (調整不可)

リソース クォータ
サインアップ確認コードの有効期間 24 時間
ユーザー属性検証コードの有効期間 24 時間
多要素認証 (MFA) コードの有効期間 3~15 分
パスワードを忘れた場合のコードの有効期間 1 時間
1 ユーザーあたりの ConfirmForgotPassword コールの最大数 リスクスコアに応じて 1 時間あたり 5~20 回試行
1 ユーザーあたりの ResendConfirmationCode コールの最大数 1 時間あたり 5 回試行
1 ユーザーあたりの ConfirmSignUp コールの最大数 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 時間 いいえ 該当なし