将托管区域迁移到其他Amazon账户 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

将托管区域迁移到其他Amazon账户

如果您要将托管区域从Amazon帐户添加到另一个帐户,您可以编程方式列出旧托管区域中的记录,编辑输出,然后使用编辑后的输出以编程方式在新托管区域中创建记录。请注意以下几点:

  • 如果您只有几条记录,也可使用 Route 53 控制台在新的托管区域创建记录。有关更多信息,请参阅 使用 Amazon Route 53 控制台创建记录

  • 一些过程使用 Amazon Command Line Interface (Amazon CLI)。您还可以使用其中一个AmazonSDK、Amazon Route 53 API 或Amazon Tools for Windows PowerShell. 在本主题中,我们使用 Amazon CLI,因为这对于少量托管区域来说更简单。

  • 您也可使用此过程在与现有托管区域的名称不同但记录相同的新托管区域中创建记录。

  • 您无法迁移将流量路由到流量策略实例的别名记录。

第 1 步:安装或升级 Amazon CLI

有关下载、安装和配置Amazon CLI,请参阅Amazon Command Line Interface用户指南.

注意

配置 CLI,以便您能在同时使用创建了托管区域的账户和要将托管区域迁移到的账户时使用它。有关更多信息,请参阅 。配置中的Amazon Command Line Interface用户指南

如果您已经使用了Amazon CLI,建议您升级到最新版本的 CLI,以便 CLI 命令能够支持最新的 Route 53 功能。

第 2 步:创建新的托管区域

下面的过程介绍如何使用 Route 53 控制台创建要迁移到的托管区域。

注意

Route 53 为新托管区域分配一组新名称服务器 (4 台)。将托管区域迁移到另一个托管区域之后Amazon帐户中,您需要更新域注册以使用新托管区域的名称服务器。在此过程的后面,我们将提示您此步骤。

使用其他账户创建新的托管区域

  1. 登录到Amazon Web Services Management Console通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/.

    使用要将托管区域迁移到的账户的账户凭证登录。

  2. 创建一个托管区域。有关更多信息,请参阅 创建公有托管区域

  3. 记下托管区域 ID。在某些情况下,您在此过程的后面需要使用此信息。

  4. 从 Route 53 控制台注销。

第 3 步:创建包含要迁移的记录的文件

要将记录从一个托管区域迁移到另一个托管区域,请创建一个包含要迁移的记录的文件,编辑此文件,然后使用编辑后的文件在新的托管区域中创建记录。执行以下过程可创建此文件。

创建包含要迁移的记录的文件

  1. 登录到Amazon Web Services Management Console通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/.

    使用创建了要迁移的托管区域的账户的账户凭证登录。

  2. 获取要迁移的托管区域的托管区域 ID:

    1. 在导航窗格中,选择 Hosted zones

    2. 查找要迁移的托管区域。如果您有很多托管区域,则可以选择确切域名并输入托管区域的名称,然后按Enter来筛选列表。

    3. 获取 Hosted zone ID (托管区域 ID) 列的值。

  3. 运行以下命令:

    aws route53 list-resource-record-sets --hosted-zone-id hosted-zone-id > path-to-output-file

    请注意以下几点:

    • 对于 hosted-zone-id,指定您在此过程的步骤 2 中获取的托管区域 ID。

    • 对于 path-to-output-file,指定要在其中保存输出的目录路径和文件名。

    • > 字符将输出发送到指定文件。

    • Amazon CLI 将自动处理包含 100 条以上记录的托管区域的分页。有关更多信息,请参阅 。使用Amazon命令行界面的分页选项中的Amazon Command Line Interface用户指南.

      如果使用其他编程方法列出记录,例如,AmazonSDK,您每页结果最多可以获取 100 条记录。如果托管区域包含 100 条以上的记录,您必须提交多个请求才能列出所有记录。

    • 要在早于 6.0 的 Windows PowerShell 版本中运行该命令,请使用以下语法:

      aws route53 list-resource-record-sets --hosted-zone-id hosted-zone-id | Out-File path-to-output-file -Encoding utf8

    例如,如果您在 Windows 计算机上运行 Amazon CLI,则可运行以下命令:

    aws route53 list-resource-record-sets --hosted-zone-id ZOLDZONE12345 > c:\temp\list-records-ZOLDZONE12345.txt

    如果您在装有早于 6.0 的 Windows PowerShell 版本的 Windows 计算机上运行 Amazon CLI,则可以运行以下命令:

    aws route53 list-resource-record-sets --hosted-zone-id ZOLDZONE12345 | Out-File c:\temp\list-records-ZOLDZONE12345.txt -Encoding utf8
  4. 创建此输出的副本。在新的托管区域中创建记录后,建议您在新的托管区域上运行 Amazon CLI list-resource-record-sets 命令并比较两个输出以确保已创建所有记录。

