

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將託管區域遷移至不同的 AWS 帳戶
<a name="hosted-zones-migrating"></a>

將託管區域遷移至不同的 時 AWS 帳戶，請遵循這些建議步驟。

這些步驟最適合不常變更記錄的託管區域。對於經常更新記錄的託管區域，請考慮下列事項：
+ 請勿在遷移期間更新任何資源記錄。
+ 在轉移委派之後，在舊託管區域和新託管區域中發佈資源記錄變更。

**先決條件**  
安裝或升級 AWS CLI：

如需有關下載、安裝和設定 的資訊 AWS CLI，請參閱 [AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

**注意**  
設定 CLI；當您使用建立託管區域的帳戶和要將託管區域遷移至其中的目標帳戶時，會用到。如需詳細資訊，請參閱 *AWS Command Line Interface 使用者指南*中的[設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

如果您已經在使用 AWS CLI，我們建議您升級至最新版本的 CLI，以便 CLI 命令支援最新的 Route 53 功能。

**Topics**
+ [步驟 1：準備遷移](#hosted-zones-migrating-prepare)
+ [步驟 2：建立新的託管區域](#hosted-zones-migrating-create-hosted-zone)
+ [步驟 3：（選用） 遷移運作狀態檢查](#hosted-zones-migrating-health-checks)
+ [步驟 4：將記錄從舊託管區域遷移至新的託管區域](#hosted-zones-migrating-old-to-new)
+ [步驟 5：比較舊託管區域中的記錄](#hosted-zones-migrating-compare)
+ [步驟 6：更新網域註冊以使用新託管區域的名稱伺服器](#hosted-zones-migrating-update-domain)
+ [步驟 7：將 NS 記錄的 TTL 變更回較高的值](#hosted-zones-migrating-change-ttl)
+ [步驟 8：重新啟用 DNSSEC 簽署並建立信任鏈 （如果需要）](#hosted-zones-migrating-enable-dnssec)
+ [步驟 9：（選用） 刪除舊託管區域](#hosted-zones-migrating-delete-old-hosted-zone)

## 步驟 1：準備遷移
<a name="hosted-zones-migrating-prepare"></a>

準備步驟可協助您將遷移託管區域的相關風險降至最低。

**1. 監控區域可用性**  
您可以監控該區域在您網域名稱中的可用性。這可協助您解決可能導致復原遷移的任何問題。您可以使用 CloudWatch 或查詢記錄來監控大部分流量的網域名稱。如需設定查詢日誌記錄的詳細資訊，請參閱 [監控 Amazon Route 53](monitoring-overview.md)。

可以透過 Shell 指令碼或透過第三方服務進行監控。不過，它不應該是判斷是否需要轉返的唯一訊號，因為您也可能因為網域無法使用而收到客戶的意見回饋。

**2. 降低 TTL 設定**  
記錄的 TTL (存留時間) 設定指定您希望 DNS 解析程式快取記錄和使用快取資訊的時間。當 TTL 過期，解析程式會向網域的 DNS 服務提供者傳送另一個查詢以取得最新資訊。

NS 記錄的典型 TTL 設定為 172800 秒或兩天。NS 記錄列出網域名稱系統 (DNS) 可用來取得有關如何路由網域流量的資訊的名稱伺服器。使用您目前的 DNS 服務提供者和 Route 53 降低 NS 記錄的 TTL，可在遷移 DNS 到 Route 53 時發現問題時，減少網域的停機時間。如果未降低 TTL，您的網域可能會在出現問題時最多兩天內在網際網路上無法使用。

**降低 TTL**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/) 開啟 Route 53 主控台。

1. 在導覽窗格中選擇**託管區域**。

1. 選擇託管區域的名稱。

1. 選擇 NS 記錄，然後在**記錄詳細資訊**窗格中選擇**編輯記錄**。

1. 變更 **TTL (Seconds) (TTL (秒))** 的值。我們建議您指定介於 60 秒和 900 秒 (15 分鐘) 之間的值。

1. 選擇**儲存**。

**3. 從父區域移除 DS 記錄 （如果您已設定 DNSSEC)**  
如果您已為網域設定 DNSSEC，請先從父區域移除委派簽署人 (DS) 記錄，然後再將網域遷移至 Route 53。

如果父區域是透過 Route 53 託管，請參閱 [刪除網域的公開金鑰](domain-configure-dnssec.md#domain-configure-dnssec-deleting-keys) 以取得詳細資訊。如果父區域託管在另一個註冊商上，請聯絡他們以移除 DS 記錄。

Route 53 目前不支援遷移 DNSSEC 設定。因此，您需要從父區域移除 DS 記錄，以停用遷移前針對網域執行的 DNSSEC 驗證。遷移之後，您可以在新的託管區域設定 DNSSEC，並將個別的 DS 記錄新增至父區域，以重新啟用 DNSSEC 驗證。

**4. 確定沒有其他持續的操作依賴遷移託管區域**  
某些操作將依賴遷移託管區域中的 DNS 解析，例如，TLS/SSL 憑證續約程序可能需要變更 DNS 記錄，提供者將嘗試解析 DNS 記錄作為驗證方法。在遷移之前，您應該確保沒有發生其他操作，以避免託管區域遷移的意外影響。

## 步驟 2：建立新的託管區域
<a name="hosted-zones-migrating-create-hosted-zone"></a>

在您要遷移託管區域的目標帳戶中建立新的託管區域。

選擇標籤以取得 AWS CLI 或 主控台的指示。
+ [CLI](#migrate-hz-cli)
+ [主控台](#migrate-hz-console)

------
#### [ CLI ]

輸入以下命令：

```
aws route53 create-hosted-zone \ 
            --name $hosted_zone_name \ 
            --caller-reference $unique_string
```

如需詳細資訊，請參閱 [create-hosted-zone](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/route53/create-hosted-zone.html)。

------
#### [ Console ]<a name="hosted-zones-migrating-create-hosted-zone-procedure"></a>

**使用不同帳戶建立新的託管區域**

1. 登入 AWS 管理主控台 並開啟 Route 53 主控台，網址為 https：//[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

   使用您要將託管區域遷移至其中的目標帳戶登入資料來登入。

1. 建立託管區域。如需詳細資訊，請參閱[建立公有託管區域](CreatingHostedZone.md)。

1. 記下託管區域 ID。在部分情況下，您會於稍後程序中需要這項資訊。

1. 登出 Route 53 主控台。

同時降低新區域中的 NS TTL，類似於準備步驟 1 中的降低 TTL 設定，降低 TTL 設定。

------

## 步驟 3：（選用） 遷移運作狀態檢查
<a name="hosted-zones-migrating-health-checks"></a>

您可以將新帳戶中的 DNS 記錄與要遷移之帳戶的 Route 53 運作狀態檢查建立關聯。若要遷移 Route 53 運作狀態檢查，您需要在新帳戶中使用與現有帳戶相同的組態建立新的運作狀態檢查。如需詳細資訊，請參閱[建立 Amazon Route 53 運作狀態檢查](dns-failover.md)。

## 步驟 4：將記錄從舊託管區域遷移至新的託管區域
<a name="hosted-zones-migrating-old-to-new"></a>

您可以使用 主控台或 ，將記錄從 遷移 AWS 帳戶 到另一個 AWS CLI。

------
#### [ Console ]

如果您的區域只包含一些記錄，您可以考慮使用 Route 53 主控台列出舊區域中的記錄、記下記錄，並在新區域中建立記錄。如果您已在 中遷移運作狀態檢查[步驟 3：（選用） 遷移運作狀態檢查](#hosted-zones-migrating-health-checks)，當您在新的託管區域中建立記錄時，應該指定新的運作狀態檢查 ID。如需詳細資訊，請參閱下列主題：
+ [列出記錄](resource-record-sets-listing.md)
+ [使用 Amazon Route 53 主控台來建立記錄](resource-record-sets-creating.md)
+ [設定 DNS 備援](dns-failover-configuring.md)

您也應該降低新區域中的 NS TTL，類似於步驟 1 中的降低 TTL 設定。

------
#### [ CLI ]

如果您的區域包含大量記錄，您可以匯出要遷移至檔案的記錄、編輯檔案，然後使用編輯過的檔案在新的託管區域中建立記錄。下列程序使用 AWS CLI 命令，但第三方工具也可用於此目的。<a name="hosted-zones-migrating-create-file-procedure"></a>

****

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* 中，指定您想要儲存輸出的目錄路徑和檔案名稱。
   + `>` 字元會將輸出傳送到指定的檔案。
   +  AWS CLI 會自動處理包含超過 100 筆記錄之託管區域的分頁。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[使用 AWS 命令列界面的分頁選項](https://docs.aws.amazon.com/cli/latest/userguide/pagination.html)。

     如果您使用其他程式設計方法來列出記錄，例如其中一個 AWS SDKs，則每頁結果最多可以取得 100 筆記錄。如果託管區域包含超過 100 個記錄，您必須提交多個請求以列出所有記錄。

   建立此輸出的副本。在新的託管區域中建立記錄後，建議您在新的託管區域上執行 AWS CLI `list-resource-record-sets`命令，並比較兩個輸出，以確保已建立所有記錄。

1. 編輯您要遷移的記錄。

   編輯匯出的檔案，然後才能與 `change-resource-record-sets`命令搭配使用。您可以在文字編輯器中使用搜尋和取代函數進行這些變更。
**注意**  
下列步驟說明使用文字編輯器手動編輯。進階使用者可以使用程式設計工具自動化這些轉換，例如 jq、Python 或其他指令碼語言。

   開啟您在此程序步驟 1 中建立的檔案副本，其中包含您要遷移的記錄，並進行下列變更：
   + 將檔案頂端的 ResourceRecordSets 元素取代為 `Changes`元素。
   + 選用 – 新增`Comment`元素。
   + 刪除與託管區域名稱的 NS 和 SOA 記錄相關的行。新的託管區域已有這些記錄。
   + 對於每個記錄，新增 `Action`和 `ResourceRecordSets`元素，視需要新增開啟和關閉括號 `{ }` ()，使 JSON 程式碼有效。
**注意**  
您可以使用 JSON 驗證程式，以驗證所有大括號和括號都位置正確。若要尋找線上 JSON 驗證器，請在瀏覽器中搜尋「JSON 驗證器」。
   + 如果託管區域包含任何別名，其參考相同託管區域中的其他記錄，請進行以下變更：
     + 將託管區域 ID 變更為新託管區域的 ID。
**重要**  
如果別名記錄指向另一個資源，例如負載平衡器，請勿將託管區域 ID 變更為網域的託管區域 ID。如果您不小心變更託管區域 ID，請將託管區域 ID 復原至資源本身的託管區域 ID，而不是網域的託管區域 ID。您可以在建立資源的 AWS 主控台中找到資源託管區域 ID。
     + 將別名記錄移至檔案底部。Route 53 必須先建立別名記錄所要參考的記錄，之後才能建立別名記錄。
**重要**  
如果一或多個別名記錄會參考其他的別名記錄，則別名的目標記錄必須比參考的別名記錄先在檔案中出現。例如，如果 `alias.example.com` 是 `alias.alias.example.com` 的別名目標，則 `alias.example.com` 必須先在檔案中出現。
     + 刪除任何會將流量路由到流量政策執行個體的別名記錄。記下這些記錄，以便稍後可以重新建立。
   + 如果您在 中遷移了運作狀態檢查[步驟 3：（選用） 遷移運作狀態檢查](#hosted-zones-migrating-health-checks)，請將記錄變更為與新建立的運作狀態檢查 IDs建立關聯。

   以下範例顯示 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."
               }
           }
       ]
   }
   ```

1. 將大型檔案分割成較小的檔案

   如果您有許多記錄，或是您的記錄有許多值 (例如許多 IP 地址)，您可能需要將檔案分成較小的檔案。最大值為：
   + 每個檔案最多可包含 1,000 筆記錄。
   + 所有 `Value` 元素中的值組合最大長度為 32,000 位元組。

1. 在新的託管區域中建立記錄

   輸入下列 CLI：

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

   指定下列值：
   + 針對 `new-hosted-zone-id`，指定新託管區域的 ID。
   + 針對 `path-to-file-that-contains-records`，指定您在先前步驟中編輯的目錄路徑和檔案名稱。

   如果您已刪除任何會將流量路由到流量政策執行個體的別名記錄，請使用 Route 53 主控台重新建立這些別名記錄。如需詳細資訊，請參閱[使用 Amazon Route 53 主控台來建立記錄](resource-record-sets-creating.md)。

------

## 步驟 5：比較舊託管區域中的記錄
<a name="hosted-zones-migrating-compare"></a>

若要確認您已成功在新的託管區域中建立所有記錄，請輸入下列 CLI 命令來列出新託管區域中的記錄，並將輸出與舊託管區域中的記錄清單進行比較。

```
aws route53 list-resource-record-sets \
            --hosted-zone-id new-hosted-zone-id \
            --output json > path-to-output-file
```

指定下列值：
+ 針對 `new-hosted-zone-id`，指定新託管區域的 ID。
+ 針對 `path-to-output-file`，指定您要儲存輸出的目錄路徑和檔案名稱。使用與您在步驟 4 中使用的檔案名稱不同的檔案名稱。

  `>` 字元會將輸出傳送到指定的檔案。

比較輸出與步驟 4 的輸出。除了 NS 和 SOA 記錄的值，以及您在步驟 4 中所做的任何變更 （例如不同的託管區域 IDs或網域名稱） 之外，這兩個輸出應該是相同的。

如果新託管區域中的記錄與舊託管區域中的記錄不相符，請執行下列其中一項操作：
+ 使用 Route 53 主控台進行小更正。如需詳細資訊，請參閱[編輯記錄](resource-record-sets-editing.md)。
+ 刪除新託管區域中 NS 和 SOA 記錄以外的所有記錄，並重複步驟 4 中的程序。

## 步驟 6：更新網域註冊以使用新託管區域的名稱伺服器
<a name="hosted-zones-migrating-update-domain"></a>

當您完成將記錄遷移到新的託管區域時，請將網域註冊的名稱伺服器變更為使用新託管區域的名稱伺服器。如需詳細資訊，請參閱將 Amazon Route 53 設為現有網域的 DNS 服務。

如果您的託管區域正在使用 - 例如，如果您的使用者使用網域名稱瀏覽網站或存取 Web 應用程式 - 您應該繼續監控託管區域的流量和可用性，包括網站或應用程式流量、電子郵件等。
+ **如果流量變慢或停止** – 將網域註冊的名稱服務變更回舊託管區域的先前名稱伺服器。然後判斷發生什麼錯誤。
+ **如果流量不受影響** – 繼續下一個步驟。

## 步驟 7：將 NS 記錄的 TTL 變更回較高的值
<a name="hosted-zones-migrating-change-ttl"></a>

在新的託管區域中，將 NS 記錄的 TTL 變更為較典型的值，例如 172800 秒 （兩天）。這減少使用者的延遲，因為他們不必像 DNS 解析程式一樣通常需要等待為網域的名稱伺服器傳送查詢。<a name="change-ttl-back-procedure"></a>

**變更 TTL**

1. 登入 AWS 管理主控台 並開啟 Route 53 主控台，網址為 https：//[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

1. 在導覽窗格中選擇**託管區域**。

1. 選擇託管區域的名稱。

1. 選擇 NS 記錄，然後在**記錄詳細資訊**窗格中選擇**編輯記錄**。

1. 將 **TTL （秒）** 的值變更為您希望 DNS 解析程式快取網域名稱伺服器名稱的秒數。我們建議值 172800 秒。

1. 選擇**儲存**。

## 步驟 8：重新啟用 DNSSEC 簽署並建立信任鏈 （如果需要）
<a name="hosted-zones-migrating-enable-dnssec"></a>

您可以透過兩個步驟重新啟用 DNSSEC 簽署：

1.  啟用 Route 53 的 DNSSEC 簽署，並請求 Route 53 根據 中的客戶受管金鑰建立金鑰簽署金鑰 (KSK) AWS Key Management Service。

1. 將委派簽署者 (DS) 記錄新增至父區域，為託管區域建立信任鏈，以便使用信任的密碼編譯簽章來驗證 DNS 回應。

如需說明，請參閱[啟用 DNSSEC 簽署並建立信任鏈](dns-configuring-dnssec-enable-signing.md)。

## 步驟 9：（選用） 刪除舊託管區域
<a name="hosted-zones-migrating-delete-old-hosted-zone"></a>

當您確信不再需要舊的託管區域時，可以選擇將其刪除。如需說明，請參閱[刪除公有託管區域](DeleteHostedZone.md)。

**重要**  
在您將網域註冊更新為使用新託管區域的名稱伺服器之後，請至少等待 48 小時再刪除舊託管區域或該託管區域中的任何記錄。如果您在 DNS 解析程式停止使用舊託管區域中的記錄之前就刪除該託管區域，則必須等到解析程式開始使用新的託管區域之後，才能在網際網路上使用您的網域。