

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置用户池域
<a name="cognito-user-pools-assign-domain"></a>

配置域是设置用户池的可选部分。用户池域托管用于用户身份验证、与第三方提供者的联合身份验证以及 OpenID Connect（OIDC）流等功能。它具有*托管登录*，这是用于执行注册、登录和密码恢复等密钥操作的预构建界面。它还托管标准 OpenID Connect (OIDC) 端点，例如授权[、](authorization-endpoint.md)[用户信息和](userinfo-endpoint.md)[令牌](token-endpoint.md)，用于 machine-to-machine (M2M) 授权以及其他 OIDC 和 2.0 身份验证和授权流程。 OAuth 

用户在与您的用户池关联的域中使用托管登录页面进行身份验证。您可以通过两种方式配置此域：您可以使用默认 Amazon Cognito 托管域，也可以配置自己拥有的自定义域。

自定义域选项在灵活性、安全性和控制性方面有更多选择。例如，一个熟悉的、由组织拥有的域可以增强用户信任并使登录过程更加直观。但是，自定义域名方法需要一些额外的开销，例如管理 SSL 证书和 DNS 配置的开销。

终端节点 URLs 和`/.well-known/jwks.json`令牌签名密钥`/.well-known/openid-configuration`的 OIDC 发现端点未托管在您的域中。有关更多信息，请参阅 [身份提供者和依赖方端点](federation-endpoints.md)。

