Route53のパブリックホストゾーンを別アカウントに移管してみた

# 1.はじめに
以前業務でRoute53にて作成したパブリックホストゾーンを別アカウントに移管しました。
方法や注意点を備忘として記事に残します。

# 2.実際にやってみた
以下①-③の手順を実施後に移管先AWSアカウントのパブリックホストゾーンへ名前解決を行うようになります。実際にやってみます。

![構成図-ページ2.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/818b81fd-63ff-a00b-fb2c-1db2f7c0089e.png)



### ①移管先アカウントで移管するパブリックホストゾーンと同一ドメイン,レコードのパブリックホストゾーンを作成する

移管先アカウントで移管するホストゾーンと同一ドメイン、レコードのパブリックホストゾーンを作成します。SOAレコード、NSレコード以外は同じ設定となるようにします。
移管するホストゾーンのドメインは、test××.netです。


![①-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/abed4e5c-f469-22e5-7ad0-43583a8d1d22.png)

作成したパブリックホストゾーンのNSレコードは③で使うためメモしておきます。

![①-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/153287ab-dbab-ee2d-3eb6-d610eda3c588.png)


今回はAレコード1つのみがホストゾーン作成後に同一設定するため必要な作業でしたが、レコードが多い場合は[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/hosted-zones-migrating.html)記載の通り、CLIを用いたレコード一括登録ができます。

### ②移管元アカウントのパブリックホストゾーンのNSレコードのTTL値をデフォルト値(172800秒)から60秒に変更する。

NSレコードのTTL値はデフォルトで172800秒(2日)あるためDNSリゾルバがキャッシュを保持し切り替え作業を行った後、最大2日切り替わらない可能性があります。
移管作業をより短いダウンタイムで行うため,切り替え予定日から2日前にはNSレコードのTTL値を60秒に変更します。
![②-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/aa378cfa-d4fd-bd39-aa8a-3f0f0aec2e22.png)

![②-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/e4fc53ce-8f29-87ef-5cb8-1044d2405d6c.png)



またDNS権威委任先(今回だとRoute53上のtest××.netゾーン)とDNS権威委任元(今回だとnetゾーン)でNSレコードのTTLに差異があった場合については以下ドキュメントの記述によると、「DNSの仕様では子のNSが権威を持つ（親のNSよりも優先）」と記載があるため、権限委任先である子ゾーンのTTLが優先されることが期待されます。

>[参考ドキュメント]親の心子知らず？委任にまつわる諸問題について考える～ランチのおともにDNS～
https://jprs.jp/tech/material/iw2012-lunch-L3-01.pdf
===P9 より抜粋===
委任におけるNSレコードの役割
• 親のNSが委任を、子のNSが権威を示す
• 親のNSの意味（委任情報の提示）
– 「私はそのゾーンをNSで指定した子に
委任しています」
• 子のNSの意味（権威情報の表明）
– 「私はそのゾーンの権威を持っています」
• 委任の成立には上記の双方が必要
• DNSの仕様では子のNSが権威を持つ（親のNSよりも優先）
=========


### ③登録ドメインのネームサーバーの値を移管先AWSアカウントで作成したパブリックホストゾーンのNSレコード値に更新する。

今回はRoute53で購入、登録したドメインを使っているため、Route53登録ドメイン画面でネームサーバー値を更新することでホストゾーンの切り替えを行います。

切り替え作業の前にコマンドプロンプトで切り替え対象ドメイン(test××.net)を管理しているホストゾーンのネームサーバー値を確認します。

■切り替え前ネームサーバー値
>ns-9××.net.
ns-1××.org.
ns-2××.com.
ns-1××.co.uk.

![③-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/c9fb8e33-6092-f680-10f1-740b398bf5b3.png)

■切り替え前ネームサーバー値コマンドプロンプト確認画面
![③-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/95d8776b-0adc-dbb9-2cf3-5657f63599eb.png)


ネームサーバー値はマスクしていますが、移管元アカウントにあるパブリックホストゾーンのネームサーバー値であることがわかります。

Route53登録ドメイン画面でネームサーバー値を移管先アカウントにあるパブリックホストゾーンのネームサーバー値に変更します。
![③-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/4589751a-f955-6494-1be6-0248ad8fd9b2.png)




変更作業後TTL値として設定した60秒後にネームサーバー値がを移管先アカウントにあるパブリックホストゾーンのネームサーバー値切り替わるか確認します。





■切り替え後ネームサーバー値
>ns-3××.com.
ns-1××.co.uk.
ns-1××.org.
ns-8××.net.

■切り替え後ネームサーバー値コマンドプロンプト確認画面
![③-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683522/e98d2c7f-c0c6-d15e-e242-5885e912b47b.png)


移管先アカウントにあるパブリックホストゾーンのネームサーバー値切り替わっていることを確認しました。

Route53のパブリックホストゾーンの別アカウント移管作業は完了となります。


# 3.まとめ
Route53のパブリックホストゾーンを別アカウントに移管してみました。
作業自体はシンプルですが、ダウンタイムに注意しながら移管するということが重要なので、本記事が参考になれば幸いです。