Route 53のドメインを別のAWSアカウントに移管する

4月 23, 2020AWS,Route53

概要

はじめに

  • 今回は、多くの方にとってレアケースかもしれませんが、Route 53 にて作成・使用中のドメインを別のAWSアカウントに移管する手順をご紹介します。
  • 本記事に紹介する作業はインパクトが大きいです。記載する作業によって生じた影響は、当方で保証できません。業務影響が少ない時間帯に実施、DNSレコードの設定値を事前にバックアップするなど慎重に作業を行ってください。
 

想定されるシチュエーション

  • 例えば、開発環境のRoute 53 でドメイン(example.com)を登録し、デプロイしたリソースのエンドポイントをDNSレコード登録(test1.dev.example.com、test2.dev.example.com)して使用していたとします。
  • ある段階で本番環境にRoute 53 のドメイン管理を統合する方針となり、開発環境で作成・使用中のドメイン(example.com)を別アカウントである本番環境に移管する作業を想定しています。
  • この移管作業は、大きく分けてドメインの登録情報の移管と、Hosted Zone の作成・切替の2種類の作業があります。
  • 移管元のアカウント、移管先のアカウントの両方を所有している場合、ドメインのHosted Zoneを移行できます。但し、これはオプションであり、必須ではありません。Route 53 ではドメインの登録情報のみ移管し、引き続き既存のHosted Zoneのレコードを使用してドメインのトラフィックをルーティングすることもできます。
   

移管先のAWSアカウントにHosted Zoneを作成する

  • 移管先のAWSアカウントにて、Route 53のコンソールを開きます。
  • 先ず[ホストゾーンの作成]を押し、移管するドメイン名を入力してHosted Zone を作成します。 
 
  • 次に、作成したドメインのNSレコードを控えます。
   
  • ここも重要なポイントです。スムーズな切替を行うべく、移管先のAWSアカウントにDNSレコードを再現します(移管元のAWSアカウントと同様に、Hosted ZoneにDNSレコードを登録します)。
 

移管先の AWS アカウントにドメイン登録情報を移管する

  • 次は、AWSサポートに依頼する作業となります。
  • 現在ドメインが登録されているAWS アカウント(移管元のAWSアカウント)にログインし、AWS サポートセンターを開きます。(AdministratorAccess あるいはAmazonRoute53FullAccess管理ポリシーが割り当てられたユーザーでログインします)
  • 次の値を指定して、[Submit]を押します。
    • [Account and Billing Support]
    • 分類
      • 種類 → [Billing]
      • カテゴリ → [Domain name registration issue]
    • 説明
      • 件名 → [Transfer a domain to another AWS account]
      • 説明 → 以下の情報を記述します。
        • 移管するドメイン
        • ドメインが現在登録されている AWS アカウントの 12 桁のアカウント ID
        • ドメイン登録の移管先となる AWS アカウントの 12 桁のアカウント ID
  • サポートケースが更新され、ドメイン登録情報の移管が完了するまで待ちます(数営業日)。
       

移管先のドメイン登録を更新し、Hosted Zoneを切替える

  • 移管元のアカウント、移管先のアカウントの両方を所有している場合、ドメインのHosted Zoneを移行できます。但し、これはオプションであり、必須ではありません。Route 53 ではドメインの登録情報のみ移管し、引き続き既存のHosted Zoneのレコードを使用してドメインのトラフィックをルーティングすることもできます。ここでは、ドメインの登録情報を移管後に、以前の手順で作成済みのHosted Zoneに切り替える手順を説明します。
  • 移管先のAWSアカウントにて、Route 53のコンソールを開きます。「登録済みドメイン」から移管するドメイン名を選択します。
  • 現時点の「ネームサーバー」には、移行元のHosted Zoneに登録されていたNSレコードが設定されています。次に、[ネームサーバーの追加/編集]をクリックします。
 
  • ネームサーバーの編集で、事前に控えた移行先のHosted Zoneに登録されているNSレコードを表示の順に指定していきます。NSレコードが正しいことを再確認して、[更新]ボタンを押します。
     
  • ネームサーバーの更新を実行すると、下記の画面が表示されます。更新リクエストが送信され、更新の完了後にEメールが届きます。「ネームサーバー」の値が更新され、移行先のHosted Zoneに登録されているNSレコードに変わったことを確認します。
 
  • これで、移行先のAWSアカウントに作成したHosted Zone に切り替わりました。上記作業が本記事でもっともインパクトのあるオペレーションになります。
 

digコマンドによる動作確認

  • 移行元のDNSレコードのTTL(キャッシュ保持時間)が経過した後に、digコマンドによる動作確認を行います。必要に応じて、事前に移行元のDNSレコードのTTL を短く設定しても良いです。TTLを変更した場合は、動作確認後に元に戻します。
  • 下記のdigコマンドを実行し、ANSWER SECTIONに返されたNSレコードの値を取得します。Hosted Zone切替前、切替後に実行して、NSレコードの値が更新されていることを確認しましょう。

niikawa@niikawa1:~$ dig test-example.com NS
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> test-example.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55249
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;test-example.com.                   IN      NS
;; ANSWER SECTION:
test-example.com.            60      IN      NS      ns-XXXX.awsdns-XX.org.
test-example.com. 60 IN NS ns-XXXX.awsdns-XX.co.uk.
test-example.com. 60 IN NS ns-XXXX.awsdns-XX.com.
test-example.com. 60 IN NS ns-XXXX.awsdns-XX.net.
← NSレコードの値を確認する
(以降省略)
   

移行元のアカウントから古いHosted Zoneの削除

  • 移行元のアカウントから古いHosted Zoneを削除します。
  • 古いHosted Zoneが不要であることが明らかな場合のみ実施してください。新しいHosted Zoneのネームサーバーを使用するようにドメイン登録を更新してから、少なくとも48 時間は古いHosted ZoneおよびHosted Zone内のレコードは削除しないことを推奨します。DNSリゾルバーが古いHosted Zoneを参照している場合、古いHosted Zoneを削除した直後からアクセスできなくなる恐れがあります。
  • なお、Hosted Zoneの削除は、Zone ApexのNSレコードおよびSOAレコード以外のレコードを削除してから実施する必要があります。レコードが存在する場合は、下記のエラーが表示されます。
 

AWS CLIによるDNSレコードのバックアップ

  • AWS CLI を使用して、事前にDNSレコードのバックアップを取得してください。

niikawa@niikawa1:~$ aws route53 list-hosted-zones
niikawa@niikawa1:~$ aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/Z0123456789ABCDEFGHIJK
   

参考資料

AWS,Route53

Posted by takaaki