View a markdown version of this page

ユーザープールのマルチリージョンレプリケーション - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ユーザープールのマルチリージョンレプリケーション

マルチリージョンレプリケーション (MRR) を使用すると、追加の にレプリカユーザープールを作成して AWS リージョン 、認証インフラストラクチャにビジネス継続性とディザスタリカバリ機能を提供できます。MRR を使用すると、登録されたユーザーは、リージョン内のリソースへの接続が失われてもアプリケーションに対して引き続き認証できるため、アプリケーションの可用性を維持できます。

MRR を設定すると、Amazon Cognito は共有ユーザープール ID を使用して個別のユーザープールを作成します。各レプリカユーザープールは、共有ユーザーディレクトリの認証サービスをホストします。プライマリユーザープールは、パスワードのリセットやユーザーサインアップなどの管理設定やユーザーディレクトリの書き込みオペレーションの信頼できるソースとして機能します。セカンダリユーザープールはユーザーを作成できず、プライマリユーザープールからほとんどの設定を継承し、フェイルオーバー状態ではユーザーのサインインやトークン生成などの認証オペレーションを処理できます。

重要

マルチリージョンレプリケーションは、現時点ではすべてのユーザープールで利用できるわけではありません。マルチリージョンレプリケーションには、機能とスケーラビリティが強化された最新の Amazon Cognito インフラストラクチャが必要です。一部のユーザープールはまだ以前のインフラストラクチャにあり、 によって AWS 新しいインフラストラクチャにアップグレードされるため、この機能はロック解除されます。Amazon Cognito コンソールでは、対象のユーザープールにマルチリージョンレプリケーション設定オプションが表示され、対象外のプールに例外メッセージが表示されます。詳細については、 AWS セキュリティブログのAmazon Cognito が次世代インフラストラクチャで高度な機能をロック解除する」を参照してください。

マルチリージョンレプリケーションについて知っておくべきこと

  • マルチリージョンレプリケーションには個別のアドオンコストがあり、ユーザープールが Essentials または Plus 機能プランに含まれている必要があります。Lite 機能プランでは、ユーザープールで MRR を有効にすることはできません。

  • レプリケーションを有効にする AWS KMS 前に、 からマルチリージョンのカスタマーマネージドキーを使用してユーザープールを設定する必要があります。キーは、ユーザープールレプリカ AWS リージョン を持つすべての で使用可能である必要があります。詳細については、「データ暗号化」を参照してください。

  • ユーザープールは、リージョン間で一貫したトークン検証を確保するために、マルチリージョン OIDC 発行者を使用する必要があります。詳細については、「OIDC 発行者としての Amazon Cognito ユーザープール」を参照してください。

  • 新しいセカンダリユーザープールは INACTIVE状態で開始されます。本番稼働用のユーザープールをアクティブ化する前に、リージョン設定を確認して設定します。

  • リージョン設定はレプリカによって異なる場合があります。レプリカでは、以下の設定を個別に設定できます。他のすべての設定はプライマリユーザープールに設定され、セカンダリに自動的に同期されます。

    • E メール設定

    • 脅威保護通知の E メール設定

    • SMS 設定

    • Lambda トリガー

    • タグ

    • ログエクスポート設定

    • AWS WAF ウェブ ACLs

  • リージョン間のデータレプリケーションでは、短時間の遅延が発生する場合があります。プライマリユーザープールは設定とユーザーディレクトリの更新をセカンダリに同期し、このプロセスは結果整合性があります。

