Amazon Route 53とELBでAlias Resource Record Setを設定してZone Apexを実現

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon Route 53とは?

Amazon Route 53とは、アマゾンが提供する分散管理DNSサーバーです。応答が早いとか、反映が早いとか、APIで設定できるとか、障害に強いとか、いろいろ特徴があるのですが、今回はRoute 53とElastic Load Balancingを使って独自ドメインのサブドメイン無しでも接続できるようにします。このサブドメイン無しの指定をZone Apexと言います(「mydomain.com」などの指定)。これを実現するには、Route 53のAレコードでAlias Resource Record SetとしてELBのドメイン名を指定します。このZone Apexは、最近できた機能でして、今までEC2のみでドメイン名を指定するときはZone Apexで指定することができませんでした。ですから、ブラウザから「www.mydomain.com」のように指定する必要があったのです。今回はドメインの取得からご紹介します。

ドメインの取得

今回の実験用に新たにドメインを取得しました。akari7.netです。Value-Domainで480円でした。初期設定では、Value-DomainのDNSサーバーが指定されていますが、あとでRoute 53のDNSサーバーを指定することになります。

R53 Fox - Route 53 GUI Clientの利用

Management ConsoleにてRoute 53の管理画面は用意されていませんので、GUIクライアントとしてR53 Foxを利用します。

R53 Foxのダウンロードはこちら

MacOS版がありましたのでそのままダウンロード、インストールして起動します。Createを選択してドメインを登録します。

これでRoute 53へドメインの登録が完了し、Amazon Route 53が指定するDNSサーバー名が取得できます。ここでポイントですが、Amazonの提供するDNSサーバー名はたくさんありますので、Hosted Zoneを指定するまで教えてもらえません。ググって適当なDNSサーバー名を入れないようにしましょう。

取得するために、Exportを選択してjson形式でDNSサーバー名を取得します。

{
  "akari7.net.":{
    "HostedZoneId":"ZABLQTUVGSQ7V",
    "CallerReference":"CreateHostedZone, akari7.net, Fri Sep 09 2011 00:21:29 GMT+0900 (JST)",
    "Comment":"",
    "ResourceRecordSets":[{
        "SetIdentifier":"",
        "Weight":"",
        "TTL":"172800",
        "Value":["ns-1523.awsdns-62.org.",
          "ns-1702.awsdns-20.co.uk.",
          "ns-40.awsdns-05.com.",
          "ns-888.awsdns-47.net."
        ],
        "Name":"akari7.net.",
        "Type":"NS"
      },
      {
        "SetIdentifier":"",
        "Weight":"",
        "TTL":"900",
        "Value":["ns-1523.awsdns-62.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400"
        ],
        "Name":"akari7.net.",
        "Type":"SOA"
      }
    ]
  }
}

Amazon Route 53のDNSサーバー名をレジストラで設定する

続きまして、Amazon Route 53のDNSサーバー名をレジストラで設定します。Value-Domainの管理画面でDNSサーバーを指定するところがありますので、先ほど取得したDNSサーバー名を入力してください。これで、ドメインとRoute 53の関連づけが完了しました。次は、Aレコードの設定です。

Amazon EC2インスタンスをELBに登録する

今回の実験では、Zone Apexでサブドメイン無しの指定ができるようにしますので、ELBを新規作成してその配下にEC2インスタンスをおきました。

ELBのドメイン名をRoute 53のA(Alias)で指定する

ELBのドメイン名が分かりしたので、この名前をRoute 53で登録します。ここで注意が必要なのは、IPアドレスを指定してはいけないことです。ELBは分散された拡張可能なロードバランサーですから動作中にIPアドレスが変わる可能性があります。

A(Alias)を登録します。

無事にAlias Resource Record SetにELB名を指定できました。

ブラウザから表示を確認する

無事に表示できました!

まとめ

ほんの10分程度で、独自ドメインの取得からDNSサーバーの設定、インスタンスの起動とELBへの登録、Route 53とELBの関連づけまで行う事ができました。今回はZone Apexの指定だけでしたが、普通のDNS設定と同じように、Aレコードでサブドメイン指定や、MXレコードでメールサーバー指定もできます。独自ドメインを取ってRoute 53を使ったDNS設定を楽しみましょう!