AWS Route53 DNSについて

#Route53とは？
Amazon Route 53 は、可用性と拡張性に優れた**ドメインネームシステム（DNS）**ウェブサービスです。Route 53 を使用すると、**ドメイン管理機能、****権威DNSルーティング**、**ヘルスチェック**の 3 つの主要な機能を任意の組み合わせで実行できます。
##DNSってなんだっけ？
- DNSはインターネットにおける人向けのURLをシステム向けの住所となるIPアドレスに変換するための仕組み。
- ドメイン名とIPアドレスを変換（名前解決する）システムです。

##権威DNSサーバーとキャッシュDNSサーバー(フルサービスリゾルバ)って？
###権威DNSサーバー
**名前解決がある機能**
<img width="925" alt="スクリーンショット 2020-03-04 9.54.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/81d50f35-e75b-48bf-d61a-48942ea5da71.png">

キャッシュに情報がない場合は、権威DNSサーバに「こっちだとわからなかったんだけど、https://qiita.com に紐づく**IPアドレス**わかる？」と問い合わせをします。権威DNSサーバは、**ドメイン**と**IPアドレス**が紐づけて登録された**一覧のようなものを管理しているDNSサーバ**です。管理するドメインに紐づけされたIPアドレスや、その範囲内の詳しい情報（「ゾーンファイル」といいます）を持っており、フルサービスリゾルバからの問い合わせを受けると、そのゾーンファイルを参照して、情報があった場合には「あったよ！」と、ドメインとIPアドレスの情報を返答します。なかった場合には「なかったよ！」と返答します。

これが、DNSの「名前解決」のしくみです。
###キャッシュDNSサーバー(フルサービスリゾルバ)

パソコンなどの端末からの「https://qiita.com というWEBサイトが見たい！」という問い合わせに対して、キャッシュ（一時保存／過去の記憶のようなもの）を参照し、キャッシュにその情報があった場合には「あったよ！」と、その紐づいたドメインとIPアドレスを返答する。
#Route53の利用方法
Route53の利用を開始してドメインを登録すると自動で**ホストゾーン**を自動生成し、そこにルーティングを設定する。
<img width="1080" alt="スクリーンショット 2020-03-04 10.05.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/00884748-3eba-76dc-a0b8-84524072783b.png">
##②ホストゾーンとは
<img width="827" alt="スクリーンショット 2020-03-04 9.58.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/42a20a24-a818-1846-4b1c-42b75a5d5965.png">
##パブリックホストゾーンとは
インターネット上に公開されたDNSドメインのレコードを管理するコンテナ
インターネットのDNSドメインに対して、トラフィックをどのようにルーティングするかを定義

##プライベートホストゾーンとは
• VPCに閉じた**プライベートネットワーク内**のDNSドメインのレコードを管理するコンテナ
• VPC内の**DNSドメイン**に対して、どのように**トラフィックをルーティングするかを定義**
• インターネットにリソースを**公開せず**に、名前解決が可能
• **1つのプライベートホストゾーン**で、**複数のVPC**をサポート
• 複数のVPCネットワークで、同じホストゾーンを利用可能
• **複数リージョン**のVPCでも、同じホストゾーンを利用可能。ただしVPCが相互にアクセスできることが必要。
• パブリックホストゾーンと合わせて、スプリットビューが設定可能
**制約・注意点**
– Route 53 ヘルスチェックは利用できない
– ALIASレコードは、ホストゾーン内のRoute 53リソースレコードセットのみサポート
– プライベートホストゾーンを使用するには、以下のVPC 設定を trueに設定する必要がある

#③サポートされる DNS レコードタイプ
**主なDNSレコード**

| タイプ | 略 | 概要 |
|:--|:--|:--|
| A | Address | IPv4 IPアドレス。 |
| AAAA | ? | IPv6 IPアドレス |
| CNAME | Canonical NAME | ドメイン名の別名。 |
| NS | Name Server | ドメインの管理の委譲先の権威DNSサーバのドメイン名 |
| MX | Mail Exchange | ドメインへのメール配送先サーバのドメイン。 |
| TXT | TeXT | コメント行。Sender Policy Frameworkにも使える |
| PTR | PoinTeR | IPアドレスに対応するドメイン名。 |
| SOA | Start Of Authority | プライマリネームサーバ、ドメイン管理者の電子メール、ドメインのシリアル番号(更新されたかどうかの判別に使う)、ゾーンのリフレッシュなど |

上記のDNSレコード以外に、Route 53には独自の**DNSレコードALIAS**がある
##ALIASレコードってどんなもの？
ALIASレコードとは
– Route 53固有の仮想リソースレコード
– DNSクエリに対して、以下のAWSサービスのエンドポイントのIPアドレスを直接返す(通常はCNAMEを利用)
• 静的ウェブサイトとして設定されたS3バケット
• CloudFront ディストリビューション
• ELB
• ホストゾーン内のリソースレコードセット (複雑なポリシーの作成で使用)

**ALIASレコードを使うメリット**
– DNSクエリに対するレスポンスが高速
– Zone Apexが利用可能
– ALIASレコードに対するクエリが無料(S3, CloudFront, ELB)

##④トラフィックルーティング
**トラフィックルーティングとは**
Route53にゾーン情報を登録する際、名前解決の問い合わせに対してどのように応答するかを決める７種類のルーティングポリシーがある。

###シンプルルーティングポリシー###
特殊なルーティングポリシーを使用しない１対１のルーティング
ドメインで特定の機能を実行する単一のリソースがある場合に使用します。たとえば、example.com ウェブサイトにコンテンツを提供する 1 つのウェブサーバーなどです。

###フェイルオーバールーティングポリシー###
アクティブ/パッシブフェイルオーバーを構成する場合に使用します。

###位置情報ルーティングポリシー###
ユーザーの位置に基づいてトラフィックをルーティングする場合に使用します。

###地理的近接性ルーティングポリシー###
リソースの場所に基づいてトラフィックをルーティングし、必要に応じてトラフィックをある場所のリソースから別の場所のリソースに移動する場合に使用します。

###レイテンシールーティングポリシー###
複数の AWS リージョンにリソースがあり、レイテンシーの最も小さいリージョンにトラフィックをルーティングする場合に使用します。

###複数値回答ルーティングポリシー###
ランダムに選ばれた最大 8 つの正常なレコードを使用して Route 53 が DNS クエリに応答する場合に使用します。

###加重ルーティングポリシー###
指定した比率で複数のリソースにトラフィックをルーティングする場合に使用します。

##トラフィックフロー
ルーティングポリシーを組み合わせる事で様々なルーティング環境を構築する事ができます。
##トラフィックフローのメリット
###トラフィックフローを使わない場合
– 従来の方法では、ALIASレコードを駆使して、複雑なルーティングポリシーを作成していた
• Aliasレコードで別のリソースレコードを参照し”Alias Tree”を作成
– 設定やレコード間の関連が複雑になり、どのようにルーティングされるのか直感的にわかりにくい
###トラフィックフローを使った場合
– 複数の条件を組み合わせたルーティングをエディタでビジュアルに作成することができる
– これまで必要だったALIASレコードの設定は内部で自動的に作成される
– ユーザーはALIASレコードを意識する必要がなく、簡単に複雑なルールを作成できる

#ヘルスチェック
<img width="915" alt="スクリーンショット 2020-03-04 10.54.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522222/d52eac84-5fd4-7500-bf59-143eb5649d85.png">

#最後に
次回はCDNサービスCloud Frontについてまとめます！