マルチリージョンレプリケーションの制限

  • サインアップまたは管理者作成によって、セカンダリユーザープールで新しいユーザーを生成することはできません。新しいフェデレーティッドユーザーは、以前にプライマリユーザープールにサインインしている場合にのみ、フェイルオーバー状態のセカンダリユーザープールにサインインできます。

  • ユーザーは、セカンダリユーザープールでパスワードをリセットしたり、プロファイルを変更したりすることはできません。フェイルオーバー状態では、これらのオペレーションをユーザーインターフェイスで無効にし、ヘルスチェックがプライマリユーザープールへのアクセスを復元した後に使用できるようにします。

  • ユーザーディレクトリごとに、追加のリージョンに最大 1 つのセカンダリレプリカを持つことができます。任意のユーザープールにセカンダリレプリカを含めることができます。

  • TOTP MFA はセカンダリレプリカではサポートされていません。TOTP MFA が設定されたユーザーは、プライマリリージョンのユーザープールがリクエストを処理するときに認証する必要があります。

  • ロックアウトがリージョン間で同期されないまでのパスワードベースの認証試行の数。各レプリカは、失敗した認証試行の独自の数を維持します。

  • マルチリージョンユーザープールの自動フェイルオーバーは、カスタムドメインでのみ設定できます。

マルチリージョンレプリケーションの設定

マルチリージョンレプリケーションを有効にする前に、ユーザープールが、Essentials または Plus 機能プラン、マルチリージョンカスタマーマネージド KMS キー、マルチリージョン OIDC 発行者設定の前提条件を満たしていることを確認してください。

AWS マネジメントコンソール
ユーザープールのマルチリージョンレプリケーションを設定するには
  1. Amazon Cognito コンソールにサインインします。

  2. [User pools] (ユーザープール) を選択します。

  3. リストから既存のユーザープールを選択するか、新しいユーザープールを作成します

  4. [設定] タブを選択します。

  5. 左側のナビゲーションメニューで、マルチリージョンレプリケーションを選択します。

  6. レプリカユーザープールの作成を選択します。

  7. リージョンで、レプリカユーザープール AWS リージョン を作成する を選択します。

  8. 設定の概要を確認し、レプリカの作成を選択します。

  9. レプリカを作成したら、比較テーブルのリージョン設定を確認します。レプリカリージョンの必要に応じて、E メール設定、SMS 設定、Lambda トリガーなどのリージョン固有の設定を構成します。

  10. ドメインの Route 53 ヘルスチェックを設定するには、ドメインサービスメニューに移動し、カスタムドメインを編集または追加し、Route 53 ヘルスチェック ID を設定します。

  11. 本番トラフィックにレプリカを使用する準備ができたら、レプリカのステータスを非アクティブからアクティブに変更します。

API

レプリカユーザープールを作成するには、CreateUserPoolReplica オペレーションを使用します。次の例では、 のプライマリユーザープールの us-west-2リージョンにレプリカを作成しますus-east-1

{ "UserPoolId": "us-east-1_EXAMPLE", "RegionName": "us-west-2", "UserPoolTags": { "Environment": "Production", "Application": "MyApp" } }

レスポンスには、レプリカ情報が含まれます。

{ "Replica": { "RegionName": "us-west-2", "UserPoolArn": "arn:aws:cognito-idp:us-west-2:111122223333:userpool/us-east-1_EXAMPLE", "Status": "PENDING_CREATE", "Role": "SECONDARY" } }

また、フェイルオーバー用にドメインを設定する必要があります。Route 53 でヘルスチェックを設定し、UpdateUserPoolDomain リクエストでドメインに適用します。

{ "CustomDomainConfig": { "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "Domain": "auth.example.com", "ManagedLoginVersion": 2, "Routing": { "Failover": { "SecondaryRegion": "us-west-2", "PrimaryRoute53HealthCheckId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }, "UserPoolId": "ca-central-1_EXAMPLE" }

本番稼働用にレプリカをアクティブ化するには、UpdateUserPoolReplica オペレーションを使用します。

{ "UserPoolId": "us-east-1_EXAMPLE", "RegionName": "us-west-2", "Status": "ACTIVE" }

レスポンスは、更新されたレプリカのステータスを確認します。

{ "Replica": { "RegionName": "us-west-2", "UserPoolArn": "arn:aws:cognito-idp:us-west-2:111122223333:userpool/us-east-1_EXAMPLE", "Status": "ACTIVE", "Role": "SECONDARY" } }

マルチリージョンユーザープールでのフェイルオーバー

