別の AWS アカウントへのホストゾーンの移行 - Amazon Route 53

別の AWS アカウントへのホストゾーンの移行

1 つの AWS アカウントから別のアカウントにホストゾーンを移行する場合は、古いホストゾーンでレコードをプログラムによりリストし、出力を編集してから、編集された出力を使用して新しいホストゾーンでプログラムによりレコードを作成します。次の点に注意してください。

  • レコードの数が少ない場合には、Route 53 コンソールを使用して、新しいホストゾーンにレコードを作成することもできます。詳細については、「Amazon Route 53 コンソールを使用したレコードの作成」を参照してください

  • 一部の手順では、AWS Command Line Interface (AWS CLI) を使用します。AWS SDK、Amazon Route 53 API、または AWS Tools for Windows PowerShell のいずれかを使用して、これらの手順を実行することもできます。このトピックでは、少数のホストゾーンに対してより簡単に使用できるため、AWS CLI を使用します。

  • このプロセスを使用して、既存のホストゾーンと名前は異なるが、同じレコードを持つ新しいホストゾーンでレコードを作成することもできます。

  • トラフィックをトラフィックポリシーインスタンスにルーティングするエイリアスレコードを移行することはできません。

ステップ 1: AWS CLI をインストールまたはアップグレードする

AWS CLI のダウンロード、インストール、設定の詳細については、AWS Command Line Interfaceユーザーガイドを参照してください。

注記

CLI を設定し、ホストゾーンを作成したアカウントと、ホストゾーンの移行先アカウントの両方を使用中に CLI を使用できるようにします。詳細については、AWS Command Line Interface ユーザーガイド設定を参照してください。

既に AWS CLI を使用している場合は、CLI コマンドが Route 53 の最新機能をサポートできるように、最新バージョンの CLI にアップグレードすることをお勧めします。

ステップ 2: 新しいホストゾーンを作成する

次の手順では、Route 53 コンソールを使用して、移行先のホストゾーンを作成する方法について説明します。

注記

Route 53 は、新しいホストゾーンに 4 つの新しいネームサーバーを割り当てます。別の AWS アカウントにホストゾーンを移行した後、ドメイン登録を更新して、新しいホストゾーンのネームサーバーを使用する必要があります。このステップについては、プロセス中に後でもう一度お知らせします。