第 4 步:编辑要迁移的记录

您在上一个过程中创建的文件的格式类似于用于在新托管区域中创建记录的 Amazon CLI change-resource-record-sets 命令所需的格式。但需要对此文件做一些编辑。您必须将一些更改应用于每条记录。您可以使用适用的文本编辑器中的“搜索并替换”功能来进行这些更改。

打开您在第 3 步:创建包含要迁移的记录的文件中创建的文件的副本,然后进行以下更改:

  • 删除输出顶部的前两行:

    { "ResourceRecordSets": [
  • 删除与 NS 和 SOA 记录相关的行。新的托管区域已具有这些记录。

  • 可选— 添加Comment元素。

  • 添加 Changes 元素。

  • 对于每条记录,添加 ActionResourceRecordSet 元素。

  • 根据需要添加左右大括号 ({ }) 以使 JSON 代码有效。

    注意

    您可以使用 JSON 验证程序来验证所有大括号和方括号是否位于正确的位置。要查找联机 JSON 验证程序,请在 Internet 上搜索“json validator”。

  • 如果托管区域包含任何引用同一托管区域中的其他记录的别名,请进行以下更改:

    • 将托管区域 ID 更改为新托管区域的 ID。

      重要

      如果别名记录指向另一个资源(例如负载均衡器),请更新托管区域ID设置为资源本身的托管区域 ID,而不是托管区域ID的域。托管区域ID可以从AmazonCON鞋底创建了资源的位置。

    • 将别名记录移至文件的底部。Route 53 必须先创建别名记录引用的记录,然后才能创建别名记录。

      重要

      如果一条或多条别名记录引用其他别名记录,则作为别名目标的记录在文件中必须位于引用别名记录之前。例如,如果 alias.example.comalias.alias.example.com 的别名目标,则 alias.example.com 必须在文件中出现在后者之前。

    • 删除将流量路由到流量策略实例的任何别名记录。记下这些记录,以便您稍后能重新创建它们。

  • 您可以使用此过程在具有其他名称的托管区域中创建记录。对于输出中的每条记录,请将 Name 元素的域名部分更改为新托管区域的名称。例如,如果您列出 example.com 托管区域中的记录,并且要在 example.net 托管区域中创建记录,请将每个记录名称的 example.com 部分更改为 example.net:

    从:

    • "Name": "example.com."

    • "Name": "www.example.com."

    目的:

    • "Name": "example.net."

    • "Name": "www.example.net."

以下示例显示了 example.com 托管区域的记录被编辑后的版本。红色的斜体文本是新版本:

{ "Comment": "string", "Changes": [ { "Action": "CREATE", "ResourceRecordSet":{ "ResourceRecords": [ { "Value": "192.0.2.4" }, { "Value": "192.0.2.5" }, { "Value": "192.0.2.6" } ], "Type": "A", "Name": "route53documentation.com.", "TTL": 300 } }, { "Action": "CREATE", "ResourceRecordSet":{ "AliasTarget": { "HostedZoneId": "Z3BJ6K6RIION7M", "EvaluateTargetHealth": false, "DNSName": "s3-website-us-west-2.amazonaws.com." }, "Type": "A", "Name": "www.route53documentation.com." } } ] }

第 5 步:将大文件拆分成多个小文件

如果您有大量记录或者您的记录包含大量值 (例如,大量 IP 地址),您可能需要将文件拆分为多个小文件。以下是最大数量:

  • 每个文件最多可包含 1000 条记录。

  • 所有 Value 元素中的值的最大组合长度为 32000 个字节。

第 6 步:在新的托管区域中创建记录

要在新的托管区域中创建记录,请使用以下 Amazon CLI 命令:

aws route53 change-resource-record-sets --hosted-zone-id id-of-new-hosted-zone --change-batch file://path-to-file-that-contains-records

例如:

aws route53 change-resource-record-sets --hosted-zone-id ZNEWZONE1245 --change-batch file://c:/temp/change-records-ZNEWZONE1245.txt

如果您已删除将流量路由到流量策略实例的任何别名记录,请使用 Route 53 控制台重新创建它们。有关更多信息,请参阅 使用 Amazon Route 53 控制台创建记录

步骤 7:比较旧托管区域和新托管区域中的记录

要确认您已在新托管区域中成功创建所有记录,建议您列出新托管区域中的记录,并将输出与旧托管区域中的记录列表进行比较。为此,请执行以下步骤。

比较旧托管区域和新托管区域中的记录

  1. 运行以下命令:

    aws route53 list-resource-record-sets --hosted-zone-id hosted-zone-id > path-to-output-file

    指定以下值:

    • 对于 hosted-zone-id,指定新托管区域的 ID。

    • 对于 path-to-output-file,指定要在其中保存输出的目录路径和文件名。使用与您在第 3 步:创建包含要迁移的记录的文件中使用的文件名不同的文件名。使用其他文件名可确保新文件不会覆盖旧文件。

    • > 字符将输出发送到指定文件。

    例如,如果您使用的是 Windows 计算机,则可运行以下命令:

    aws route53 list-resource-record-sets --hosted-zone-id ZNEWZONE67890 > c:\temp\list-records-ZNEWZONE67890.txt
  2. 将此输出与来自第 3 步:创建包含要迁移的记录的文件的输出进行比较。

    除了 NS 和 SOA 记录的值以及您在第 4 步:编辑要迁移的记录中所做的任何更改 (如不同的托管区域 ID 或域名),两个输出应相同。

  3. 如果新托管区域中的记录与旧托管区域中的记录不匹配,则可执行下列操作之一:

步骤 8:将域注册更新为使用新托管区域的名称服务器

在新托管区域中创建记录后,将域注册的名称服务器更改为使用新托管区域的名称服务器。

重要

如果您未将域注册更新为使用新托管区域的名称服务器,则 Route 53 将继续使用旧托管区域来路由域的流量。如果您在未更新域注册的名称服务器的情况下删除旧托管区域,则域将在 Internet 上变得不可用。如果您添加、更新或删除新托管区域中的记录而未更新域注册的名称服务器,则不会基于这些更改路由流量。

有关更多信息,请参阅 将 Amazon Route 53 作为现有域的 DNS 服务

注意

无论您使用此过程迁移正在使用的域的 DNS 服务还是对不活动域使用此过程,都可跳过以下步骤,因为您已创建新的托管区域并在该托管区域中创建记录:

  • 第 1 步:从当前 DNS 服务提供商处获取您的当前 DNS 配置

  • 第 2 步:创建托管区域

  • 第 3 步:创建记录

步骤 9:等待 DNS 解析程序开始使用新托管区域

如果您的域正在使用中 (例如,如果用户正在使用该域名浏览网站或访问 Web 应用程序),则 DNS 解析程序已缓存当前 DNS 服务提供商所提供的名称服务器的名称。已在几分钟前缓存该信息的 DNS 解析程序会将其保存最多两天。

注意

如果您在新托管区域中创建旧托管区域中未出现的任何记录,则在解析程序开始使用新托管区域的名称服务器之前,您的用户将无法使用新记录访问您的资源。例如,假设您在新托管区域中创建应将 Internet 流量路由到您的网站的记录 test.example.com。如果旧托管区域中未出现此记录,则在解析程序开始使用新托管区域之前,您无法在 Web 浏览器中输入 test.example.com。

确保将托管区域迁移到另一Amazon帐户已完成后再删除旧托管区域,请在将域注册更新为使用新托管区域的名称服务器后等待两天。为期两天的 TTL 过期且解析程序请求您的域的名称服务器后,解析程序将获取当前名称服务器。

步骤 10:(可选)删除旧托管区域

如果您确信您不再需要旧托管区域,则可选择将其删除。

重要

在将域注册更新为使用新托管区域的名称服务器后的至少 48 小时内,不要删除旧托管区域或该托管区域中的任何记录。如果在 DNS 解析程序停止使用旧托管区域中的记录之前删除该托管区域,则在解析程序开始使用新托管区域之前,您的域在 Internet 上不可用。

托管区域必须为空,默认 NS 和 SOA 记录除外。如果旧托管区域包含大量记录,则使用控制台删除这些记录可能需要花费很长时间。一种选择是执行以下步骤:

  1. 第 4 步:编辑要迁移的记录为编辑后的文件创建另一个副本。

  2. 在文件副本中,将每条记录的 "Action": "CREATE" 更改为 "Action": "DELETE"

  3. 使用以下 Amazon CLI 命令删除记录:

    aws route53 change-resource-record-sets --hosted-zone-id id-of-old-hosted-zone --change-batch file://path-to-file-that-contains-records
    重要

    请确保您为托管区域 ID 指定的值为旧托管区域的 ID,而不是新托管区域的 ID。

  4. 删除任何剩余记录和托管区域:

    1. 登录到Amazon Web Services Management Console通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/.

      使用创建了旧托管区域的账户的账户凭证登录。

    2. 在导航窗格中,选择 Hosted zones

    3. 选择旧托管区域的名称。如果您有很多托管区域,则可以选择确切域名并输入托管区域的名称,然后按Enter来筛选列表。

    4. 如果托管区域包含默认 NS 和 SOA 记录之外的任何记录 (如将流量路由到流量策略实例的别名记录),请选中相应复选框,然后选择Delete.

    5. 在导航窗格中,选择 Hosted zones

    6. 在托管区域列表中,选择要删除的托管区域所对应的单选按钮。

    7. 选择 Delete