AWS再入門2018 Amazon Route 53(DNS)編

2018.01.14

こんにちは。池田です。先日スキーの初滑りをしたのですが、ほぼ毎週通っているテニスのおかげなのか、あまり息切れはしませんでした。継続は力なりと信じ、続けていこうと思います。

はじめに

AWS再入門2018シリーズとしては第四弾となります。今回はクラウドドメインネームシステム (DNS) ウェブサービスであるAmazon Route 53について公式サイトの情報を元に整理していこうと思います。DNSの仕組みそのものについての詳細解説は行いません。

もくじ

DNSとは

DNS(ディーエヌエス: Domain Name System)は、インターネットの重要な基盤技術の一つで、ドメイン名とIPアドレスの対応付けや、メールの宛先ホストを指示するためのシステムです。(DNS - インターネット10分講座 - JPNICより)

Amazon Route 53とは

以下、Route 53と表記します。

概要

AWSが提供する権威ネームサーバー。主な機能は以下の3つ。

  • ドメイン名の登録
  • インターネットトラフィックをドメインのリソースへルーティングする
  • リソースの正常性をチェックする

特徴

  • SLA100%として提供されるマネージドサービス
  • 前払金不要、ドメインに返答するクエリ数の制限はない。以下の3種による従量課金制

ホストゾーンの管理 Route 53 で管理した各ホストゾーンに対する月額料金を支払います。
DNS クエリへの応答 DNS クエリに対する Amazon Route 53 サービスからの応答には、料金が発生します。ただし、クエリの対象がエイリアス A レコードであり、Elastic Load Balancing インスタンスまたは Amazon S3 ウェブサイトバケットにマッピングされている場合は、追加料金は不要です。
ドメイン名の管理 Route 53 経由で登録された各ドメイン名または Route 53 に転送された各ドメイン名に対して年間料金を支払います。(Amazon Route 53 製品の詳細より)

  • 各ドメインのルーティング情報はホストゾーンに収容される(代表的なDNSサーバーであるBINDでいうゾーンファイル)
  • 他のAWSサービスと統合することで機能拡張が可能
    • AWS CloudTrail: リクエストの種類、リクエストの実行元IPアドレス、実行者、実行日時などをログファイルに記録
    • Amazon CloudWatch: 指定したエンドポイントの正常性を確認(ヘルスチェック)
    • タグエディター: コストの調査などさまざまな目的で使用
    • Amazon CloudFront: エイリアスリソースレコードセットを使用して、CloudFrontディストリビューションにトラフィックをルーティングすることでコンテンツの配信を高速化(パブリックホストゾーンのみ)
    • Amazon EC2: ウェブサイトやウェブアプリケーションのドメインに対するトラフィックをルーティング
    • AWS Elastic Beanstalk: AWS Elastic Beanstalkでデプロイや管理をしているアプリケーションへのルーティング
    • Elastic Load Balancing: エイリアスリソースレコードセットを使用して、Elastic Load Balancing(ELB)サービスへトラフィックをルーティングすることで配下のリソースに対する負荷分散
    • Amazon RDS: CNAME リソースレコードセットを使用して、通常は一部がランダムに割り当てられた長い英数字文字列となるDBインスタンスのドメイン名を独自ドメインでアクセス可能にする
    • Amazon S3: トラフィックをAmazon S3バケットにルーティング、または静的ウェブサイトをホスト
    • Amazon WorkMail: Amazon WorkMailにトラフィックをルーティングして、独自ドメインで利用(パブリックホストゾーンのみ)

ルーティングポリシー

  • リソースレコードセットを作成する際には、下記ルーティングポリシーから選択する必要がある
    • シンプルルーティングポリシー: 特定の機能を実行する単一のリソースがある場合に使用
    • フェイルオーバールーティングポリシー: アクティブ/パッシブフェイルオーバーを設定する際に使用
    • 位置情報ルーティングポリシー: ユーザーの位置情報に基づいてトラフィックをルーティングする際に使用
    • 地理的近接性ルーティングポリシー: リソースの場所に基づいてトラフィックをルーティングし、必要に応じてトラフィックをある場所の1つのリソースから別の場所の1つのリソースに移動する際に使用(トラフィックフローを使用する必要あり)
    • レイテンシールーティングポリシー: 複数箇所にあるリソースのうち、最もレイテンシーの低いリソースへトラフィックをルーティングする際に使用
    • 複数値回答ルーティングポリシー: 最大8つの正常なレコードを持つDNSクエリへランダムに応答する際に使用
    • 加重ルーティングポリシー : 指定した比率で複数のリソースにトラフィックをルーティングする際に使用

