Route53のホストゾーンを別のAWSアカウントに移行する
仕事でドメイン変更をする機会があった。古い方のドメインから新しいドメインへのリダイレクトを維持する関係で、すぐに古いドメインを消せるわけではない。一方で古いドメインを管理していたAWSアカウントは使わなくなるので(これは色んな事情から)、ドメイン名は同じままで別のAWSアカウントに移行する作業が発生した。その備忘録。
やってみる
基本はRoute53の公式ドキュメントに書いてある通りの手順でできた。
移行先のAWSアカウントのRoute53でパブリックホストゾーンを作成する。この時、NSレコードとSOAレコードが作成される。
移行元と移行先のホストゾーンを比較し、移行先でも必要なDNSレコード(ただし、NSレコードとSOAレコードは移行先のものを使う必要があるので、それ以外)をメモし、移行先のホストゾーンに登録する。
ドメインを登録しているレジストラの管理画面で、NSレコードを移行先のものに変更する。
これをしないと、いつまで経っても移行先のアカウントで作ったホストゾーンは世の中で日の目を見ないことになる。
Route53の仕様で、新しいホストゾーンが世の中に浸透するまで最大2日かかるらしい。とのことで、NSレコード切り替え後すぐに古いアカウントのホストゾーンを消してはならない。
古いアカウントのホストゾーンを削除する。この時、NSレコードとSOAレコード以外を削除しておかないとゾーンの削除はできない。(エラーになる)
まとめ
今回のゾーン作成、レコード登録はCloudFormationを使って実施し、1つのstackとして管理するようにした。
このドメインを削除したい、となったときはこのstackごと消すだけで良い(はず)ので、CloudFormationが書けるなら、CloudFormationを使って移行する方が手軽かなと思った。特に、移行先に必要なレコードが多い場合、公式ドキュメントの通りAWS CLIを使って一括登録もできるが、少々手順が複雑なので(所感)、CloudFormationを書いてstackの更新をかけるだけの方がシンプルでミスオペも少ないかなと思った。
なお、ドメインの管理にはRoute53を使っていないので、NSレコードの切り替え作業は社内の別の方にお願いした。
ほぼ同じことをやっている方がいたので結びとして載せておく。