

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

# 将子域的 DNS 服务迁移到 Amazon Route 53，但不迁移父域
<a name="MigratingSubdomain"></a>

您可以迁移一个子域以便使用 Amazon Route 53 作为 DNS 服务，而无需从另一个 DNS 服务迁移父域。

此过程有以下基本步骤：

1. [弄清](#decide-procedure-migrate-subdomain)您是否应使用此过程。

1. [为子域创建 Route 53 托管区域](#CreateZoneMigratedSubdomain)。

1. [从父域的当前 DNS 服务提供商那里获取当前 DNS 配置](#GetParentDomainResourceRecords)。

1. 将子域的[记录添加](#AddMigratedSubdomainRecords)到您的 Route 53 托管区域。

1. *仅 API：*[确认您的更改已传播](#MigratingSubdomainCheckStatus)到所有 Route 53 DNS 服务器。
**注意**  
目前，验证更改是否已传播的唯一方式是使用 [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html) API 操作。更改通常在 60 秒内传播到所有 Route 53 名称服务器。

1. [添加子域的名称服务器记录，更新父域的 DNS 服务提供商的 DNS 配置](#UpdateOldDNS)。

## 确定使用哪些过程来创建子域
<a name="decide-procedure-migrate-subdomain"></a>

本主题中的过程说明如何执行不常见的操作。如果您已经在使用 Route 53 作为域的 DNS 服务，并且仅希望将某个子域（例如 www.example.com）的流量路由到您的资源（例如，运行在 EC2 实例上的 Web 服务器），请参阅 [路由子域的流量](dns-routing-traffic-for-subdomains.md)。

*仅*当您在在某个域（如 example.com）使用其它 DNS 服务，并且您希望开始为该域的现有子域使用 Route 53 作为 DNS 服务（例如 www.example.com）时才使用此过程。

## 为子域创建托管区域
<a name="CreateZoneMigratedSubdomain"></a>

如果您想将子域从另一个 DNS 服务迁移到 Amazon Route 53，但不想迁移父域，则可以首先为子域创建一个托管区域。Route 53 将有关您的子域的信息存储到托管区域中。

有关如何使用 Route 53 控制台创建托管区域的信息，请参阅 [创建公有托管区域](CreatingHostedZone.md)。

## 从 DNS 服务提供商那里获取当前的 DNS 配置
<a name="GetParentDomainResourceRecords"></a>

为了简化将现有子域迁移到 Route 53 的过程，请从当前为域提供服务的 DNS 服务提供商那里获取域的当前 DNS 配置。您可以根据此信息将 Route 53 配置为子域的 DNS 服务。

您要求的内容和格式取决于您目前正在使用哪家公司作为您的 DNS 服务提供商。理想情况下，它们将为您提供一个区域文件，其中包含有关当前配置中所有记录的信息。（记录会告知 DNS 您希望如何针对您的域和子域路由流量。例如，有人在 Web 浏览器中输入您的域名时，您是希望将流量路由到您数据中心中的 Web 服务器、Amazon EC2 实例、CloudFront 分配，还是其它某个位置？） 如果您可以从当前 DNS 服务提供商那里获取区域文件，可以编辑区域文件，删除您不想迁移到 Amazon Route 53 的记录。然后，将其余的记录导入您的 Route 53 托管区域，从而大大简化该过程。尝试询问您的当前 DNS 服务提供商的客户支持，如何获取*区域文件*或*记录列表*。

## 创建记录
<a name="AddMigratedSubdomainRecords"></a>

以您从当前 DNS 服务提供商那里获取的记录作为起点，在为子域创建的 Amazon Route 53 托管区域中创建相应的记录。在您向 Route 53 委派子域责任后，在 Route 53 中创建的记录将成为 DNS 所使用的记录，具体解释见本过程稍后的 [用子域的名称服务器记录更新 DNS 服务](#UpdateOldDNS)。

**重要**  
请勿在 Route 53 托管区域中创建其它名称服务器 (NS) 或授权起始点 (SOA) 记录，且请勿删除现有的 NS 和 SOA 记录。

要使用 Route 53 控制台创建记录，请参阅 [使用记录](rrsets-working-with.md)。要使用 Route 53 API 创建记录，请使用 `ChangeResourceRecordSets`。有关更多信息，请参阅 *[Amazon Route 53 API 参考](https://docs.aws.amazon.com/Route53/latest/APIReference/)*中的 [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html)。

## 检查更改状态（仅限 API）
<a name="MigratingSubdomainCheckStatus"></a>

创建新的托管区域和更改记录需要一定时间才能传播到 Route 53 DNS 服务器。如果您使用 [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html) 创建记录，则可以使用 `GetChange` 操作确定更改是否已传播。（`ChangeResourceRecordSets` 返回 `ChangeId` 的值，您可将该值包含在后续的 `GetChange` 请求中。如果您使用控制台创建记录，则 `ChangeId` 不可用。） 有关更多信息，请参阅 *Amazon Route 53 API 参考*中的 [GET GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html)。

**注意**  
更改通常在 60 秒内传播到所有 Route 53 名称服务器。

## 用子域的名称服务器记录更新 DNS 服务
<a name="UpdateOldDNS"></a>

对 Amazon Route 53 记录的更改传播后（请参阅 [检查更改状态（仅限 API）](#MigratingSubdomainCheckStatus)），请添加子域的 NS 记录来更新父域的 DNS 服务。这称为向 Route 53 委派子域的责任。例如，假设父域 example.com 通过另一个 DNS 服务托管，而您要将子域 test.example.com 迁移到 Route 53。您必须为 test.example.com 创建一个托管区域，并使用 Route 53 分配给 test.example.com 的新托管区域的 NS 记录更新 example.com 的 DNS 服务。

请执行以下过程。

1. 使用您的 DNS 服务提供的方法备份父域的区域文件。

1. 如果域以前的 DNS 服务提供商有办法为其名称服务器更改 TTL 设置，则我们建议您将设置改为 900 秒。这样会限制客户端请求尝试使用过时的名称服务器来解析域名的时间。如果当前 TTL 是 172800 秒 (两天，这是常见的默认设置)，则您仍需要等待两天，解析程序和客户端才能停止使用以前的 TTL 缓存 DNS 记录。TTL 设置到期后，您可以安全地删除存储于先前的提供商的记录，并仅对 Route 53 进行更改。

1. 在 Route 53 控制台中，获取您的 Route 53 托管区域的名称服务器：

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

   1. 在导航窗格中，选择 **Hosted zones**（托管区域）。

   1. 在 **Hosted zones**（托管区域）页面上，选择托管区域的单选按钮（不是名称），然后选择 **View details**（查看详细信息）。

   1. 在托管区域的详细信息页面上，选择 **Hosted zone details**（托管区域详细信息）。

   1. 记下为 **Name servers（名称服务器）**列出的四台服务器。

   此外，也可以使用 `GetHostedZone` 操作。有关更多信息，请参阅 *Amazon Route 53 API 参考*中的 [GetHostedZone](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetHostedZone.html)。

1. 使用父域的 DNS 服务提供的方法，将子域的 NS 记录添加到父域的区域文件。为 NS 记录指定与子域相同的名称。对于 NS 记录中的值，指定四个与您在步骤 2 中创建的托管区域关联的 Route 53 名称服务器。请注意，不同的 DNS 服务使用不同的术语。您可能需要联系您的 DNS 服务技术支持来了解如何执行此步骤。
**重要**  
不要将授权起始点 (SOA) 记录添加到父域的区域文件中。因为子域将使用 Route 53，父域的 DNS 服务对子域不具权限。  
如果您的 DNS 服务为子域自动添加了一个 SOA 记录，请删除子域的该记录。但是，不要删除父域的该 SOA 记录。

   根据父域的名称服务器的 TTL 设置的不同，传播对 DNS 解析程序的更改可能需要 48 小时或更长的时间。在此期间，DNS 解析程序可能仍使用父域 DNS 服务的名称服务器应答请求。此外，客户端计算机的缓存中可能还是子域以前的名称服务器。

1. 在域注册商的 TTL 设置到期后 (请参阅步骤 2)，从父域的区域文件中删除以下记录：
   + 您添加到 Route 53 中的记录，如 [创建记录](#AddMigratedSubdomainRecords) 中所述。
   + 您的 DNS 服务的 NS 记录。当您完成删除以上 NS 记录后，区域文件中仅有的 NS 记录将是您在步骤 4 中创建的 NS 记录。