エイリアスリソースレコードセット

  • IPアドレスまたはドメイン名の代わりに以下のリソースへのポインタを格納
    • CloudFrontディストリビューションの代替ドメイン名
    • Elastic Beanstalk環境
    • ELBロードバランサー
    • 静的ウェブサイトとして設定されたAmazon S3バケット
    • 同じホストゾーン内の別のRoute 53リソースレコードセット

エイリアスリソースレコードセットとCNAMEレコードの違い

  • 課金条件
    • CNAMEレコード: CNAMEクエリに対して課金
    • エイリアスレコード: 前述した通りCloudFrontディストリビューション、Elastic Beanstalk環境、ELBロードバランサー、Amazon S3バケットに対するエイリアスクエリには課金されない
  • 作成条件
    • CNAMEレコード: Zone Apexには作成できない
    • エイリアスレコード: Zone Apexに作成できる
  • レコードタイプによる挙動
    • CNAMEレコード: レコードタイプを問わずドメイン名に対するクエリをリダイレクト
    • エイリアスレコード: レコードタイプも一致する場合のみエイリアスリソースレコードセットのポインタを追跡
  • ポリシーレコード
    • CNAMEレコード: ポリシーレコード作成時にどのDNSレコードでも指定できる
    • エイリアスレコード: エイリアスリソースレコードセットに挙げたリソースレコードセットのみを指定できる
  • 応答の表示
    • CNAMEレコード: Route 53 DNSサーバーからの返答の応答セクションに表示される
    • エイリアスレコード: Route 53コンソールまたはRoute 53 APIでのみ表示される
  • 追跡
    • CNAMEレコード: 再帰的リゾルバによって追跡される
    • エイリアスレコード: Route 53内でのみ追跡される(エイリアスリソースレコードセットとターゲットがRoute 53内に存在している必要がある)

サポートされているDNSレコード

  • Aレコード
    • IPv4アドレス
  • AAAAレコード
    • IPv6アドレス
  • CAAレコード
    • ドメインまたはサブドメインの証明書の発行を許可する認証機関(CA)を指定
  • CNAMEレコード
    • 別名を定義
  • MXレコード
    • メールサーバードメイン名と優先度を定義
  • NAPTRレコード
    • 名前付け権限ポインタ(1つの値を別の値に変換または置き換えるために使用)
  • NSレコード
    • ホストゾーンのネームサーバーを指定
  • PTRレコード
    • DNS逆引き用レコード
  • SOAレコード
  • SPFレコード
    • メールの送信者の身元を確認するために利用されていたが現在は推奨されない(TXTレコードを利用する)
  • SRVレコード
    • 優先順位、重み、ポート、ドメイン名を記述
  • TXTレコード
    • スペースで区切られた、二重引用符で囲まれた文字列のリスト

制約と動作

  • 一般的なDNSサーバーと同様のDNSプロトコルに対応

(制約と動作に関する詳細情報はDNS の制約と動作をご覧ください。)

Route 53を利用/理解するためのリソース

AWSでは各サービスに関するさまざまなドキュメントを公開しており、Route 53に関するリソースの一部を以下に記載します。

まとめ

AWSが提供するインターネットの基盤を支える技術の1つであるDNSサービス「Amazon Route 53」を安全に活用していくには、今回整理した情報だけでは足りない部分も多くあります。掲載しなかった箇所についてはそれだけで単独記事にできそうな内容もたくさんありました。
以前の勤め先ではBINDによるDNSサーバーの運用を経験しており、一通りの知識は抑えているのですが、普段はあまり意識しせず利用しているドメインの裏側にあるDNSサーバーの仕組みと一緒にRoute 53について深掘りしていくのは非常に楽しい体験でした。
今後もAWS再入門2018と題して他のAWSサービスについて楽しみながら理解を深めていきたいと思います。このシリーズが読んでくださったどなたかのお役に立てれば幸いです。