2 つの間のフェイルオーバー AWS リージョン は、マネージドログイン、フェデレーティッドログイン、およびユーザープールでの API の直接使用に対して発生する可能性があります。マネージドログインとフェデレーションには、プライマリユーザープールで設定されたカスタムドメインが必要です。レプリカユーザープールで別のカスタムドメインを設定することはできません。

マネージドログイン、フェデレーション、machine-to-machine認可のフェイルオーバー

フェイルオーバーは、プライマリユーザープールにカスタムドメインがある場合に使用できます。両方のユーザープールにプレフィックスドメインがある場合、セカンダリプレフィックスドメインに直接アクセスすることで、セカンダリレプリカのオペレーションを手動でテストできます。カスタムドメインは、プライマリまたは追加のレプリカとリージョンから提供できます。

カスタムドメインは、認可エンドポイントやトークンエンドポイントなどの OAuth 2.0 リソースを提供し、OIDC、SAML、ソーシャルプロバイダーなどのサードパーティーフェデレーションからの IdP レスポンスを処理するエンドポイントであるため、必要です。

フェイルオーバーを設定するには、Route 53 でヘルスチェックを設定します。このヘルスチェックの状態を決定するのはお客様の責任です。ヘルスチェックは、カスタムドメインの DNS CNAME レコードに直接関連付けられません。ただし、カスタムドメインへのトラフィックがプライマリユーザープールとレプリカユーザープールのどちらにルーティングされるかを決定するインジケータです。

カスタムドメインの DNS レコードは、Route 53 または任意のサードパーティー DNS プロバイダーを使用できます。CloudFront ディストリビューションであるターゲットエイリアスを指す有効な CNAME レコードが DNS プロバイダーにあることを確認します。エイリアスターゲットは、Amazon Cognito コンソールのドメインページで確認できます。

ヘルスチェックが異常な状態の場合、Amazon Cognito はセカンダリレプリカユーザープールからカスタムドメインのマネージドログインページと認証オペレーションを提供します。ヘルスチェックが正常な状態になると、Amazon Cognito はトラフィックをプライマリレプリカにルーティングし始めます。

各ユーザープールには、リージョン分離された独自のプレフィックスドメインがあります。これらのエンドポイントを直接呼び出して認証を処理できます。ただし、フェデレーションがサードパーティーの IdPs で設定されている場合、プレフィックスエンドポイントごとに 2 つのアプリケーション設定が必要です。ベストプラクティスとして、カスタムドメインを使用して、Amazon Cognito が Route 53 ヘルスチェックのステータスに基づいてマネージドログインとの間のルーティングを自動的に処理するようにします。

コンソールでヘルスチェック ID を更新するには
  1. Amazon Cognito コンソールでユーザープールに移動します。

  2. メニューから「ブランド」で「ドメイン」を選択します。

  3. カスタムドメインセクションで、編集オプションを選択し、マルチリージョンフェイルオーバーの編集を選択します。

  4. マルチリージョンフェイルオーバーを有効にするオプションを切り替えます。

  5. 使用可能なヘルスチェックから Route 53 ヘルスチェック ID を選択します。

  6. [Save changes] (変更の保存) をクリックします。

Amazon Cognito APIsと SDKsフェイルオーバー

Amazon Cognito APIs または SDKs を使用する場合、カスタムドメインは使用されず、アプリケーションはトラフィックを Amazon Cognito サービスリージョンエンドポイントにルーティングして、認証やその他の API コールを処理します。

単一ページアプリケーション (SPA) やモバイルアプリなどのパブリッククライアントを使用するアプリケーションフロントエンドのみがある場合、それに応じて API コールをルーティングするには、アプリケーションが動的である必要があります。Amazon Cognito によるリージョン認証を開始するには、サーバーレスアプリケーションのバックエンドを検討してください。

バックエンドを持つアプリケーションがある場合、認証するユーザープールを決定するロジックをここで決定できます。

マネージドログインエンドポイントと APIs の両方を使用している場合は、同じ Route 53 ヘルスチェックをアプリケーションのインジケータとして使用して、Amazon Cognito への API コールを実行するリージョンを決定できます。