AWS Cloud Practitioner 学習記録４

:::note info
AWS Skill Builder における下記コンテンツの学習記録（ポイントとメモ）です
AWS Cloud Practitioner Essentials (Japanese) (日本語実写版)
:::

# モジュール４：ネットワーク
### 概要
コーヒーショップにて：お客さんがレジスタッフ（注文レイヤ）ではなくバリスタ（製造レイヤ）へ直接注文を投げてこないようにしたい。。。

お客さん（インターネット）に対応するレジ係（パブリックリソース）と、店舗内で働くバリスタ（プライベートリソース）を分けるため、
VPC でネットワークを制御して適切なサブネット配置を考えるためのおはなし

### AWS への接続
仮想プライベートクラウド（VPC：Virtual Private Cloud）は、AWS 内で専用のプライベートネットワークであり、VPC では AWS リソースのプライベートIPアドレスの範囲を定義できる
VPC 内には EC2 や ELB といったリソースを配置し、各リソースをサブネットでグループ化することができる
このサブネットをネットワークルールによって、公開するかどうか制御する

##### Amazon Virtual Private Cloud (Amazon VPC)
AWS リソースに対する境界を確立するネットワークサービス
VPC 内でリソース（EC2 インスタンスなど）をサブネットに整理することができる

##### インターネットゲートウェイ（IGW:Internet GateWay）
インターネットからのパブリックトラフィックが VPC にアクセスできるようにする出入口
VPC にインターネットゲートウェイをアタッチすると、クライアントのリクエストは VPC 内のリソースへのアクセス権を得る

##### 仮想プライベートゲートウェイ（VGW:Virtual private GateWay）
インターネットから特定のトラフィックのみが VPC にアクセスできるようにする出入口
VPC に仮想プライベートゲートウェイをアタッチすると、企業データセンターや企業内ネットワークなどと VPC 内リソースとの間で、仮想プライベートネットワーク（VPN）接続を確立できるようになる

##### AWS Direct Connect
企業データセンターなどと VPC の間に、専用のプライベート接続を確立するサービス。いわゆる専用線での接続を実現できる
企業はAWS Direct Connect ロケーションにトラフィックをルーティングすることで、Direct Connect によるプライベート接続を通して仮想プライベートゲートウェイを経由し、VPC 内のリソースへアクセスできるようになる

### サブネットとネットワークアクセスコントロールリスト（ACL）
##### サブネット
+ パブリックサブネット：Webサイトなど、インターネットに一般公開するリソースを配置する
+ プライベートサブネット：個人情報を含むデータベースなど、プライベートネットワークを介してのみアクセス可能なリソースを配置する

VPC においては、サブネットは相互に通信可能となっている

##### VPC 内のネットワークトラフィック
インターネットなどネットワークを経由して送信されるリクエストは、**パケット**を単位として送信される
このパケットがサブネットを出入りする際にアクセス許可をチェックする VPC コンポーネントとして、ネットワークアクセスコントロールリスト（ACL）がある

##### ネットワーク ACL
**ネットワーク ACL**は、サブネットレベルでインバウンドトラフィック／アウトバウンドトラフィックを制御する仮想ファイアウォール

VPC を利用する場合に、アカウントデフォルトもしくはカスタムのネットワーク ACL を作成して適用できる
+ アカウントデフォルトのネットワーク ACL
    + すべてのインバウンド／アウトバウンド通信を**許可する**
    + ルールを追加して変更できる
+ カスタムネットワーク ACL
    + すべてのインバウンド／アウトバウンドトラフィックを**拒否する**
    + 許可するルールを指定することで制御できる

すべてのネットワーク ACL には明示的拒否ルールがあり、
パケットが**いずれのルールにも一致しない場合には拒否する**ように動作する

##### ステートレスパケットフィルタリング
ネットワーク ACL は、**ステートレス**パケットフィルタリングを行う
パケットは、サブネットの境界を通過するたび、その方向（インバウンド／アウトバウンド）によらずチェックされる
パケットがサブネットに入ったあとは、各リソースへのアクセス許可を評価する必要があるが、これを実現するのが**セキュリティグループ**である

##### セキュリティグループ
**セキュリティグループは**、Amazon EC2 インスタンスへのインバウンド／アウトバウンドトラフィックを制御する仮想ファイアウォール

デフォルトでは、セキュリティグループはすべての**インバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可する**
カスタムルールを追加することで、許可する／拒否するトラフィックを制御する
VPC 内に複数のインスタンスがあるときは、それらを１つのセキュリティグループに関連付けることもできる

##### ステートフルパケットフィルタリング
セキュリティグループは、**ステートフル**パケットフィルタリングを行う
受信（リクエスト）パケットに対して行った以前の処理情報がセキュリティグループに保存されることで、そのパケット対応する戻り（レスポンス）のパケットは通過できる、といった制御がなされる

### グローバルネットワーク
お客さまが AWS インフラストラクチャと通信するためのしくみ

##### ドメインネームシステム（DNS）
AWS でホストされる、とあるウェブサイトを訪問する際にブラウザからアクセスした URL（ドメイン） が、**ドメインネームシステム（DNS）** によって該当ウェブサイトのインフラストラクチャを示すIPアドレスとして特定される

ドメインの解決は以下のように行われる
1. URL（ドメイン名）がリクエストされ、 DNS リゾルバ に送信される
2. DNS リゾルバは、DNS サーバに該当ドメインに対応するIPアドレスを訪ねる
3. DNS サーバは、該当するウェブサイトのIPアドレスを応答として提供する

##### Amazon Route 53 [^1]
AWS が提供する DNS ウェブサービス
Amazon EC2 や ロードバランサーなどの AWS で実行するインフラストラクチャへユーザリクエストを案内する、あるいは AWS 外のインフラストラクチャへルーティングすることもできる
もう１つの機能として、ドメイン名の DNS レコード管理がある
新しいドメイン名を Route 53 に直接登録したり、他のドメインレジストラが管理する既存ドメイン名の DNS レコードを転送することもできる

##### Amazon Route 53 と Amazon CloudFront がコンテンツを配信する方法
ウェブサイトはいくつかの EC2 インスタンスで実行され、インスタンスはApplication Load Balancer(ALB) がアタッチされた Auto Scaling グループ内にあるものとする
1. ブラウザからウェブサイトへ接続をリクエストする
2. Route 53 が DNS 解決により、対応するIPアドレスを特定して応答する[^2]
3. ユーザのリクエストは CloudFront を介してエッジロケーションに送信される
4. CloudFront からウェブサイトの ALB に接続され、パケットが EC2 インスタンスに到達して処理される



#
このモジュールもおおよそ３０分程度で読み終わりますが、
理解したことをまとめるのはそれ以上に時間がかかりますね
CloudFront はモジュール３の方で出てきましたが、こちらのモジュール４で登場する Route53 との組み合わせが紹介されています


[^1]:DNS は TCP/UDP の53番ポートを利用して通信されることから、こんな名前になっている（らしい）

[^2]:おそらく Practitioner の範囲でぐだぐだと説明しなくてよいようにうまいこと書いてあるが、このドメインは Route53 の DNS レコード管理（ルーティング設定）で CloudFront ディストリビューションに割り当ててあるものと理解