👌

【初心者向け】Amazon Route 53 入門!完全ガイド

2023/01/11に公開

Amazon Route 53

☘️ はじめに

本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

👀 Contents

Amazon Route 53 とは

可用性と拡張性に優れたクラウドのドメインネームシステム (DNS) ウェブサービスです。AWS のサービスの中で唯一 SLA が 100 % のサービスです。

ルートフィフティスリーと読みます。

なぜ 53 が付くのかというと、DNS が使用するポート番号が 53 番だからです。

DNS ??という人は、DNS とは を参照するとよいでしょう。

【AWS Black Belt Online Seminar】Amazon Route 53 Hosted Zone(YouTube)(59:25)

route53_2

【AWS Black Belt Online Seminar】Amazon Route 53 Resolver(YouTube)(54:18)

route53_2

Amazon Route 53 サービス概要

Amazon Route 53 ドキュメント

Amazon Route 53 よくある質問

Amazon Route 53 料金

ドメインの新規登録

AWS では  Route53 にて新規ドメインを取得することができます。

Amazon Route 53 に登録できる最上位ドメイン

ドメインの移管

ドメインの移管

以下の移管が可能です。

Route 53 を構成する要素

以下で構成されます。

  • ホストゾーン
    • ドメインおよびサブドメインのトラフィックをルーティングするための管理単位(コンテナ)です。
  • DNS レコード
    • ホストゾーン内でドメイン名に対応するリソースへルーティングするための紐付けです。

ホストゾーン

ホストゾーンは次の 2 種類があります。

route53_hostedzone

  • パブリックホストゾーン
    • インターネット上に公開された DNS ドメインのレコードを管理するコンテナ
  • プライベートホストゾーン
    • VPC に閉じたプライベートネットワーク内の DNS ドメインのレコードを管理するコンテナ

ホストゾーンを削除するには、SOA レコードおよび NS レコードを除くすべてのレコードを予め削除しておく必要があります。

DNS レコードタイプ

route53_hostedzone_record

主なレコードタイプは次の通りです。

詳細については、サポートされる DNS レコードタイプ を参照してください。

ホストゾーンを作成する自動的に作成されるレコード

  • SOA レコード
    • Start of Authority (SOA) のレコード
    • ドメインおよび対応する Amazon Route 53 のホストゾーンに関する重要な情報(管理者のメールアドレス、リフレッシュサーバーの時間枠、ドメインの更新履歴など)を提供します
    • ホストゾーンを作成すると自動的に作成され、ホストゾーンに1つだけ存在します
    • このレコードは削除できません
  • NS レコード
    • ゾーン情報を管理するネームサーバ
    • 4つのネームサーバが割り当てられます
    • このレコードは削除できません

システムに応じて、ユーザーが追加するレコード

  • A レコード

    • ドメイン名と IPv4 の対応
    • example.com → 192.0.2.1
  • AAAA レコード

    • ドメイン名と IPv6 の対応
    • example.com → 2001:db8::1
  • CNAME レコード

    • ドメインを別のドメインに紐づける

    • sub1.example.com. IN CNAME sub2.example.com. とすると、sub1sub2 に読み替えてくれます。

    • 以下のような同じ定義は NG です。(sub1 を2つのドメインに紐づけている)

      • sub1.example.com. IN CNAME sub2.example.com.
      • sub1.example.com. IN CNAME www.example.com.
      • 詳細は RFC1912 A CNAME record is not allowed to coexist with any other data.
    • 別のタイプのレコードを追加することも出来ません。

      • sub1.example.com. IN CNAME sub2.example.com.
      • sub1.example.com. IN A 192.0.2.1
    • Zone Apex とよばれる DNS 名前空間の最上位ノード(この場合、example.com)に対して CNAME は作成できません。

      • example.com. IN CNAME sub1.example.com. とするのは NG です
      • Zone Apex には NS レコードが必須であり、CNAME は別のレコードタイプと共存できないという点が矛盾するから。
      • 詳細は RFC1912
  • Alias レコード

    • AWS リソースの FQDN(Fully Qualified Domain Name) を指定できる Route 53 固有の機能
    • CNAME では利用できなかった Zone Apex のレコードを追加することが可能です。
    • CloudFront, Elastic Beanstalk ,ELB, API Gateway, VPC インターフェースエンドポイント, Global Accelerator, S3 の静的ホスティングなど
  • MX レコード

    • メールサーバ