別のアカウントを使用して新しいホストゾーンを作成するには
  1. AWS Management Console にサインインし、Route 53 コンソール (https://console.aws.amazon.com/route53/) を開きます。

    ホストゾーンの移行先となるアカウントのアカウント認証情報を使用してサインインします。

  2. ホストゾーンの作成。詳細については、「パブリックホストゾーンの作成」を参照してください。

  3. ホストゾーン ID を書き留めます。この情報は、プロセス中に後で必要になる場合があります。

  4. Route 53 コンソールからログアウトします。

ステップ 3: 移行するレコードを含むファイルを作成する

1 つのホストゾーンから別のホストゾーンに移行するには、移行するレコードを含むファイルを作成し、ファイルを編集してから、編集したファイルを使用して新しいホストゾーンにレコードを作成します。以下の手順を実行してファイルを作成します。

移行するレコードを含むファイルを作成するには
  1. AWS Management Console にサインインし、Route 53 コンソール (https://console.aws.amazon.com/route53/) を開きます。

    移行先のホストゾーンを作成したアカウントのアカウント認証情報を使用してサインインします。

  2. 移行するホストゾーンのホストゾーン ID を取得します。

    1. ナビゲーションペインで [Hosted zones] を選択します。

    2. 移行するホストゾーンを見つけます。ホストゾーンが多数ある場合は、[Exact domain name (完全なドメイン名)] を選択し、ホストゾーンの名前を入力してから、Enterを押してリストをフィルタリングします。

    3. [ホストゾーン 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 に、出力を保存するディレクトリのパスとファイル名を指定します。

    • > 文字を指定すると、指定されたファイルに出力が送信されます。

    • AWS CLI は、100 個を超えるレコードが含まれているホストゾーンのページ分割を自動的に処理します。詳細については、AWS Command Line Interface ユーザーガイドAWS Command Line Interface のページ分割オプションの使用を参照してください。

      別のプログラムによる方法 (AWS SDK の 1 つなど) を使用してレコードをリストする場合、結果のページごとに最大 100 個のレコードを取得できます。100 個を超えるレコードがホストゾーンに含まれている場合は、すべてのレコードをリストするために複数のリクエストを送信する必要があります。

    • Windows PowerShell 6.0 以前のバージョンでコマンドを実行するには、次の構文を使用します。

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

    例えば、Windows コンピュータで AWS CLI を実行している場合は、次のコマンドを実行します。

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

    6.0 より前のバージョンの Windows PowerShell の Windows コンピュータで AWS CLI を実行している場合は、次のコマンドを実行します。

    $output = aws route53 list-resource-record-sets --hosted-zone-id <hosted-zone-id>; $mypath = <output-path ; [System.IO.File]::WriteAllLines($mypath,$output)
  4. この出力のコピーを作成します。新しいホストゾーンにレコードを作成した後は、新しいホストゾーンで AWS CLI の list-resource-record-sets コマンドを実行し、2 つの出力を比較して、すべてのレコードが作成されたことを確認することをお勧めします。

ステップ 4: 移行するレコードを編集する

前の手順で作成したファイルの形式は、新しいホストゾーンでレコードを作成するために使用する AWS CLI の change-resource-record-sets コマンドによって必要な形式に近いものとなります。ただし、このファイルではいくらか編集が必要になります。一部の変更は、すべてのレコードに適用する必要があります。適切なテキストエディターの検索と置き換え機能を使用して、これらの変更を行うことができます。

ステップ 3: 移行するレコードを含むファイルを作成する」で作成したファイルのコピーを開き、以下の変更を行います。

  • 出力の最初の 2 行を削除します。

    { "ResourceRecordSets": [
  • NS レコードと SOA レコードに関連する行を削除します。新しいホストゾーンには既にそれらのレコードがあります。

  • オプションComment 要素を追加します。

  • Changes 要素を追加します。

  • 各レコードについて、Action および ResourceRecordSet 要素を追加します。

  • 必要に応じて中括弧 ({ }) を追加し、JSON コードを有効にします。

    注記

    JSON 検証ツールを使用して、すべての中括弧と角括弧が正しい場所に配置されていることを確認します。オンラインの JSON 検証ツールを見つけるには、インターネットで「json validator」を検索します。

  • ホストゾーンに、同じホストゾーンで他のレコードを参照するエイリアスが含まれている場合は、以下の変更を行います。

    • ホストゾーン ID を、新しいホストゾーンの ID に変更します。

      重要

      エイリアスレコードが他のリソース (ロードバランサーなど) を指している場合は、ホストゾーン ID を、ドメインのホストゾーン ID に変更しないでください。ホストゾーン ID を誤って変更した場合は、ホストゾーン ID をドメインのホストゾーン ID ではなく、リソース自体のホストゾーン ID にロールバックしてください。ホストゾーン ID は、リソースの作成に使用した AWS コンソールで見つけることができます。

    • エイリアスレコードをファイルの末尾に移動します。Route 53 は、エイリアスレコードを作成する前に、エイリアスレコードが参照するレコードを作成する必要があります。

      重要

      1 つ以上のエイリアスレコードが他のエイリアスレコードを参照している場合、エイリアスターゲットであるレコードは、エイリアスレコードを参照する前にファイルに表示される必要があります。たとえば、alias.example.comalias.alias.example.com のエイリアスターゲットである場合、alias.example.com がファイルの先頭に表示される必要があります。

    • トラフィックをトラフィックポリシーインスタンスにルーティングするエイリアスレコードを削除します。レコードをメモし、後で再作成できるようにします。

  • このプロセスを使用して、別の名前のホストゾーンでレコードを作成できます。出力の各レコードについて、Name 要素のドメイン名部分を新しいホストゾーンの名前に変更します。例えば、example.com ホストゾーンでレコードをリストし、example.net ホストゾーンでレコードを作成する場合、すべてのレコード名の example.com 部分を example.net に変更します。

    From:

    • "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 アドレスなど) を含むレコードがある場合は、ファイルをより小さなファイルに分割しなければならないことがあります。最大値は次のとおりです。

  • 各ファイルには、最大 1,000 件のレコードを含めることができます。

  • すべての Value 要素での結合された値の最大の長さは 32,000 バイトです。

ステップ 6: 新しいホストゾーンでレコードを作成する

新しいホストゾーンでレコードを作成するには、次の AWS 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 --output json > path-to-output-file

    次の値を指定します。

    • hosted-zone-id で、新しいホストゾーンの ID を指定します。

    • path-to-output-file に、出力を保存するディレクトリのパスとファイル名を指定します。「ステップ 3: 移行するレコードを含むファイルを作成する」で使用したファイル名とは異なるファイル名を使用します。別のファイル名を使用することにより、新しいファイルが古いファイルを上書きすることがなくなります。

    • > 文字を指定すると、指定されたファイルに出力が送信されます。

    例えば、Windows コンピュータを使用している場合は、次のコマンドを実行します。

    aws route53 list-resource-record-sets --hosted-zone-id ZNEWZONE67890 --output json > c:\temp\list-records-ZNEWZONE67890.txt
  2. 出力を、「ステップ 3: 移行するレコードを含むファイルを作成する」の出力と比較します。

    NS レコードと SOA レコードの値、および「ステップ 4: 移行するレコードを編集する」で行った変更 (異なるホストゾーン ID やドメイン名など) を除いて、2 つの出力は同じになるはずです。

  3. 新しいホストゾーンのレコードが古いホストゾーンのレコードに一致しない場合は、次のいずれかの操作を実行できます。

ステップ 8: ドメイン登録を更新して新しいホストゾーン用のネームサーバーを使用する

新しいホストゾーンでレコードの作成が終了したら、ドメイン登録のネームサーバーを変更し、新しいホストゾーンのネームサーバーを使用します。

重要

ドメイン登録の更新は行わず新しいホストゾーンのネームサーバーも使用しない場合、Route 53 は古いホストゾーンを引き続き使用して、ドメインへのトラフィックをルーティングします。ドメイン登録のネームサーバーを更新せずに古いホストゾーンを削除した場合、ドメインはインターネット上で利用できなくなります。ドメイン登録のネームサーバーを更新せずに新しいホストゾーンのレコードを追加、更新、または削除した場合、トラフィックはそれらの変更に基づいてルーティングされません。

詳細については、「Amazon Route 53 を既存ドメインの DNS サービスとして使用する」を参照してください。

注記

使用中のドメインの DNS サービスを移行するプロセスを使用するか、アクティブでないドメインのプロセスを使用するかにかかわらず、新しいホストゾーンと、そのホストゾーンのレコードを既に作成しているため、以下のステップをスキップできます。

  • ステップ 1: 現在の DNS サービスプロバイダから現在の DNS 設定を取得する

  • ステップ 2: ホストゾーンを作成する

  • ステップ 3: レコードを作成する

ステップ 9: DNS リゾルバーが新しいホストゾーンの使用を開始するまで待つ

ドメインが使用されている場合 (ユーザーがドメイン名を使用してウェブサイトを閲覧したり、ウェブアプリケーションにアクセスしている場合など)、DNS リゾルバーは現在の DNS サービスプロバイダが提供したネームサーバーの名前をキャッシュしています。数分前にその情報をキャッシュした DNS リゾルバーでは、この後最大 2 日保存されます。

注記

古いホストゾーンに示されないレコードを新しいホストゾーンに作成した場合、リゾルバーが新しいホストゾーンのネームサーバーの使用を開始するまで、ユーザーは新しいレコードを使用してリソースにアクセスできません。例えば、インターネットトラフィックをウェブサイトにルーティングするレコード test.example.com を新しいホストゾーンに作成するとします。レコードが古いホストゾーンに表示されない場合は、リゾルバーが新しいホストゾーンの使用を開始するまで、ウェブブラウザで test.example.com を入力できません。

古いホストゾーンを削除する前に別の AWS アカウントへのホストゾーンの移行が完了したことを確実にするには、新しいホストゾーンのネームサーバーを使用するようにドメイン登録を更新してから 2 日待ちます。2 日間が経過すると TTL の有効期限が切れ、リゾルバーがドメインのネームサーバーを要求します。リゾルバーは現在のネームサーバーを取得します。リゾルバーでのクエリのログ記録 を有効にして、新しいホストゾーン内のクエリをモニタリングすることもできます。Resolver でのクエリのログ記録の料金については、CloudWatch の料金を参照してください。

ステップ 10: (オプション) 古いホストゾーンを削除する

古いホストゾーンが不要であることが明らかな場合は、オプションで削除できます。

重要

新しいホストゾーンのネームサーバーを使用するようにドメイン登録を更新してから少なくとも 48 時間は、古いホストゾーンもこのホストゾーン内のレコードも削除しないでください。DNS リゾルバーがそのホストゾーンのレコードの使用を停止する前に古いホストゾーンを削除した場合、リゾルバーで新しいホストゾーンの使用を開始するまでドメインはインターネットで利用できないおそれがあります。

デフォルトの NS レコードおよび SOA レコードを除き、ホストゾーンは空である必要があります。古いホストゾーンに多くのレコードが含まれている場合、コンソールを使用して削除すると時間がかかることがあります。1 つのオプションとして、次のステップを実行します。

  1. ステップ 4: 移行するレコードを編集する」で編集したファイルの別のコピーを作成します。

  2. ファイルのコピーで、すべてのレコードについて "Action": "CREATE""Action": "DELETE" に変更します。

  3. 次の AWS 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. AWS Management Console にサインインし、Route 53 コンソール (https://console.aws.amazon.com/route53/) を開きます。

      古いホストゾーンを作成したアカウントのアカウント認証情報を使用してサインインします。

    2. ナビゲーションペインで [Hosted zones.] を選択します。

    3. 古いホストゾーンの名前を選択します。ホストゾーンが多数ある場合は、[Exact domain name (完全なドメイン名)] を選択し、ホストゾーンの名前を入力してから、Enterを押してリストをフィルタリングします。

    4. ホストゾーンに、デフォルトの NS と SOA レコード以外のレコード (トラフィックをトラフィックポリシーインスタンスにルーティングするエイリアスレコードなど) が含まれている場合は、対応するチェックボックスをオンにし、[Delete (削除)] を選択します。

    5. ナビゲーションペインで [Hosted zones] を選択します。

    6. ホストゾーンのリストで、削除するホストゾーンのラジオボタンを選択します。

    7. [削除] を選択します。