AWS初心者による、SAA取得に向けた学習の記録②

※記事について著作権等で問題がありましたら、お手数ですがコメントいただけると幸いです。<br>早急に修正か、必要に応じて記事を削除いたします。

[AWS初心者による、SAA取得に向けた学習の記録①](https://qiita.com/t17_hr/items/106838afc10a54eea3f0) の続きです。

今回は

* CloudFront
* Route 53

についての内容となります。

※参考書籍
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト・アソシエイト 改訂版第2段](https://www.amazon.co.jp/dp/B08MVXRFFN?
tag=maftracking339397-22&linkCode=ure&creative=6339) 

関連記事へのリンクはこちらからどうぞ。

* [AWS初心者による、SAA取得に向けた学習の記録①](https://qiita.com/t17_hr/items/106838afc10a54eea3f0)
* AWS初心者による、SAA取得に向けた学習の記録②
* [AWS初心者による、SAA取得に向けた学習の記録③](https://qiita.com/t17_hr/items/5b85d13db5fb4044c01d)
* [AWS初心者による、SAA取得に向けた学習の記録④](https://qiita.com/t17_hr/items/f35cb0e313fd7863afb6)
* [AWS初心者による、SAA取得に向けた学習の記録⑤](https://qiita.com/t17_hr/items/ce20a44f1c586c145da3)
* [AWS初心者による、SAA取得に向けた学習の記録⑥](https://qiita.com/t17_hr/items/cbdc5c053a7bf63fa2a6)

# CloudFront

**CloudFront** は、静的コンテンツをキャッシュし、オリジンサーバーの代わりに配信する **CDN(Contents Delivery Network)** サービスです。

## CloudFrontのバックエンド

* CloudFrontはCDN(Contents Delivery Network)のため、元となるコンテンツを保持する **バックエンドサーバー（オリジンサーバー）** が必要
* オリジンサーバーとして、ELB(Elastic Load Balancing)、EC2、S3の静的ホスティングを利用可能
* オンプレミスのサーバーも指定可能
* URLのパスに応じて異なるオリジンサーバーの指定することで、一つのドメインで複数のサービスの提供が可能

![CloudFront.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/3c91b0e4-a0f9-0f62-deb9-b4ec4c2c49f4.png)

画像引用元：[Amazon CloudFront 概要](https://qiita.com/KWS_0901/items/7a81d0104b46cdd0d3d2)

## ディストリビューション

配信するコンテンツの内容によって使い分けます。

* ダウンロードディストリビューション
* ストリーミングディストリビューション

### ダウンロードディストリビューション

* HTTPやHTTPSを使って、HTMLやCSS、画像などのデータを配信する際に使用

### ストリーミングディストリビューション

* RTMP(Real Time Messaging Protocol)を使って、動画のストリーミング配信をする際に使用

※RTMPは2020年12月31日以降は非推奨

## キャッシュルール

* 拡張子やURLパスごとにキャッシュ期間の指定が可能
 * 頻繁に更新される静的コンテンツ（HTMLなど）は期間を短く、あまり更新されないコンテンツ（画像・動画）は長くする等
* 動的サイトのURLパスは、キャッシュを無効化することでCloudFrontをネットワーク経路としてだけ使用することも可能

# Route 53

**Route 53** は、

* ドメイン管理
* 権威DNS

の機能を持つサービスで、WebコンソールやAPIから、簡単にドメイン情報やゾーン情報の設定・管理ができます。

それだけではなく、ネットワークトラフィックのルーティングや、接続先のシステム状況に応じた接続先の変更といったオプション機能もあり、
これらを利用することで可用性やレスポンスを高めることが可能になります。

## ドメイン管理

* 新規ドメインの取得や更新などの手続きが可能
 * これにより、ドメインの取得からゾーン情報の設定まで、Route53で一貫した管理が可能に
* ドメインの年間利用料は通常のAWS利用料の請求に含まれるため、別途支払い手続きが不要
* ドメインの自動更新機能あり

## 権威DNS

* DNSは、ドメイン名とIPアドレスを変換（名前解決）するシステム
* 権威DNSは、ドメイン名とIPアドレスの変換情報を保持しているDNS
 * 変換情報を保持していないDNS（キャッシュDNS）と区別するときに使用
* Route53は権威DNSのため、保持しているドメイン名以外の名前解決をリクエストしても応答しない
 * キャッシュDNSを別途用意する必要あり

## ホストゾーンとレコード情報

* ホストゾーンは、レコード情報の管理単位を表す（通常はドメイン名）
 * 「example.com」のレコード情報を管理する場合のホストゾーンは「example.com」
* レコード情報は、「www.example.comはIPアドレスが192.168.0.100である」といった、ドメイン（またはサブドメイン）名とIPアドレスを変換するための情報
 * レコード情報には「Aレコード」「MXレコード」「CNAMEレコード」といった種類がある
 * Route53で特徴的なレコードとして「Aliasレコード」がある
 * Aliasレコードは、レコード情報に登録する値として、CloudFrontやELB、S3などのAWSリソースFQDNを指定できる
 * CNAMEでも同様に登録は可能だが、CNAMEとの違いの一つとして「Zone Apex」も登録が可能
* Zone Apexは、最上位ドメイン（Route53の場合はホストゾーン名）のこと
 * 例）「example.com」をS3のWebサイトホスティングサービスにアクセスする独自ドメインとして利用したい場合、Route53以外のDNSではCNAMEのレコードの仕様上登録が不可。しかしRoute53であればAliasレコードを使って登録が可能。

※FQDNとは、DNS（Domain Name System）などのホスト名、ドメイン名（サブドメイン名）などすべてを省略せずに指定した記述形式のこと。 例えば、「www.example.co.jp.」はホスト名「www」とドメイン名「example.co.jp」をすべて揃えたFQDNとなる。

引用元：[FQDN － ＠IT ネットワーク用語事典](https://www.atmarkit.co.jp/aig/06network/fqdn.html#:~:text=FQDN%E3%81%A8%E3%81%AF%E3%80%81DNS%EF%BC%88Domain,%E6%8F%83%E3%81%88%E3%81%9FFQDN%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82)

![Route53(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/51b7c8da-f880-61b8-caad-8b599e03cbf7.png)

画像引用元：[AWS Route53とルーティングポリシー](https://ichi.pro/aws-route-53-to-ru-thingu-porishi-202157263897878)


![Route53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/b3e04535-03a2-2c68-369e-5e29de1a9ea6.png)

画像引用元：[Amazon Route53の新機能 ELBをHealth Checkのターゲットにしてみた](https://dev.classmethod.jp/articles/route53-elb-healthcheck/)


## トラフィックルーティング

Route53にゾーン情報を登録する際に、名前解決の問い合わせに対しての応答方法を決める7種類のルーティングポリシーがあります。

* シンプルルーティングポリシー
* フェイルオーバールーティングポリシー
* 位置情報ルーティングポリシー
* 地理的近接性ルーティングポリシー
* レイテンシールーティングポリシー
* 複数値回答ルーティングポリシー
* 加重ルーティングポリシー

### シンプルルーティングポリシー

* 特殊なルーティングポリシーを使わない、標準的な1対1のルーティング

### フェイルオーバールーティングポリシー

* アクティブ/スタンバイ方式
* アクティブ側のシステムへのヘルスチェックが失敗したときに、スタンバイ側のシステムへルーティングする
* 本番システム障害児にSorryサーバーのIPアドレスをセカンダリレコードとして登録しておくことで、自動的にSorryコンテンツを表示させる

### 位置情報ルーティングポリシー

* ユーザーの位置情報に基づいてルーティング
* 例）「日本からのアクセスは日本語のコンテンツが配置されたWebサーバーに接続する」といった制御が可能

### 地理的近接性ルーティングポリシー

* リソースの場所に基づいてルーティング
* 必要に応じてトラフィックをある場所のリソースから別の場所のリソースに移動する際に使用
* 後述するトラフィックフローを前提とする

### レイテンシールーティングポリシー

* 複数箇所にサーバーが分散されている場合、遅延が最も少ないサーバーにリクエストをルーティング
* 特定サーバーだけが高負荷になった場合にリクエストの分散が可能

### 複数値回答ルーティングポリシー

* 一つのレコードに異なるIPアドレスを複数登録し、ランダムに返却されたIPアドレスに接続
* ヘルスチェックがNGになったIPアドレスは返却されないため、正常に稼働しているサーバーにのみアクセスを分散させることが可能

### 加重ルーティングポリシー

* 指定した比率で複数のリソースにトラフィックをルーティングする際に使用
* 例）拠点をまたがってリソースの異なるサーバーが配置されている場合に、リクエスト比率を調整する
* ABテストのため、新サービスをリリースしたサーバーに一定割合のユーザーを誘導したい場合にも使用可能

※ABテストは、ある特定の期間でどちらがより効果の高い成果を出せるのかを検証するテストのこと

<br>

これらのルーティングポリシーは、信頼性やパフォーマンス等、重視する内容によって使い分けが必要になります。


## トラフィックフロー

* ルーティングポリシーを組み合わせることで様々なルーティン環境を構築できるが、各レコード間の設定が複雑になってしまうことがある
* トラフィックフローはそれらの組み合わせを、ビジュアル的にわかりやすく組み合わせるためのツールを使って定義する

## DNSフェイルオーバー

* Route53が持つ、フォールトトレラントアーキテクチャ
 * システムに異常が発生した場合でも、被害を最小限に抑えるための仕組み
* DNSフェイルオーバーはヘルスチェックの結果により発動し、障害発生時に稼働中のシステムから一時的にSorryサーバーに切り替えるといったことが可能
* Route53のヘルスチェックは3種類
 * エンドポイントをモニタリングするヘルスチェック<br>
 → IP アドレスあるいはドメイン名で特定のエンドポイントをモニタリングする
 * 他のヘルスチェック (算出したヘルスチェック) を監視するヘルスチェック<br>
 → 他のヘルスチェックの正常または異常の判断を、Route 53 が行うべきかどうかをモニタリングする
 * CloudWatch アラームをモニタリングするヘルスチェック<br>
 → 作成したアラームをモニタリングする CloudWatch と同じデータストリームをモニタリングするヘルスチェック

# 終わりに

最後まで読んでいただきありがとうございました。

<br>

関連記事はこちらからどうぞ。

* [AWS初心者による、SAA取得に向けた学習の記録①](https://qiita.com/t17_hr/items/106838afc10a54eea3f0)
* AWS初心者による、SAA取得に向けた学習の記録②
* [AWS初心者による、SAA取得に向けた学習の記録③](https://qiita.com/t17_hr/items/5b85d13db5fb4044c01d)
* [AWS初心者による、SAA取得に向けた学習の記録④](https://qiita.com/t17_hr/items/f35cb0e313fd7863afb6)
* [AWS初心者による、SAA取得に向けた学習の記録⑤](https://qiita.com/t17_hr/items/ce20a44f1c586c145da3)
* [AWS初心者による、SAA取得に向けた学習の記録⑥](https://qiita.com/t17_hr/items/cbdc5c053a7bf63fa2a6)

※参考書籍
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト・アソシエイト 改訂版第2段](https://www.amazon.co.jp/dp/B08MVXRFFN?
tag=maftracking339397-22&linkCode=ure&creative=6339)