本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Multi-Region 为用户池复制
借助多区域复制 (MRR),您可以在其他 AWS 区域 区域中创建副本用户池,为您的身份验证基础设施提供业务连续性和灾难恢复功能。借助 MRR,即使您与某个地区的资源断开连接,注册用户也可以继续使用您的应用程序进行身份验证,从而确保您的应用程序保持可用。
在配置 MRR 时,Amazon Cognito 会使用共享的用户池 ID 创建单独的用户池。每个副本用户池都托管共享用户目录的身份验证服务。主用户池是管理配置和写入操作(例如密码重置和用户注册)的权威来源。次要用户池无法创建用户。它们继承主用户池中的大多数设置,在故障转移状态下,它们可以处理身份验证操作,例如用户登录和令牌生成。
关于多区域复制的注意事项
-
Multi-Region 复制有单独的附加费用,并且要求您的用户池使用基本版或增强版功能计划。使用精简版功能计划,您无法在用户池上启用 MRR。
-
在启用复制 AWS KMS 之前,您必须使用来自的多区域客户托管密钥配置用户池。该密钥必须在所有有用户池副本 AWS 区域 的用户中都可用。有关更多信息,请参阅 数据加密。
-
为了实现跨区域一致的令牌验证,我们建议您使用更新的发行者配置用户池。有关更多信息,请参阅 Amazon Cognito 用户池作为 OIDC 发行机构。
-
新的次要用户池以该
INACTIVE状态启动。在激活用于生产的用户池之前,请查看和配置区域设置。 -
副本之间的区域配置可能有所不同。您可以在副本中独立配置以下设置。所有其他设置均在主用户池中设置并自动同步到辅助用户池。
-
电子邮件配置
-
威胁防护通知的电子邮件配置
-
短信配置
-
Lambda 触发器
-
标签
-
日志导出配置
-
AWS WAF 网页 ACL
-
-
区域之间的数据复制可能会带来短暂的延迟。主用户池将设置和用户目录更新同步到辅助用户池,此过程最终是一致的。
多区域复制的局限性
-
无论是通过注册还是创建管理员,您都无法在辅助用户池中生成新用户。如果联合用户之前已登录主用户池,则只能登录处于故障转移状态的辅助用户池。
-
用户无法在辅助用户池中重置密码或修改其个人资料。在故障转移状态下,在用户界面中禁用这些操作,并在运行状况检查恢复对主用户池的访问权限后使其可用。
-
每个用户目录在其他区域中最多可以有一个辅助副本。任何符合条件的用户池都可以拥有辅助副本。
-
辅助副本不支持 TOTP MFA。配置了 TOTP MFA 的用户必须在主区域的用户池为请求提供服务时进行身份验证。
-
封锁前基于密码的身份验证尝试次数未在各区域之间同步。每个副本都会保留自己的失败身份验证尝试次数。
配置多区域复制
在启用多区域复制之前,请确保您的用户池满足先决条件:Essentials 或 Plus 功能计划以及多区域客户托管 KMS 密钥。
次要区域支持的 API 操作
Amazon Cognito 支持次要区域中的一部分 API 操作。可用的操作取决于副本的状态。处于INACTIVE状态的副本支持有限的读取和配置操作。处于ACTIVE状态的副本支持其他身份验证和会话管理操作。此处未列出的操作仅在主区域可用。
非活动次要区域的操作
处于INACTIVE状态的次要区域中的副本用户池允许执行以下 Amazon Cognito API 操作。
活动次要区域的其他操作
处于ACTIVE状态的辅助区域中的副本用户池允许执行上述所有操作,以及以下身份验证和会话管理操作。
多区域用户池中的故障转移
借助多区域用户池,您可以故障转移托管登录、联合登录以及两 AWS 区域者之间的直接 API 调用。托管登录和联盟故障转移可通过自定义域或在用户池中配置的前缀 (Cognito) 域来实现。您无法使用副本用户池配置其他自定义域。
注意
Amazon Cognito 目前不支持在 AWS GovCloud (美国)地区通过 Route 53 运行状况检查进行自动故障转移。有关将流量路由到 AWS GovCloud (美国)次要区域的信息,请参阅中的故障转移 AWS GovCloud (美国)地区。
用于托管登录、联合和计算机间授权的故障转移
当您的主用户池具有自定义域或前缀域时,可以进行故障转移。您的用户池域提供 OAuth 2.0 资源,包括授权和令牌端点,并处理来自第三方联合提供商(包括 OIDC、SAML 和社交提供商)的 IdP 响应。
要启用故障转移,请在 Route 53 中设置运行状况检查并在您的域上设置该Routing字段。您可以确定触发健康或不健康状态的因素。当运行状况检查处于不健康状态时,Amazon Cognito 会从辅助副本用户池中提供托管登录页面和身份验证操作。当运行状况检查进入正常状态时,Amazon Cognito 开始将流量路由回主副本。
对于自定义域,DNS 记录可以使用 Route 53 或任何第三方 DNS 提供商。确保您的 DNS 提供商中有指向您的目标别名(即 CloudFront 分发)的有效 CNAME 记录。您可以在 Amazon Cognito 控制台的域名页面上找到别名目标。
在控制台中更新运行状况检查 ID
-
选择 “用户池”,然后选择您的用户池。
-
从菜单中选择 “品牌” 下的 “域名”。
-
在自定义域部分下,选择编辑选项,然后选择编辑多区域故障转移。
-
切换 “启用多区域故障转移” 选项。
-
从可用的运行状况检查中选择您的 Route 53 运行状况检查 ID。
-
选择保存更改。
Amazon Cognito API 和软件开发工具包的故障转移
如果您使用 Amazon Cognito API 或软件开发工具包,则不使用自定义域,您的应用程序负责将流量路由到 Amazon Cognito 服务区域终端节点以处理身份验证和其他 API 调用。
如果您的应用程序前端仅使用公共客户端,例如单页应用程序 (SPA) 或移动应用程序,则您的应用程序必须是动态的,才能相应地路由 API 调用。考虑使用无服务器应用程序后端,以帮助确定应从哪个区域开始使用 Amazon Cognito 进行身份验证。
如果您的应用程序带有后端,则可以在此处确定要针对哪个用户池进行身份验证的逻辑。
如果您同时使用托管登录终端节点和 API,请使用相同的 Route 53 运行状况检查来确定您的应用程序将 Amazon Cognito API 调用定向到哪个区域。
中的故障转移 AWS GovCloud (美国)地区
Amazon Cognito 目前不支持在 AWS GovCloud (美国)地区通过 Route 53 运行状况检查进行自动故障转移。您无法在用户池域上设置该Routing字段,并且自定义域不可用。要继续为辅助区域的托管登录、联合和 OAuth 2.0 端点提供服务,请为每个副本用户池配置一个前缀域,并自行在域之间路由流量。
在需要进行故障转移之前,请完成以下步骤。在开始之前,请在辅助区域中创建一个副本用户池。
要在中为故障切换做准备 AWS GovCloud (美国)地区
-
在辅助区域中,使用托管登录为副本用户池创建前缀域。在
CreateUserPoolDomain请求中,在 Amazon Cognito 控制台的 “域” 菜单上设置为ManagedLoginVersion“托管登录” 或选择 “托管登录”。2副本用户池不支持使用经典托管 UI 的域名。每个域名都有一个 Region-specific URL。 -
如果您的用户池有联合身份提供商 (IdPs),请将辅助域的重定向 URL 添加到每个 IdP。对于 OIDC 和社交 IdPs,请添加
https://为允许的重定向 URI。对于 SAML IdPs,请添加secondary-domain/oauth2/idpresponsehttps://为断言消费者服务 (ACS) 网址。如果跳过此步骤,则在将流量切换到辅助域后,联合登录将失败。secondary-domain/saml2/idpresponse -
将您的应用程序配置为向提供流量的区域中的域上的授权、令牌、注销和其他 OAuth 2.0 终端节点发送请求。包括使用客户端凭证授予请求令牌的机器对机器 (M2M) 客户端。
-
在将流量发送到辅助区域之前,请将副本用户池状态更改为
ACTIVE。
将流量路由到辅助域时,请考虑以下几点:
-
Passk eys — 用户在主域上注册的密钥在辅助域上不起作用,因为每个域的信赖方 ID 都不同。要在辅助域上登录托管登录,用户必须使用其他登录方法。这不会影响使用 SDK 并将自己的域设置为信赖方 ID 的应用程序。
-
故障恢复 — Amazon Cognito 不会将流量路由回主区域。当主区域再次可用时,请更新您的应用程序以向主域发送流量。
有关路由 API 和 SDK 流量的信息,请参阅Amazon Cognito API 和软件开发工具包的故障转移。