

# 通过添加备用域名（CNAME）使用自定义 URL
<a name="CNAMEs"></a>

在创建分配时，CloudFront 会为其提供域名，例如 d111111abcdef8.cloudfront.net。您可以使用备用域名（也称为 CNAME），而不是使用提供的此域名。

要了解如何使用您自己的域名（例如 www.example.com），请参阅以下主题：

**Topics**
+ [使用备用域名的要求](#alternate-domain-names-requirements)
+ [备用域名的使用限制](#alternate-domain-names-restrictions)
+ [添加备用域名](CreatingCNAME.md)
+ [移动备用域名](alternate-domain-names-move.md)
+ [删除备用域名](alternate-domain-names-remove-domain.md)
+ [在备用域名中使用通配符](alternate-domain-names-wildcard.md)

## 使用备用域名的要求
<a name="alternate-domain-names-requirements"></a>

在向 CloudFront 分配添加备用域名（例如 www.example.com）时，需满足以下要求：

**备用域名必须小写**  
所有备用域名 (CNAME) 都必须小写。

**备用域名必须由有效的 TLS 证书所涵盖**  
要将备用域名（CNAME）添加至 CloudFront 分配，必须给分配附加一个可信且有效的 TLS 证书，其中涵盖了备用域名。这样可以确保仅有权访问您的域证书的人员能够将 CloudFront 关联到与您的域相关的 CNAME。  
受信任证书是由 AWS Certificate Manager（ACM）或其他有效证书颁发机构（CA）颁发的证书。您可以使用自签名证书来验证现有的 CNAME，但*不能* 验证新的 CNAME。CloudFront 支持与 Mozilla 相同的证书颁发机构。有关当前列表，请参阅 [Mozilla 包含的 CA 证书列表](https://wiki.mozilla.org/CA/Included_Certificates)。有关使用第三方 CA 时的中间证书的信息，请参阅[中间证书](cnames-and-https-requirements.md#https-requirements-intermediate-certificates)。  
为了使用附加的证书来验证备用域名（包括含通配符的域名），CloudFront 会检查证书上的使用者备用名称 (SAN)。要添加的备用域名必须为 SAN 所涵盖。  
一次只能将一个证书附加到 CloudFront 分配。
您可以通过执行以下操作之一来证明您有权向分配中添加特定的备用域名：  
+ 附加包含备用域名的证书，例如 product-name.example.com。
+ 附加一个证书，其中包括一个 \$1 通配符在域名的开头，以用一个证书涵盖多个子域。当指定通配符时，可以在 CloudFront 中添加多个子域作为备用域名。
以下示例说明了如何在证书的域名中使用通配符来授权您在 CloudFront 中添加特定的备用域名。  
+ 您要添加 marketing.example.com 作为备用域名。您在证书中列示以下域名：\$1.example.com。当您将此证书附加到 CloudFront 时，可以为您的分配添加任何备用域名，以替换该层次上的通配符，包括 marketing.example.com。例如，您还可以添加以下备用域名：
  + product.example.com
  + api.example.com

  但是，不能添加所在层次高于或低于通配符的备用域名。例如，您不能添加备用域名 example.com 或 marketing.product.example.com。
+ 您要添加 example.com 作为备用域名。要执行此操作，必须在附加到分配的证书上列出域名 example.com 本身。
+ 您要添加 marketing.product.example.com 作为备用域名。要执行此操作，您可以在证书上列出 \$1.product.example.com，也可以在证书上列出 marketing.product.example.com 本身。

**更改 DNS 配置所需的权限**  
在添加备用域名时，您必须创建 CNAME 记录，以将备用域名的 DNS 查询路由到您的 CloudFront 分配。要执行此操作，您必须具有创建 CNAME 记录的权限，并为您使用的备用域名指定 DNS 服务提供商。通常，这意味着您拥有这些域，但您可能在为域所有者开发应用程序。

**备用域名和 HTTPS**  
如果您希望查看器使用 HTTPS 和备用域名，还必须进行其他配置。有关更多信息，请参阅 [使用备用域名和 HTTPS](using-https-alternate-domain-names.md)。

## 备用域名的使用限制
<a name="alternate-domain-names-restrictions"></a>

请注意备用域名的以下使用限制：

**备用域名的最大数量**  
有关您可以添加到分配的当前最大备用域名数，或要请求提高配额（以前称为限制），请参阅[分配的一般配额](cloudfront-limits.md#limits-web-distributions)。

**重复和重合备用域名**  
如果某个备用域名已经在一个 CloudFront 分配中存在，则您不能将此相同域名添加到另一个 CloudFront 分配中，即使您的 AWS 账户拥有该另一个分配也是如此。  
不过，您可以添加通配符备用域名（例如 \$1.example.com)，该域名包含（重叠）非通配符备用域名，例如 www.example.com。如果在两个分配中有重合的备用域名，则 CloudFront 将发送请求到具有更具体名称匹配的那个分配，而不管 DNS 记录指向哪个分配。例如，marketing.domain.com 比 \$1.domain.com 更具体。  
如果您有指向 CloudFront 分配的现有通配符 DNS 条目，并且您在尝试添加具有更具体名称的新 CNAME 时收到 DNS 配置不正确的错误，请参阅[当我尝试添加新的 CNAME 时，CloudFront 返回了 DNS 记录配置不正确的错误](troubleshooting-distributions.md#troubleshoot-incorrectly-configured-DNS-record-error)。

**域前置**  
CloudFront 中具有防止跨不同 AWS 账户发生域前置的措施。在此情形中，非标准客户端会与一个 AWS 账户中的某个域名建立 TLS/SSL 连接，然后针对另一个 AWS 账户中的某个不相关域名发出 HTTPS 请求。  
 例如，TLS 连接可能连接到 www.example.com，然后发出对 www.example.org 的请求。  
为了确定请求是否域前置，CloudFront 执行以下检查：  
+ SNI 扩展等于 HTTP 请求 `Host` 标头
+ 该证书与针对请求的分配属于同一个 AWS 账户
+ HTTP 请求 `Host` 由 TLS 握手期间提供的证书所涵盖
如果这些条件均未得到满足，CloudFront 确定该请求为域前置。CloudFront 将拒绝该请求，并返回 421 HTTP 错误响应。  
如果客户端未提供 SNI 扩展，而是获取默认的 \$1.cloudfront.net 证书，则 CloudFront 将接受传入的请求。

**CloudFront 如何识别请求的分配**  
CloudFront 根据 `Host` 标头识别 HTTP 请求的分配。CloudFront 不依赖于您要连接到的 CloudFront IP 地址，也不依赖于在 TLS 握手期间提供的 SNI 握手。  
当 CloudFront 收到请求时，它将使用 `Host` 标头的值将请求与特定的分配进行匹配。  
例如，假设您有两个分配，并且已经更新了 DNS 配置，以便备用域名路由到以下端点：  
+ primary.example.com 指向 d111111primary.cloudfront.net 
+ secondary.example.com 指向 d222222secondary.cloudfront.net 
如果您向 https://primary.example.com 发出请求但将 `Host` 标头指定为 secondary.example.com（例如 `curl https://primary.example.com -H "Host: secondary.example.com"`），则请求将改为路由到辅助分配。

**在域的顶部节点（顶级域名）添加备用域名**  
当您将备用域名添加到分配时，通常在 DNS 配置中创建 CNAME 记录，以将域名的 DNS 查询路由到 CloudFront 分配。不过，您无法为 DNS 命名空间的顶端节点（也称为顶级域名）创建 CNAME 记录；DNS 协议不允许您这样做。例如，如果您注册了 DNS 名称 example.com，则顶级域名为 example.com。您不能为 example.com 创建 CNAME 记录，但可以为 www.example.com、newproduct.example.com 等创建 CNAME 记录。  
如果您使用 Route 53 作为 DNS 服务，则可以创建别名资源记录集，与 CNAME 记录相比，该记录集具有以下优势：  
+ 您可以在顶部节点 (example.com) 为域名创建别名资源记录集。
+ 您可以为备用域名创建 HTTPS 记录，以支持将协议协商作为 DNS 查找的一部分（如果客户端支持）。有关更多信息，请参阅 [Create alias resource record set](CreatingCNAME.md#alternate-domain-https)。
+ 当您使用别名资源记录集时，就不用付款进行 Route 53 查询了。
如果您启用 IPv6，您必须创建两个别名资源记录集：一个用于路由 IPv4 流量 (A 记录)，一个用于路由 IPv6 流量 (AAAA 记录)。有关更多信息，请参阅 [启用 IPv6（查看器请求）](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6)主题中的 [所有分配设置参考](distribution-web-values-specify.md)。
有关更多信息，请参阅《Amazon Route 53 开发人员指南》**中的[使用域名将流量路由到 Amazon CloudFront Web 分配](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html)。  
如果您的 DNS 未使用 Route 53，则可以请求任播静态 IP 地址来将 example.com 等顶级域路由到 CloudFront。有关更多信息，请参阅 [请求任播静态 IP 以用于许可列表](request-static-ips.md)。

# 添加备用域名
<a name="CreatingCNAME"></a>

以下任务列表描述了如何使用 CloudFront 控制台将备用域名添加到分配中，以便您可以在链接中使用自己的域名而非 CloudFront 域名。有关使用 CloudFront API 更新您的分配的信息，请参阅[配置分配](distribution-working-with.md)。

**注意**  
如果您希望查看器使用 HTTPS 和您的备用域名，请参阅 [使用备用域名和 HTTPS](using-https-alternate-domain-names.md)。

**开始之前：**确保执行了以下操作，然后再更新分配以添加备用域名：
+ 向 Route 53 或其他域注册商注册该域名。
+ 从授权证书颁发机构（CA）获取涵盖该域名的 TLS 证书。将证书添加至您的分配中以验证您是否有权使用该域。有关更多信息，请参阅 [使用备用域名的要求](CNAMEs.md#alternate-domain-names-requirements)。<a name="CreatingCNAMEProcess"></a>

**添加备用域名**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 为要更新的分配选择 ID。

1. 在**常规**选项卡上，选择**添加域**。

1. 可以输入多达五个域来提供服务。

1. 选择**下一步**。

1. 对于 **TLS 证书**，如果 CloudFront 在 `us-east-1` AWS 区域的您的 AWS 账户中找不到域的现有 AWS Certificate Manager（ACM）证书，您可以选择在 ACM 中自动创建证书或手动创建证书。

1. 预置证书后，必须通过 DNS 提供商更新 DNS 记录来证明域所有权。CloudFront 控制台中为您提供了需要对 DNS 记录进行更新的条目。

1. 更新 DNS 记录后，选择**验证证书**。

1. 验证证书后，选择**下一步**。

1. 查看更改并选择**添加域**。

1. 在分配的 **General** 选项卡上，确认 **Distribution Status** 已更改为 **Deployed**。如果您试图在部署对分配的更新之前使用备用域名，您在以下步骤创建的链接可能无法正常工作。

1. 配置备用域（例如 www.example.com）的 DNS 服务，以将流量路由到您的分配的 CloudFront 域名（如 d111111abcdef8.cloudfront.net）。您使用的方法取决于您是将 Route 53 还是另一个供应商作为域的 DNS 服务提供商。有关更多信息，请参阅 [将域添加到 CloudFront 标准分配中](add-domain-existing-distribution.md)。  
**Route 53**  
创建别名资源记录集。有了别名资源记录集，您就不用付款进行 Route 53 查询了。还可以为根域名（example.com）创建别名资源记录集，而 DNS 对于 CNAME 不支持此记录集。有关创建别名资源记录集的说明，请参阅《Amazon Route 53 Developer Guide》**中的 [Routing traffic to an Amazon CloudFront web distribution by using your domain name](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html)。  
（可选）您可以为备用域名创建 HTTPS 记录，以支持将协议协商作为 DNS 查找的一部分（如果客户端支持）。  

**使用 HTTPS 记录创建别名资源记录集（可选）**

   1. 在 CloudFront 分配设置中启用 HTTP/2 或 HTTP/3。有关更多信息，请参阅[支持的 HTTP 版本](DownloadDistValuesGeneral.md#DownloadDistValuesSupportedHTTPVersions)和[更新分配](HowToUpdateDistribution.md)。

   1. 在 Route 53 控制台中，创建别名资源记录集。按照 [Routing traffic to an Amazon CloudFront web distribution by using your domain name](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html) 过程操作。

   1. 在创建别名资源记录集时，请创建记录类型为 **HTTPS** 的别名记录。  
**其他 DNS 服务提供商**  
使用 DNS 服务提供商提供的方法为域添加 CNAME 记录。这一新的 CNAME 记录将来自备用域名（例如，www.example.com）的 DNS 查询重新导向到分配的 CloudFront 域名（例如，d111111abcdef8.cloudfront.net）。有关更多信息，请参阅 DNS 服务提供商提供的文档。  
如果您的域名已有现有的 CNAME 记录，请更新此记录或将其替换为指向分配的 CloudFront 域名的新记录。

1. 使用 `dig` 或类似的 DNS 工具，确认您在上一步创建的 DNS 配置指向分配的域名。

   以下示例显示了 www.example.com 域上的 `dig` 请求以及响应的相关部分。

   ```
   PROMPT> dig www.example.com
   
   ; <<> DiG 9.3.3rc2 <<> www.example.com
   ;; global options:	printcmd
   ;; Got answer:
   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917
   ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0
   
   ;; QUESTION SECTION:
   ;www.example.com.     IN    A
   
   ;; ANSWER SECTION:
   www.example.com. 10800 IN	CNAME	d111111abcdef8.cloudfront.net.
   ...
   ```

   回答部分显示了将针对 www.example.com 的查询路由到 CloudFront 分配域名 d111111abcdef8.cloudfront.net 的 CNAME 记录。如果 `CNAME` 右侧的名称是 CloudFront 分配的域名，则正确配置了 CNAME 记录。如果是其他任何值（如 Amazon S3 存储桶的域名），则未正确配置 CNAME 记录。在这种情况下，请回到步骤 7，纠正 CNAME 记录以指向分配的域名。

1. 通过访问具有您的域名而不是分配的 CloudFront 域名的 URL 来测试备用域名。

1. 在您的应用程序中，更改对象的 URL 以使用您的备用域名而不是 CloudFront 分配的域名。

# 移动备用域名
<a name="alternate-domain-names-move"></a>

如果您尝试向标准分配或分配租户添加备用域名，而该备用域名已与其它资源相关联，则您会收到错误消息。

例如，当您尝试将 www.example.com 添加到标准分配或分配租户，但该备用域名已与其它资源相关联时，您将收到 `CNAMEAlreadyExists` 错误消息（您提供的一个或多个 CNAME 已与其它资源相关联）。

在这种情况下，您可能需要将现有的备用域名从一项资源移到另一项资源。这是*源分配*和*目标分配*。您可以在标准分配和/或分配租户之间移动备用域名。

要移动备用域名，请参阅以下主题：

**Topics**
+ [设置目标标准分配或分配租户](alternate-domain-names-move-create-target.md)
+ [查找源标准分配或分配租户](alternate-domain-names-move-find-source.md)
+ [移动备用域名](alternate-domain-names-move-options.md)

# 设置目标标准分配或分配租户
<a name="alternate-domain-names-move-create-target"></a>

在移动备用域名之前，您必须设置目标资源。这是您要将备用域名移至其中的目标标准分配或分配租户。

------
#### [ Standard distribution ]

**设置目标标准分配**

1. 请求 TLS 证书。此证书包括备用域名作为主题或主题备用域（SAN），或包含涵盖您要移动的备用域名的通配符（\$1）。如果没有，您可以从 AWS Certificate Manager（ACM）或从其它证书颁发机构（CA）请求一个证书并将其导入 ACM。
**注意**  
您必须在美国东部（弗吉尼亚州北部）(`us-east-1`) 区域中请求或导入证书。

   有关更多信息，请参阅《AWS Certificate Manager User Guide》**中的在 AWS Certificate Manager 中 [Request a public certificate using the console](https://docs.aws.amazon.com/acm/latest/userguide/acm-public-certificates.html#request-public-console) 和 [Import a certificate](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html)。

1. 如果您尚未创建目标标准分配，请立即创建一个。作为创建标准分配的一部分，请将证书与该标准分配相关联。有关更多信息，请参阅 [创建分配](distribution-web-creating-console.md)。

   如果您已经有目标标准分配，请将证书与该标准分配相关联。有关更多信息，请参阅 [更新分配](HowToUpdateDistribution.md)。

1. **如果您要在同一个 AWS 账户内移动备用域名，请跳过此步骤。**

   要将备用域名从一个 AWS 账户移到另一个账户，必须在 DNS 配置中创建 TXT 记录。此验证步骤有助于防止未经授权的域转移。CloudFront 使用此 TXT 记录来验证您对备用域名的所有权。

   在 DNS 配置中，创建将备用域名与目标标准分配关联的 DNS TXT 记录。TXT 记录格式可能因域类型而异。
   + 对于子域，请在备用域名前面指定下划线 (`_`)。下面显示了 TXT 记录示例。

     `_www.example.com TXT d111111abcdef8.cloudfront.net`
   + 对于顶级域（或根域），请在域名前面指定下划线和句点 (`_.`)。下面显示了 TXT 记录示例。

     `_.example.com TXT d111111abcdef8.cloudfront.net`

------
#### [ Distribution tenant ]

**设置目标分配租户**

1. 请求 TLS 证书。此证书包括备用域名作为主题或主题备用域（SAN），或包含涵盖您要移动的备用域名的通配符（\$1）。如果没有，您可以从 AWS Certificate Manager（ACM）或从其它证书颁发机构（CA）请求一个证书并将其导入 ACM。
**注意**  
您必须在美国东部（弗吉尼亚州北部）(`us-east-1`) 区域中请求或导入证书。

   有关更多信息，请参阅《AWS Certificate Manager User Guide》**中的在 AWS Certificate Manager 中 [Request a public certificate using the console](https://docs.aws.amazon.com/acm/latest/userguide/acm-public-certificates.html#request-public-console) 和 [Import a certificate](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html)。

1. 如果您尚未创建目标分配租户，请立即创建一个。作为创建分配租户的一部分，请将证书与分配租户相关联。有关更多信息，请参阅 [创建分配](distribution-web-creating-console.md)。

   如果您已经有目标分配租户，请将证书与该分配租户相关联。有关更多信息，请参阅 [添加域和证书（分配租户）](managed-cloudfront-certificates.md#vanity-domain-tls-tenant)。

1. **如果您要在同一个 AWS 账户内移动备用域名，请跳过此步骤。**

   要将备用域名从一个 AWS 账户移到另一个账户，必须在 DNS 配置中创建 TXT 记录。此验证步骤有助于防止未经授权的域转移，并且 CloudFront 使用此 TXT 记录来验证您对备用域名的所有权。

   在 DNS 配置中，创建一条用于将备用域名与目标分配租户关联的 DNS TXT 记录。TXT 记录格式可能因域类型而异。
   + 对于子域，请在备用域名前面指定下划线 (`_`)。下面显示了 TXT 记录示例。

     `_www.example.com TXT d111111abcdef8.cloudfront.net`
   + 对于顶级域（或根域），请在域名前面指定下划线和句点 (`_.`)。下面显示了 TXT 记录示例。

     `_.example.com TXT d111111abcdef8.cloudfront.net`

------

接下来，请参阅以下主题来查找已与备用域名关联的源标准分配或分配租户。

# 查找源标准分配或分配租户
<a name="alternate-domain-names-move-find-source"></a>

在将备用域名从一个分配（标准或租户）移到另一个分配之前，请先查找*源分配*。这是备用域名已关联的资源。在您了解源和目标分配资源的 AWS 账户 ID 后，您可以确定如何移动备用域名。

**备注**  
我们建议您使用 [ListDomainConflicts](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDomainConflicts.html) API 操作，因为此操作同时支持标准分配和分配租户。
[ListConflictingAliases](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListConflictingAliases.html) API 操作仅支持标准分配。

按照以下示例来查找源分配（标准或租户）。

------
#### [ list-domain-conflicts ]

**提示**  
对于标准分配，您必须拥有 `cloudfront:GetDistribution` 和 `cloudfront:ListDomainConflicts` 权限。
对于分配租户，您必须拥有 `cloudfront:GetDistributionTenant` 和 `cloudfront:ListDomainConflicts` 权限。

**使用 `list-domain-conflicts` 来查找源标准分配或分配租户**

1. 使用以下示例中所示的 `list-domain-conflicts` 命令。

   1. 将 *www.example.com* 替换为域名。

   1. 对于 `domain-control-validation-resource`，请指定[您之前设置的](alternate-domain-names-move-create-target.md)目标标准分配或分配租户的 ID。您必须拥有一个与涵盖指定域的证书关联的标准分配或分配租户。

   1. 使用与目标标准分配或分配租户在同一 AWS 账户中的凭证运行此命令。

   **请求**

    此示例指定分配租户。

   ```
   aws cloudfront list-domain-conflicts \
   --domain www.example.com \
   --domain-control-validation-resource "DistributionTenantId=dt_2x9GhoK0TZRsohWzv1b9It8JABC"
   ```

   **响应**

   对于命令输出中的每个域名，您可以看到以下内容：
   + 与域关联的资源类型
   + 资源 ID
   + 拥有资源的 AWS 账户 ID

   资源 ID 和账户 ID 部分隐藏。这使您可以识别属于您账户的标准分配或分配租户，并有助于保护您没有所有权的标准分配或分配租户的信息。

   ```
   {
       "DomainConflicts": [
           {
               "Domain": "www.example.com",
               "ResourceType": "distribution-tenant",
               "ResourceId": "***************ohWzv1b9It8JABC",
               "AccountId": "******112233"
           }
       ]
   }
   ```

   响应列出了与您指定的域名相冲突或重叠的所有域名。

**示例**
   + 如果您指定 *tenant1.example.com*，则响应将包括 tenant1.example.com 和重叠的通配符备用域名（如果存在，即 \$1.example.com）。
   + 如果您指定 *\$1.tenant1.example.com*，则响应将包括 \$1.tenant1.example.com 以及该通配符涵盖的任何备用域名（例如 test.tenant1.example.com、dev.tenant1.example.com 等）。

1. 在响应中，找到您要移动的备用域名的源标准分配或分配租户，并记下 AWS 账户 ID。

1. 将*源*标准分配或分配租户的账户 ID 与您在[上一步](alternate-domain-names-move-create-target.md)中创建*目标*标准分配或分配租户时的账户 ID 进行比较。然后，您可以确定源和目标是否在同一个 AWS 账户中。这有助于您确定如何移动备用域名。

   有关更多信息，请参阅《AWS Command Line Interface Reference》**中的 [https://docs.aws.amazon.com/cli/latest/reference/cloudfront/list-domain-conflicts.html](https://docs.aws.amazon.com/cli/latest/reference/cloudfront/list-domain-conflicts.html) 命令。

------
#### [ list-conflicting-aliases (standard distributions only) ]

**提示**  
您必须对目标标准分配拥有 `cloudfront:GetDistribution` 和 `cloudfront:ListConflictingAliases` 权限。

**使用 `list-conflicting-aliases` 来查找源标准分配**

1. 使用以下示例中所示的 `list-conflicting-aliases` 命令。

   1. 将 *www.example.com* 替换为备用域名，并将 *EDFDVBD6EXAMPLE* 替换为[您之前设置的](alternate-domain-names-move-create-target.md)目标标准分配的 ID。

   1. 使用与目标标准分配在同一 AWS 账户中的凭证运行此命令。

   **请求**

    此示例指定标准分配。

   ```
   aws cloudfront list-conflicting-aliases \
   --alias www.example.com \
   --distribution-id EDFDVBD6EXAMPLE
   ```

   **响应**

   对于命令输出中的每个备用域名，您可以查看与其关联的标准分配的 ID，以及拥有此标准分配的 AWS 账户 ID。标准分配和账户 ID 信息是部分隐藏的，这使您可以识别您拥有的标准分配和账户，并有助于保护您没有所有权的标准分配和账户的信息。

   ```
   {
       "ConflictingAliasesList": {
           "MaxItems": 100,
           "Quantity": 1,
           "Items": [
               {
                   "Alias": "www.example.com",
                   "DistributionId": "*******EXAMPLE",
                   "AccountId": "******112233"
               }
           ]
       }
   }
   ```

   响应列出了与您指定的域名相冲突或重叠的备用域名。

**示例**
   + 如果您指定 *www.example.com*，则响应包括 www.example.com 和重叠的通配符备用域名（\$1.example.com）（如果存在）。
   + 如果您指定 *\$1.example.com*，则响应包括 \$1.example.com 和该通配符涵盖的所有备用域名（例如，www.example.com、test.example.com、dev.example.com 等）。

1. 找到您要移动的备用域名的标准分配，并记下 AWS 账户 ID。将此账户 ID 与您在[上一步](alternate-domain-names-move-create-target.md)中创建目标标准分配的账户 ID 进行比较。然后，您可以确定这两个标准分配是否在同一个 AWS 账户中以及如何移动备用域名。

   有关更多信息，请参阅《AWS Command Line Interface Reference》**中的 [https://docs.aws.amazon.com//cli/latest/reference/cloudfront/list-conflicting-aliases.html](https://docs.aws.amazon.com//cli/latest/reference/cloudfront/list-conflicting-aliases.html) 命令。

------

接下来，请参阅以下主题以移动备用域名。

# 移动备用域名
<a name="alternate-domain-names-move-options"></a>

请根据您的具体情况，从以下方式中选择移动备用域名的方式：

**源分配和目标分配（标准或租户）在同一 AWS 账户中**  
使用 AWS Command Line Interface（AWS CLI）中的 **update-domain-association** 命令来移动备用域名。  
此命令适用于所有同账户内移动，包括当备用域名是顶级域（也称为*根域*，如 example.com）时。

**源分配和目标分配（标准或租户）在不同的 AWS 账户中**  
如果您有权访问源标准分配或分配租户，备用域名*不*是顶级域，并且您尚未使用与该备用域名重叠的通配符，请使用通配符移动备用域名。有关更多信息，请参阅 [使用通配符移动备用域名](#alternate-domain-names-move-use-wildcard)。  
如果您无法访问具有源标准分配或分配租户的 AWS 账户，可以尝试使用 **update-domain-association** 命令移动备用域名。在移动备用域名之前，必须先禁用源标准分配或分配租户。有关其他帮助，请参阅[联系 AWS 支持 以移动备用域名](#alternate-domain-names-move-contact-support)。

**注意**  
您可以使用 **associate-alias** 命令，但此命令仅支持标准分配。请参阅《Amazon CloudFront API Reference》**中的 [AssociateAlias](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_AssociateAlias.html)。

------
#### [ update-domain-association (standard distributions and distribution tenants) ]

**使用 `update-domain-association` 移动备用域名**

1. 使用 `update-domain-association` 命令，如以下示例所示。

   1. 将 *example.com* 替换为备用域名，并指定目标标准分配或分配租户的 ID。

   1. 使用与目标标准分配或分配租户在同一 AWS 账户中的凭证运行此命令。
**注意以下限制**  
除 `cloudfront:UpdateDomainAssociation` 权限外，您还必须拥有更新标准分配的 `cloudfront:UpdateDistribution` 权限。要更新分配租户，您必须拥有 `cloudfront:UpdateDistributionTenant` 权限。
如果源分配和目标分配（标准或租户）在不同的 AWS 账户中，则必须先禁用源，然后才能移动域。
必须按照[设置目标标准分配或分配租户](alternate-domain-names-move-create-target.md)中所述设置目标分配。

   **请求**

   ```
   aws cloudfront update-domain-association \
     --domain "www.example.com" \
     --target-resource DistributionTenantId=dt_9Fd3xTZq7Hl2KABC \
     --if-match E3UN6WX5ABC123
   ```

   **响应**

   ```
   {
       "ETag": "E7Xp1Y3N9DABC",
       "Domain": "www.example.com",
       "ResourceId": "dt_9Fd3xTZq7Hl2KABC"
   }
   ```

   此命令从源标准分配或分配租户中移除备用域名，并将其添加至目标标准分配或分配租户。

1. 完全部署了目标分配后，请更新 DNS 配置，以将域名指向 CloudFront 路由端点。例如，DNS 记录会将您的备用域名 (`www.example.com`) 指向 CloudFront 提供的域名 d111111abcdef8.cloudfront.net。如果目标是分配租户，请指定连接组端点。有关更多信息，请参阅 [将域指向 CloudFront](managed-cloudfront-certificates.md#point-domains-to-cloudfront)。

------
#### [ associate-alias (standard distributions only) ]

**使用 `associate-alias` 移动备用域名**

1. 使用 `associate-alias` 命令，如以下示例所示。

   1. 将 *www.example.com* 替换为备用域名，并将 *EDFDVBD6EXAMPLE* 替换为目标标准分配 ID。

   1. 使用与目标标准分配在同一 AWS 账户中的凭证运行此命令。
**注意以下限制**  
您必须对目标标准分配拥有 `cloudfront:AssociateAlias` 和 `cloudfront:UpdateDistribution` 权限。
如果源和目标标准分配在同一 AWS 账户中，您必须对源标准分配具有 `cloudfront:UpdateDistribution` 权限。
如果源标准分配和目标标准分配在不同的 AWS 账户中，则必须先禁用源标准分配。
必须按照[设置目标标准分配或分配租户](alternate-domain-names-move-create-target.md)中所述设置目标标准分配。

      **请求**

      ```
      aws cloudfront associate-alias \
      --alias www.example.com \
      --target-distribution-id EDFDVBD6EXAMPLE
      ```

      此命令从源标准分配中移除备用域名，并将其移至目标标准分配。

1. 完全部署目标标准分配后，更新您的 DNS 配置以将备用域名的 DNS 记录指向目标标准分配的分配域名。例如，DNS 记录会将您的备用域名 (`www.example.com`) 指向 CloudFront 提供的域名 d111111abcdef8.cloudfront.net。

有关更多信息，请参阅《AWS CLI Command Reference》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudfront/associate-alias.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudfront/associate-alias.html) 命令。

------

## 使用通配符移动备用域名
<a name="alternate-domain-names-move-use-wildcard"></a>

如果源分配与目标分配在不同的 AWS 账户中，并且源分配已启用，您可以使用通配符移动备用域名。

**注意**  
您不能使用通配符移动顶级域（例如 example.com）。如果源分配和目标分配在不同的 AWS 账户中，要移动顶点域，请联系 支持。有关更多信息，请参阅 [联系 AWS 支持 以移动备用域名](#alternate-domain-names-move-contact-support)。

**使用通配符移动备用域名**
**注意**  
此过程涉及对分配的多次更新。在继续下一步之前，请等待每个分配完全部署完最新的更改。

1. 更新目标分配以添加一个通配符备用域名，该域名涵盖您要移动的备用域名。例如，如果您要移动的备用域名是 www.example.com，请将备用域名 \$1.example.com 添加到目标分配中。为此，目标分配上的 SSL/TLS 证书必须包含通配符域名。有关更多信息，请参阅[更新分配](HowToUpdateDistribution.md)。

1. 更新备用域名的 DNS 设置以指向目标分配的域名。例如，如果您要移动的备用域名是 www.example.com，请更新 www.example.com 的 DNS 记录以将流量路由到目标分配的域名（例如 d111111abcdef8.cloudfront.net）。
**注意**  
即使在您更新 DNS 设置之后，备用域名仍由源分配提供服务，因为这是当前配置备用域名的位置。

1. 更新源分配以删除备用域名。有关更多信息，请参阅[更新分配](HowToUpdateDistribution.md)。

1. 更新目标分配以添加备用域名。有关更多信息，请参阅[更新分配](HowToUpdateDistribution.md)。

1. 使用 **dig**（或类似的 DNS 查询工具）验证备用域名的 DNS 记录是否解析为目标分配的域名。

1. （可选）更新目标分配以删除通配符备用域名。

## 联系 AWS 支持 以移动备用域名
<a name="alternate-domain-names-move-contact-support"></a>

如果源分配和目标分配在不同的 AWS 账户中，并且您无权访问源分配的 AWS 账户或无法禁用源分配，您可以联系 支持 来移动备用域名。

**联系 支持 以移动备用域名**

1. 设置目标分配，包括指向目标分配的 DNS TXT 记录。有关更多信息，请参阅[设置目标标准分配或分配租户](alternate-domain-names-move-create-target.md)。

1. [联系 支持](https://console.aws.amazon.com/support/home) 以请求他们验证您是否拥有该域，然后为您将该域移动到新的 CloudFront 分配。

1. 目标分配完全部署后，更新您的 DNS 配置以将备用域名的 DNS 记录指向目标分配的分配域名。

# 删除备用域名
<a name="alternate-domain-names-remove-domain"></a>

如果您要停止将域或子域的流量路由到 CloudFront 分配，请按本节中的步骤更新 DNS 配置和 CloudFront 分配。

请务必从该分配中删除备用域名并更新您的 DNS 配置。当您希望将域名与其他 CloudFront 分配关联时，这有助于防止以后出现问题。如果某个备用域名已经与一个分配关联，则不能将该域名设置为与其他分配关联。

**注意**  
如果您要从此分配中删除备用域名以便能将它添加到其他分配，请按照[移动备用域名](alternate-domain-names-move.md)中的步骤操作。如果您改为执行此处的步骤（用于删除域），然后将域添加到另一个分配，则在一段时间内，域不会链接到新分配，因为 CloudFront 会传播到对边缘站点的更新。<a name="RemovingADomain"></a>

**从分配中删除备用域名**

1. 要开始操作，请将您的域的 Internet 流量路由到不是您的 CloudFront 分配的其他资源（如 Elastic Load Balancing 负载均衡器）。或者，您也可以删除将流量路由到 CloudFront 的 DNS 记录。

   根据您的域的 DNS 服务执行以下操作之一：
   + **如果您使用的是 Route 53**，请更新或删除别名记录或 CNAME 记录。有关更多信息，请参阅[编辑记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-editing.html)或[删除记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-deleting.html)。
   + **如果您使用的是其他 DNS 服务提供商，**请使用 DNS 服务提供商提供的方法来更新或删除将流量引向 CloudFront 的 CNAME 记录。有关更多信息，请参阅 DNS 服务提供商提供的文档。

1. 在更新您的域的 DNS 记录后，请等到更改已传播且 DNS 解析程序正在将流量路由到新资源。您可以通过创建一些在 URL 中使用您的域的测试链接来检查确认该操作完成的时间。

1. 登录到AWS 管理控制台并打开 CloudFront 控制台 ([https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home))，然后更新您的 CloudFront 分配并通过执行以下操作来删除域名：

   1. 为要更新的分配选择 ID。

   1. 在 **General** 选项卡上，选择 **Edit**。

   1. 在**备用域名(CNAME)** 中，删除您不想再用于分配的备用域名（或域名）。

   1. 选择**是，编辑**。

# 在备用域名中使用通配符
<a name="alternate-domain-names-wildcard"></a>

在添加备用域名时，可以在域名开头使用 \$1 通配符，而不是逐个添加子域。例如，如果备用域名为 \$1.example.com，您可以在 URL 中使用以 example.com 结尾的任何域名，例如 www.example.com、product-name.example.com、marketing.product-name.example.com 等。无论域名如何，对象的路径都相同，例如：
+ www.example.com/images/image.jpg
+ product-name.example.com/images/image.jpg
+ marketing.product-name.example.com/images/image.jpg

对于包含通配符的备用域名，请遵循以下要求：
+ 备用域名必须以星号和点 (\$1.) 开头。
+ 您*不能*使用通配符替换子域名的一部分，例如：\$1domain.example.com。
+ 您不能替换某个域名中间的子域名，例如：subdomain.\$1.example.com。
+ 所有备用域名，包括使用通配符的备用域名，必须涵盖在证书的使用者备用名称 (SAN) 中。

通配符备用域名（例如 \$1.example.com）可以包含其他正在使用的备用域名，例如 example.com。