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