了解如何为您的用户池配置和管理域，这是将身份验证集成到应用程序中的重要一步。使用用户池 API 和 S AWS DK 登录可以替代配置网域。基于 API 的模型直接在 API 响应中提供令牌，但是对于使用用户池扩展功能作为 OIDC IdP 的实现，必须配置域。有关用户池中可用的身份验证模型的更多信息，请参阅[了解 API、OIDC 和托管登录页面身份验证](authentication-flows-public-server-side.md#user-pools-API-operations)。

**Topics**
+ [用户池域需知信息](#cognito-user-pools-assign-domain-things-to-know)
+ [使用 Amazon Cognito 前缀域进行托管登录](cognito-user-pools-assign-domain-prefix.md)
+ [使用您自己的域进行托管登录](cognito-user-pools-add-custom-domain.md)

## 用户池域需知信息
<a name="cognito-user-pools-assign-domain-things-to-know"></a>

用户池域是应用程序中的 OIDC 依赖方和 UI 元素的服务点。当您计划为用户池实施域时，请考虑以下详细信息。

**保留术语**  
您不能在 Amazon Cognito 前缀域的名称中使用文本 `aws`、`amazon` 或 `cognito`。

**发现端点位于另一个域中**  
用户池[发现端点](federation-endpoints.md) `.well-known/openid-configuration` 和 `.well-known/jwks.json` 不在您的用户池自定义域或前缀域中。这些端点的路径如下所示。
+ `https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/openid-configuration`
+ `https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/jwks.json`

**域变更的生效时间**  
Amazon Cognito 可能需要长达一分钟的时间才能启动或更新前缀域的品牌版本。对自定义域的更改最长可能需要五分钟才能传播。新自定义域最长可能需要一小时才能传播。

**同时使用自定义域和前缀域**  
您可以使用自定义域名和拥有的前缀域名来设置用户池 AWS。由于用户池[发现端点](federation-endpoints.md)托管在另一个域中，因此它们仅为*自定义域*提供服务。例如，您的 `openid-configuration` 将为 `"authorization_endpoint"` 提供单个值：`"https://auth.example.com/oauth2/authorize"`。

当用户池中同时包含自定义域和前缀域时，您可以使用自定义域来启用 OIDC 提供程序的完整特征。具有此配置的用户池中的前缀域没有发现或 token-signing-key端点，因此应相应地使用。

**首选自定义域作为通行密钥的依赖方 ID**  
使用[通行密钥](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)设置用户池身份验证时，必须设置依赖方（RP）ID。如果同时具有自定义域和前缀域，则只能将 RP ID 设置为自定义域。要在 Amazon Cognito 控制台中将前缀域设置为 RP ID，请删除您的自定义域，或将前缀域的完全限定的域名（FQDN）作为**第三方域**进行输入。

**不要在域层次结构的不同级别使用自定义域**  
您可以为不同的用户池配置独立的自定义域，并且这些域可以共享同一个顶级域（TLD），例如 *auth.example.com* 和 *auth2.example.com*。托管登录会话 Cookie 对自定义域和所有子域（如 *\$1.auth.example.com*）均有效。因此，您的应用程序的任何用户都不应访问任何父域*和*子域的托管登录。如果自定义域使用相同的 TLD，则应将其保持在相同的子域级别。

假设您有一个使用自定义域 *auth.example.com* 的用户池。然后创建另一个用户池并分配自定义域 *uk.auth.example.com*。用户使用 *auth.example.com* 登录，并获得 Cookie，他们的浏览器会将其呈现给通配符路径 *\$1.auth.example.com* 中的任何网站。然后他们尝试登录 *uk.auth.example.com*。他们向用户池域传递无效 Cookie，将收到错误信息，而不是收到登录提示。相比之下，拥有 *\$1.auth.example.com* 的 Cookie 的用户可以在 *auth2.example.com* 启动登录会话，而不会遇到任何问题。

**品牌版本**  
创建域时可设置**品牌版本**。您可以选择更新的托管登录体验或经典的托管 UI 体验。这一选择适用于在您的域中托管服务的所有应用程序客户端。

# 使用 Amazon Cognito 前缀域进行托管登录
<a name="cognito-user-pools-assign-domain-prefix"></a>

托管登录的默认体验托管在 AWS 拥有的网域上。这种方法的进入门槛较低（选择一个前缀名称即可生效），但该方法没有自定义域所具有的值得信任的特征。Amazon Cognito 域选项和自定义域选项在费用上没有差异。唯一的差异是您引导用户访问的 Web 地址中的域。对于第三方 IdP 重定向和客户端凭证流，托管域几乎没有明显的影响。自定义域更适合以下情况，即，您的用户使用托管登录进行登录，并且会与不匹配应用程序域的身份验证域进行交互。

托管的 Amazon Cognito 域有您选择的前缀，但托管在根域 `amazoncognito.com`。以下是示例：

```
https://cognitoexample.auth.ap-south-1.amazoncognito.com
```

所有前缀域都遵循以下格式：`prefix`.`auth`.*`AWS 区域 code`*.`amazoncognito`.`com`。[自定义域](cognito-user-pools-add-custom-domain.md)用户池可以在您拥有的任何域中对托管登录或托管 UI 页面进行托管。

**注意**  
为了增强您的 Amazon Cognito 应用程序的安全性，用户池端点的父域将在[公共后缀列表 (PSL)](https://publicsuffix.org/) 中注册。PSL 可帮助用户的网络浏览器对您的用户池端点及其设置的 Cookie 建立一致的理解。  
用户池父域采用以下格式。  

```
auth.Region.amazoncognito.com
auth-fips.Region.amazoncognito.com
```

要使用添加应用程序客户端和用户池域 AWS 管理控制台，请参阅[创建应用程序客户端](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-console-create)。

**Topics**
+ [先决条件](#cognito-user-pools-assign-domain-prefix-prereq)
+ [配置 Amazon Cognito 域前缀](#cognito-user-pools-assign-domain-prefix-step-1)
+ [验证登录页面](#cognito-user-pools-assign-domain-prefix-verify)

## 先决条件
<a name="cognito-user-pools-assign-domain-prefix-prereq"></a>

在开始之前，您需要：
+ 用户池和应用程序客户端。有关更多信息，请参阅 [用户池入门](getting-started-user-pools.md)。

## 配置 Amazon Cognito 域前缀
<a name="cognito-user-pools-assign-domain-prefix-step-1"></a>

您可以使用 AWS 管理控制台 或 AWS CLI 或 API 来配置用户池域。

------
#### [ Amazon Cognito console ]

**配置域**

1. 导航到**品牌**下的**域**菜单。

1. 选择**域**旁边的**操作**，然后选择**创建 Cognito 域**。如果您已配置用户池前缀域，请先选择**删除 Cognito 域**，然后再创建新的自定义域。

1. 输入可用的域前缀，以与 **Amazon Cognito 域**结合使用。有关设置**自定义域**的信息，请参阅[使用您自己的域进行托管登录](cognito-user-pools-add-custom-domain.md)。

1. 选择**品牌版本**。您的品牌版本适用于该域的所有用户交互页面。您的用户池可以针对所有应用程序客户端，对托管登录或托管 UI 品牌进行托管。
**注意**  
您可以拥有自定义域和前缀域，但是 Amazon Cognito 仅为*自定义*域处理 `/.well-known/openid-configuration` 端点。

1. 选择**创建**。

------
#### [ CLI/API ]

使用以下命令可以创建域前缀并将其分配到您的用户池。

**配置用户池域**
+ AWS CLI: `aws cognito-idp create-user-pool-domain`

  **示例**：`aws cognito-idp create-user-pool-domain --user-pool-id <user_pool_id> --domain <domain_name> --managed-login-version 2`
+ 用户池 API 操作：[CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html)

**获取有关域的信息**
+ AWS CLI: `aws cognito-idp describe-user-pool-domain`

  **示例**：`aws cognito-idp describe-user-pool-domain --domain <domain_name>`
+ 用户池 API 操作：[DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html)

**删除域**
+ AWS CLI: `aws cognito-idp delete-user-pool-domain`

  **示例**：`aws cognito-idp delete-user-pool-domain --domain <domain_name>`
+ 用户池 API 操作：[DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html)

------

## 验证登录页面
<a name="cognito-user-pools-assign-domain-prefix-verify"></a>
+ 验证登录页面是否可从您的 Amazon Cognito 托管域访问。

  ```
  https://<your_domain>/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
  ```

您的域显示在 Amazon Cognito 控制台的 **Domain name (域名)** 页面上。您的应用程序客户端 ID 和回调 URL 将显示在 **App client settings**（应用程序客户端设置）页面上。

# 使用您自己的域进行托管登录
<a name="cognito-user-pools-add-custom-domain"></a>

在设置应用程序客户端后，您可以为[托管登录](cognito-user-pools-managed-login.md)的域服务使用自定义域来配置用户池。使用自定义域，用户就可以使用您自己的网址而不是默认的 `amazoncognito.com` [前缀域](cognito-user-pools-assign-domain-prefix.md)来登录您的应用程序。自定义域让您可以使用熟悉的域名，从而提高用户对您的应用程序的信任度，尤其是当根域与托管应用程序的域匹配时。使用自定义域，可以进一步满足组织的安全要求。

自定义域有一些先决条件，包括用户池、应用程序客户端和您拥有的 Web 域。自定义域名还需要使用位于美国东部（弗吉尼亚北部）的 AWS Certificate Manager (ACM) 管理的自定义域名的 SSL 证书。Amazon Cognito 会创建亚马逊 CloudFront 配送，在运输途中使用您的 ACM 证书进行保护。由于您拥有该域名，因此必须创建 DNS 记录，将流量引导至自定义域名的 CloudFront 分配。

在这些要素准备就绪后，您可以通过 Amazon Cognito 控制台或 API 将自定义域添加到用户池。这包括指定域名和 SSL 证书，然后使用提供的别名目标更新 DNS 配置。在进行这些更改后，您可以验证是否可从您的自定义域访问登录页面。

创建自定义域最省力的方法是在 Amazon Route 53 中使用公有托管区。Amazon Cognito 控制台只需几个步骤即可创建正确的 DNS 记录。在开始之前，请考虑为您拥有的域或子域[创建 Route 53 托管区](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html)。

**Topics**
+ [将自定义域添加到用户池](#cognito-user-pools-add-custom-domain-adding)
+ [先决条件](#cognito-user-pools-add-custom-domain-prereq)
+ [步骤 1：输入自定义域名](#cognito-user-pools-add-custom-domain-console-step-1)
+ [步骤 2：添加别名目标和子域](#cognito-user-pools-add-custom-domain-console-step-2)
+ [步骤 3：验证登录页面](#cognito-user-pools-add-custom-domain-console-step-3)
+ [更改自定义域的 SSL 证书](#cognito-user-pools-add-custom-domain-changing-certificate)

## 将自定义域添加到用户池
<a name="cognito-user-pools-add-custom-domain-adding"></a>

要将自定义域添加到用户池，请在 Amazon Cognito 控制台中指定域名，并提供您使用 [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/)（ACM）管理的证书。在添加域后，Amazon Cognito 提供了一个要添加到 DNS 配置的别名目标。

## 先决条件
<a name="cognito-user-pools-add-custom-domain-prereq"></a>

在开始之前，您需要：
+ 用户池和应用程序客户端。有关更多信息，请参阅 [用户池入门](getting-started-user-pools.md)。
+ 您拥有的 Web 域。其*父域*必须具有有效的 DNS **A 记录**。您可以为该记录分配任何值。父域可以是域的根，也可以是域层次结构中上一级的子域。例如，如果您的自定义域是 *auth.xyz.example.com*，Amazon Cognito 必须能够将 *xyz.example.com* 解析为 IP 地址。为了防止对客户基础设施造成意外影响，Amazon Cognito 不支持使用顶级域名 (TLDs) 作为自定义域名。有关更多信息，请参阅[域名](https://tools.ietf.org/html/rfc1035)。
+ 能够为自定义域创建子域。建议对您的子域名进行**身份验证**。例如：*auth.example.com*。
**注意**  
如果您没有[通配符证书](https://en.wikipedia.org/wiki/Wildcard_certificate)，则可能需要为自定义域的子域获取新证书。
+ 由美国东部（弗吉尼亚北部）ACM 管理的公共 SSL/TLS 证书。证书必须在 us-east-1 中，因为该证书将与全球服务中的发行版 CloudFront相关联。
+ 支持服务器名称指示（SNI）的浏览器客户端。Amazon Cognito CloudFront 分配给自定义域名的分配需要 SNI。您无法更改此设置。有关 CloudFront 分发中的 SNI 的更多信息，请参阅《*亚马逊 CloudFront 开发者*指南》中的 “[使用 SNI 处理 HTTPS 请求](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni)”。
+ 一个应用程序，允许您的用户池授权服务器向用户会话中添加 Cookie。Amazon Cognito 为托管登录页面设置多个必需的 Cookie。这包括 `cognito`、`cognito-fl` 和 `XSRF-TOKEN`。尽管每个 Cookie 都符合浏览器大小限制，但更改用户池配置可能会导致托管登录 Cookie 变大。像自定义域前面的应用程序负载均衡器（ALB）这样的中间服务可能会强制设定最大请求头大小或总 Cookie 大小。如果您的应用程序还设置了自己的 Cookie，则用户的会话可能会超过这些限制。为避免大小限制冲突，建议您的应用程序不要在托管用户池域服务的子域上设置 Cookie。
+ 允许更新 Amazon CloudFront 分配。为此，您可以为 AWS 账户中的用户附加以下 IAM policy 声明：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
           {
              "Sid": "AllowCloudFrontUpdateDistribution",
              "Effect": "Allow",
              "Action": [
                  "cloudfront:updateDistribution"
              ],
              "Resource": [
                  "*"
              ]
          }
      ]
  }
  ```

------

  有关授权操作的更多信息 CloudFront，请参阅[使用基于身份的策略（IAM 策略）](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/access-control-managing-permissions.html)。 CloudFront

  Amazon Cognito 最初使用您的 IAM 权限来配置 CloudFront分配，但分配由管理。 AWS您无法更改 Amazon Cognito 与您的用户池关联的 CloudFront 分配的配置。例如，您无法更新安全策略中支持的 TLS 版本。

## 步骤 1：输入自定义域名
<a name="cognito-user-pools-add-custom-domain-console-step-1"></a>

您可以使用 Amazon Cognito 控制台或 API 将域添加到用户池。

------
#### [ Amazon Cognito console ]

**将域从 Amazon Cognito 控制台添加到用户池：**

1. 导航到**品牌**下的**域**菜单。

1. 选择**域**旁边的**操作**，然后选择**创建自定义域**或**创建 Amazon Cognito 域**。如果您已配置用户池自定义域，请先选择**删除自定义域**，然后再创建新的自定义域。

1. 选择**域**旁边的**操作**，然后选择**创建自定义域**。如果您已配置自定义域，请先选择**删除自定义域**来删除现有域，然后再创建新的自定义域。

1. 对于**自定义域**，请输入您希望与 Amazon Cognito 一起使用的域的 URL。您的域名只能包含小写字母、数字和连字符。请勿对第一个或最后一个字符使用连字符。使用句点来分隔子域名。

1. 对于 **ACM 证书**，请选择要用于您的域的 SSL 证书。无论您的用户池如何，只有美国东部（弗吉尼亚北部）的 ACM 证书才有资格用于 Amazon Cognito 自定义域。 AWS 区域 

   如果您没有可用证书，则可以使用 ACM 在美国东部（弗吉尼亚北部）预置一个证书。有关更多信息，请参阅《AWS Certificate Manager 用户指南》**中的[入门](https://docs.aws.amazon.com/acm/latest/userguide/gs.html)。

1. 选择**品牌版本**。您的品牌版本适用于该域的所有用户交互页面。您的用户池可以针对所有应用程序客户端，对托管登录或托管 UI 品牌进行托管。
**注意**  
您可以拥有自定义域和前缀域，但是 Amazon Cognito 仅为*自定义*域处理 `/.well-known/openid-configuration` 端点。

1. 选择**创建**。

1. Amazon Cognito 将转至**域**菜单。此时将显示标题为**在域名的 DNS 中创建别名记录**的消息。记下控制台中显示的**域**和**别名目标**。在下一步骤中，将使用它们将流量指向您的自定义域。

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

以下[CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html)请求正文创建了一个自定义域。

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

------

## 步骤 2：添加别名目标和子域
<a name="cognito-user-pools-add-custom-domain-console-step-2"></a>

在本步骤中，您将通过域名服务器（DNS）服务提供商设置一个别名，该别名指回到上一个步骤中的别名目标。如果您将 Amazon Route 53 用于 DNS 地址解析，请选择**使用 Route 53 添加别名目标和子域**部分。

### 将别名目标和子域添加到当前 DNS 配置
<a name="cognito-user-pools-add-custom-domain-console-step-2a"></a>
+ 如果您没有将 Route 53 用于 DNS 地址解析，则必须使用您的 DNS 服务提供商配置工具将上一个步骤中的别名目标添加到域 DNS 记录中。您的 DNS 提供商还需要为您的自定义域设置子域。

### 使用 Route 53 添加别名目标和子域
<a name="cognito-user-pools-add-custom-domain-console-step-2b"></a>

1. 登录 [Route 53 控制台](https://console.aws.amazon.com/route53/)。如果出现提示，请输入您的 AWS 凭据。

1. 如果您在 Route 53 中没有公共托管区，请创建一个托管区，将根域作为您的自定义域的父域。有关更多信息，请参阅《Amazon Route 53 开发人员指南》**中的[创建公共托管区](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html)。

   1. 选择**创建托管区域**。

   1. 例如*auth.example.com*，从域名列表中输入自定义域名的父**域名**。*myapp.auth.example.com*

   1. 输入托管区域的**描述**。

   1. 选择**公有托管区域**的托管区域**类型**以允许公共客户端解析您的自定义域。不支持选择**私有托管区域**。

   1. 根据需要应用**标签**。

   1. 选择**创建托管区域**。
**注意**  
您还可以为自定义域创建新的托管区，并且使用父托管区中的委托集将查询指向子域托管区。否则，请创建 A 记录。此方法为您的托管区域提供了更大的灵活度和安全性。有关更多信息，请参阅[通过 Amazon Route 53 为托管域创建子域](https://aws.amazon.com/premiumsupport/knowledge-center/create-subdomain-route-53/)。

1. 在**托管区域**页面上，选择您的托管区域的名称。

1. 为自定义域的父域添加 DNS 记录（如果您还没有 DNS 记录）。为父域创建 DNS 记录，其属性如下：
   + **记录名称**：留空。
   + **记录类型**：`A`。
   + **别名**：不启用。
   + **值**：输入您选择的目标。此记录必须解析到*某个地址*，但记录的值对于 Amazon Cognito 来说并不重要。
   + **TTL**：设置为您的首选 TTL 或保留为默认值。
   + **路由策略**：选择**简单路由**。

1. 选择**创建记录**。以下是该域的示例记录*example.com*：

   `example.com. 60 IN A 198.51.100.1`
**注意**  
Amazon Cognito 验证您的自定义域的父域是否有 DNS 记录，以防止意外劫持生产域。如果您没有父域的 DNS 记录，则当您尝试设置自定义域时，Amazon Cognito 将返回错误消息。起始授权（SOA）记录是一条 DNS 记录，但不足以用于父域验证。

1. 使用以下属性为您的自定义域添加另一条 DNS 记录：
   + **记录名称**：用于为 `auth.example.com` 创建记录的自定义域前缀（例如 `auth`）。
   + **记录类型**：`A`。
   + **别名**：启用。
   + **流量路由至**：选择 **CloudFront 分发的别名**。输入您之前记录的**别名目标**，例如 `123example.cloudfront.net`。
   + **路由策略**：选择**简单路由**。

1. 选择**创建记录**。
**注意**  
新记录可能需要大约 60 秒钟才能传播到所有 Route 53 DNS 服务器。您可以使用 Route 53 [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html)API 方法来验证您的更改是否已传播。

## 步骤 3：验证登录页面
<a name="cognito-user-pools-add-custom-domain-console-step-3"></a>
+ 验证登录页面是否可从您的自定义域访问。

  通过在浏览器中输入此地址，使用您的自定义域和子域进行登录。以下是*example.com*带有子域名的自定义网域的网址示例：*auth*

  ```
  https://myapp.auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>
  ```

## 更改自定义域的 SSL 证书
<a name="cognito-user-pools-add-custom-domain-changing-certificate"></a>

如果需要，您可以使用 Amazon Cognito 更改应用于自定义域的证书。

通常，在使用 ACM 进行常规证书续订后，此操作是不必要的。当您续订 ACM 中的现有证书时，证书的 ARN 保持不变，并且您的自定义域将自动使用新证书。

但是，如果您将现有证书替换为新证书，ACM 将为新证书提供一个新 ARN。要将新证书应用于自定义域，您必须将此 ARN 提供给 Amazon Cognito。

在提供新证书后，Amazon Cognito 需要长达 1 小时才能将它分配给自定义域。

**开始前的准备工作**  
您必须先将证书添加到 Amazon Cognito，然后才能更改 ACM 中的证书。有关更多信息，请参阅《AWS Certificate Manager 用户指南》**中的[入门](https://docs.aws.amazon.com/acm/latest/userguide/gs.html)。  
将您的证书添加到 ACM 时，您必须选择美国东部（弗吉尼亚北部）作为 AWS 区域。

您可以使用 Amazon Cognito 控制台或 API 更改证书。

------
#### [ AWS 管理控制台 ]

**更新 Amazon Cognito 控制台的证书：**

1. 登录 AWS 管理控制台 并打开 Amazon Cognito 控制台，网址为。[https://console.aws.amazon.com/cognito/home](https://console.aws.amazon.com/cognito/home)

1. 选择**用户池**。

1. 选择要更新其证书的用户池。

1. 选择**域**菜单。

1. 选择 **操作**、**编辑 ACM 证书**。

1. 选择您希望与自定义域关联的新证书。

1. 选择**保存更改**。

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

**更新证书（Amazon Cognito API）**
+ 使用 [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) 操作。

------