

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

# ユーザープールのマルチリージョンレプリケーション
<a name="user-pool-multi-region"></a>

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

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

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

## マルチリージョンレプリケーションについて知っておくべきこと
<a name="user-pool-multi-region-things-to-know"></a>
+ マルチリージョンレプリケーションには個別のアドオンコストがあり、ユーザープールが Essentials または Plus [機能プラン](cognito-sign-in-feature-plans.md)に含まれている必要があります。Lite 機能プランでは、ユーザープールで MRR を有効にすることはできません。
+ レプリケーションを有効にするAWS KMS前に、 から[マルチリージョンのカスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)を使用してユーザープールを設定する必要があります。キーは、ユーザープールレプリカAWS リージョンを持つすべての で使用可能である必要があります。詳細については、「[データ暗号化](data-protection.md#data-encryption)」を参照してください。
+ ユーザープールは、リージョン間で一貫したトークン検証を確保するために、マルチリージョン OIDC 発行者を使用する必要があります。詳細については、「[OIDC 発行者としての Amazon Cognito ユーザープール](federation-endpoints.md#user-pool-oidc-issuer)」を参照してください。
+ 新しいセカンダリユーザープールは `INACTIVE`状態で開始されます。本番稼働用のユーザープールをアクティブ化する前に、リージョン設定を確認して設定します。
+ リージョン設定はレプリカによって異なる場合があります。レプリカでは、以下の設定を個別に設定できます。他のすべての設定はプライマリユーザープールに設定され、セカンダリに自動的に同期されます。
  + E メール設定
  + 脅威保護通知の E メール設定
  + SMS 設定
  + Lambda トリガー
  + タグ
  + ログエクスポート設定
  + AWS WAFウェブ ACLs
+ リージョン間のデータレプリケーションでは、短時間の遅延が発生する場合があります。プライマリユーザープールは設定とユーザーディレクトリの更新をセカンダリに同期し、このプロセスは結果整合性があります。

## マルチリージョンレプリケーションの制限
<a name="user-pool-multi-region-limitations"></a>
+ サインアップまたは管理者作成によって、セカンダリユーザープールで新しいユーザーを生成することはできません。新しいフェデレーティッドユーザーは、以前にプライマリユーザープールにサインインしたことがある場合にのみ、フェイルオーバー状態のセカンダリユーザープールにサインインできます。
+ ユーザーは、セカンダリユーザープールでパスワードをリセットしたり、プロファイルを変更したりすることはできません。フェイルオーバー状態では、これらのオペレーションをユーザーインターフェイスで無効にし、ヘルスチェックがプライマリユーザープールへのアクセスを復元した後に使用できるようにします。
+ ユーザーディレクトリごとに、追加のリージョンに最大 1 つのセカンダリレプリカを持つことができます。任意のユーザープールにセカンダリレプリカを含めることができます。
+ TOTP MFA はセカンダリレプリカではサポートされていません。TOTP MFA が設定されたユーザーは、プライマリリージョンのユーザープールがリクエストを処理するときに認証する必要があります。
+ ロックアウトがリージョン間で同期されないまでのパスワードベースの認証試行の数。各レプリカは、失敗した認証試行の独自の数を維持します。
+ マルチリージョンユーザープールの自動フェイルオーバーは、[カスタムドメイン](cognito-user-pools-add-custom-domain.md)でのみ設定できます。

## マルチリージョンレプリケーションの設定
<a name="user-pool-multi-region-configure"></a>

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

------
#### [ AWS マネジメントコンソール ]

**ユーザープールのマルチリージョンレプリケーションを設定するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)にサインインします。

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

1. リストから既存のユーザープールを選択するか、[新しいユーザープールを作成します](getting-started-user-pools.md)。

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

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

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

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

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

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

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

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

------
#### [ API ]

レプリカユーザープールを作成するには、[CreateUserPoolReplica](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolReplica.html) オペレーションを使用します。次の例では、 のプライマリユーザープール`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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) リクエストのドメインに適用します。

```
{
   "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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolReplica.html) オペレーションを使用します。

```
{
   "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"
   }
}
```

------

## マルチリージョンユーザープールでのフェイルオーバー
<a name="user-pool-multi-region-failover"></a>

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

### マネージドログイン、フェデレーション、machine-to-machine認可のフェイルオーバー
<a name="user-pool-multi-region-failover-managed-login"></a>

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

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

フェイルオーバーを設定するには、Route 53 で[ヘルスチェック](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html)を設定します。このヘルスチェックの状態を決定するのはお客様の責任です。ヘルスチェックは、カスタムドメインの 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 コンソールでユーザープールに移動します。

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

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

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

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

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

### Amazon Cognito APIsと SDKsフェイルオーバー
<a name="user-pool-multi-region-failover-api"></a>

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

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

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

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