DNS ルーティング

  • シンプルルーティング
    • レコードセットに事前設定された値のみに基づいて DNS クエリに応答する方式
    • デフォルトのルーティングです
      simple_routing
  • 位置情報ルーティング
    • ユーザーの位置情報(DNS クエリの発信位置)に基づいて DNS クエリに応答する方式
    • デフォルトのルーティングを指定しておかないと、設定した地域以外からは名前解決できないので注意が必要です。(日本と米国のみ定義した場合、それ以外の地域からはアクセスできなくなります)
      geolocation_routing
  • 地理的近接性ルーティング
    • ユーザーの位置情報(DNS クエリの発信位置)とサーバが分散配置されている場合、最も近いところに応答する方式
      geoproximity_routing
    • 「位置情報ルーティング」との違いが分かり難い
  • レイテンシールーティング
    • サーバが分散配置されている場合、最もレイテンシーが低いところに応答する方式
      latency_routing
  • 加重ルーティング
    • 複数のエンドポイントに重みを設定して、重みに応じて DNS クエリに応答する方式
      weighted_routing
  • フェイルオーバールーティング
    • ヘルスチェックに基づいて、利用可能なリソースに DNS クエリを応答する方式
      failover_routing
    • このルーティングを用いることで、マルチリージョンでのフェイルオーバーを構成できます
      multi_region_failover_routing
  • 複数値回答ルーティング
    • ランダムに選ばれた最大8つの正常なレコードに IP アドレスを設定して、複数の値を応答する方式
    • ≒ELB(ELB に代わるものではないが近い機能)
      multivalue_routing
  • IP ベースルーティング

Route 53 Resolver

VPC に標準で配備されている DNS サーバー(フォワーダー+フルサービスリゾルバ)のことで、以前は、「.2 Resolver」や「Amazon Provided DNS」と呼ばれていたものです。

route53_resolver

一般的に、リゾルバ(Resolver)とは、DNS サーバへドメイン名を照会して対応する IP アドレスを調べたり、その逆(IP アドレス → ドメイン名)を調べたりするソフトウェアのことを言います。

フォワーダーとは、自身では DNS 非再帰的問い合わせを行わず、別のフルサービスリゾルバーに転送する DNS サーバーのことです。

フルサービスリゾルバとは、非再帰的問い合わせを行い、名前解決を行う DNS サーバーのことです。

非再帰的問い合わせとは、知っている情報のみを回答してもらうリクエストです。再帰的問い合わせは、答えが分かるまで繰り返して問い合わせを行わせるリクエストです。

クライアントからは、再帰的問い合わせ が行われ、フルサービスリゾルバから権威 DNS サーバには 非再帰的問い合わせ が行われます。権威 DNS サーバは自身が管理している情報のみを回答するのが役割です。

Route 53 Resolver for Hybrid Clouds

オンプレミスとクラウドのリソースによって構成された環境での名前解決を一元化するための Amazon Route53 Resolver の機能拡張です。

実体は、ENI(Elastic Network Interface)なので、セキュリティグループによるアクセス制御が可能です。

route53_resolver_hybrid

DNS ヘルスチェック

Route53 ヘルスチェックには、エンドポイント、他のヘルスチェックのステータス、CloudWatch アラーム等があります。

Amazon Route 53 ヘルスチェックの種類

エンドポイントのヘルスチェックを使用することで、特定の URL へのウェブページのリクエストなどの正常性を確認できます。ヘルスチェック対象のウェブページは、HTTP ステータスコード 2xx または 3xx で応答する必要があります。

ヘルスチェックには別途料金が発生します。

Amazon Route 53 の料金

Amazon Route 53 料金表

ホストゾーン、レコード数、処理されたクエリ数で課金されます。

ホストゾーンの料金は、1 か月未満でも日割り計算されませんので注意が必要です

テスト目的として利用できるように、作成後 12 時間以内に削除された場合は無料となります。ただし、クエリ数での課金は発生します。

  • 無料枠
    • 作成後 12 時間以内に削除されたホストゾーン

Route 53 のクォータ

主なクォーターは次の通りです。

項目 Quota 引き上げ
ドメイン数 20 個 Yes
ホストゾーン 500 個 Yes
レコード数 10,000/ホストゾーン Yes(ただし追加料金)

それ以外については、ドキュメントを参照してください。

Amazon Route 53>クォータ

Amazon Route 53 が DNS リソースレコードセットに対するアクセス許可をサポート(2022-9-21)

Amazon Route 53 が DNS リソースレコードセットに対するアクセス許可をサポート

今までは、IAM ポリシーで Route 53 のホストゾーンに対するレコード操作を制限することができましたが、特定のレコードだけという制限は出来ませんでした。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "route53:ChangeResourceRecordSets",
      "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333"
    }
  ]
}

アップデートにより、特定の名前の DNS レコードへのアクセス制限ができるようになりました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "route53:ChangeResourceRecordSets",
      "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333",
      "Condition": {
        "ForAllValues:StringEquals": {
          "route53:ChangeResourceRecordSetsNormalizedRecordNames": [
            "example.com",
            "marketing.example.com"
          ]
        }
      }
    }
  ]
}

特定のサフィックスに対して制御する場合は次のようになります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "route53:ChangeResourceRecordSets",
      "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333",
      "Condition": {
        "ForAllValues:StringLike": {
          "route53:ChangeResourceRecordSetsNormalizedRecordNames": [
            "*-beta.example.com"
          ]
        }
      }
    }
  ]
}

詳細については、ドキュメントを参照してください。

きめ細かなアクセスコントロールのための IAM ポリシー条件を使用してリソースレコードセットを管理する

📖 まとめ

route53

GitHubで編集を提案

Discussion