AWS Cloud Practitioner対策5 - ネットワークとコンテンツ配信

# はじめに
AWS Cloud Practitionerの対策として自分用に執筆しています。

:::note warn
この記事はAWS・執筆学びたての初心者が執筆しています。間違いがあるかもしれませんので、ぜひ各項目にある**参考文献**も確認してください。また、誤りがあればコメントで教えていただけると幸いです。
:::

## Amazon VPC
仮想ネットワークを作成する。独自のIPアドレス範囲の選択、サブネットの作成、ルートテーブルの設定、ネットワークゲートウェイの作成などが可能。

## サブネット
VPC内のセクション。パブリックかプライベートを設定できる。VPCを分割するIPアドレスの範囲で、1つのアベイラビリティーゾーンに属する。

## IPアドレス指定
VPCの作成時にIPv4CIDRブロックを割り当てる。変更はできない。また、サブネットのCIDRブロックは重複できない。

| 最大 | 最小 |
|:-:|:-:|
| 16 | 28 |

最小と最大を間違えやすいので注意する。

### 予約IPアドレス

| IPアドレス | 予約済み |
|:-:|:-:|
| 10.0.0.0 | ネットワークアドレス |
| 10.0.0.1 | 内部通信 |
| 10.0.0.2 | ドメインネームシステム（DNS)の解決 |
| 10.0.0.3 | 将来の利用のため |
| 10.0.0.255 | ネットワークブロードキャストアドレス |

## パブリックIPアドレスのタイプ
 - パブリックIPv4アドレス
     - Elastic IPアドレスを使用して手動で割り当てる
     - サブネットレベルでのIPアドレスの自動割り当て設定により自動的に割り当てられる
 - Elastic IP アドレス
     - AWSアカウントに関連付けられている
     - 割り当てと再マッピングはいつでも可能
     - 追加料金がかかる場合がある

## Elastic Newwork Interface
仮想ネットワークインターフェース。インスタンスにアタッチ、デタッチしたり、他のインスタンスにアタッチしてネットワークとふらふぃっくをリダイレクトしたりできる。

## ルートテーブルとルート
ルートテーブルはサブネットからのネットワークトラフィックをルーティングするための設定できる一連のルール。

デフォルトではすべてのルートテーブルにVPCなおの通信用のローカルルートが含まれている。

各サブネットはルートテーブルと関連付けられている必要がある。ローカルルートは削除できない。

## インターネットゲートウェイ
VPC内のインスタンスとインターネットの間の通信を可能にするVPCコンポーネント。
 - インターネットにルーティングできるトラフィックの送信先をルートテーブルに追加する
 - パブリックIPv4アドレスが割り当てられたインスタンスに対してネットワークアドレス変換を実行する

ことができる。

## NATゲートウェイ
プライベートサブネットのインスタンスからはインターネットやAWSの他のサービスに接続できるが、インターネットからはこのインスタンスとの接続ができないようにすることが可能。

NATゲートウェイを作成するのに必要なもの
 - パブリックサブネットの指定
 - Elastic IPアドレスの指定
 - プライベートサブネットの関連付けられているルートテーブルの更新
     - インターネット向けトラフィックをNATゲートウェイに向かわせる

## 共有VPC
AWS Organizationsの同じ組織内の他のAWSアカウントとサブネットを共有できるようになる。

### メリット
 - 責任の分離
 - 所有権
 - セキュリティグループの参照
 - VPNとDirect Connectを効率的に使用できる
 - ハード制限を回避できる
 - コストの最適化

## VPCピアリング接続
2つのVPC間のプライベートなトラフィックのルーティングを可能にするネットワーキング接続。
 - IP空間は重複できない
 - 推移的なピアリング接続はサポートされない
 - 同じ2つのVPC間にはピアリング接続リソースを1つのみ設定できる。
 - ルートテーブルを変更し、送信先を相手のVPCのIPアドレス、ターゲットをピアリングリソースにする。

## カスタマーゲートウェイ
VPNデバイスに関する情報をAWSに提供するAWSリソース。
リモートネットワークと通信（仮想プライベートネットワークまたはVPN接続）するために利用される。サイト間VPN。

## AWS Direct Connect
ユーザーのネットワークとDXロケーションの1つとの間に専用のプライベートネットワーク接続を確立する。

## VPCエンドポイント
サポートされているAWSサービスとAWS PrivateLinkを使用するVPCエンドポイントサービスにVPCをプライベートに接続できるようにする仮想デバイス。インターネットゲートウェイやNATデバイス、VPN接続、Direct Connectを利用しなくても接続できるようになります。
 - インターフェイスエンドポイント
 - ゲートウェイエンドポイント

## Transit Gateway
ネットワークモデルを簡素化する。中央のゲートウェイからネットワーク上にあるVPC、オンプレのデータセンター、リモートオフィスそれぞれに単一の接続を構築して管理するだけで済むようになる。ハブアンドスポークにできる。

## セキュリティグループ
インスタンスの仮想ファイアウォールとして機能する。インスタンスレベルで動作する。
 - インバウンド
     - デフォルトではすべてのインバウンドトラフィックを拒否
 - アウトバウンド
     - デフォルトではすべてのアウトバウンドトラフィックを許可する

セキュリティグループはステートフル。

カスタムセキュリティグループを作成する際、許可ルールの指定はできるが拒否ルールは指定できない。

## ネットワークACL
ネットワークアクセスコントロールリスト。1つ以上のサブネットのインバウンドとアウトバウンドのトラフィックを制御するファイアウォール。サブネットレベルで動作する。
1つのサブネットは一度に1つのネットワークACLにのみ関連付けすることができ、関連付けると以前のネットワークACLの関連付けは削除される。

インバウンドとアウトバウンドのルールが個別に設定されていて、各ルールでトラフィックを許可または拒否できる。デフォルトでは、すべてのインバウンドとアウトバウンドのIPv4トラフィックと、IPv6トラフィックが許可される。ステートレス。

カスタムネットワークACLは、ルールを追加するまですべてのインバウンドトラフィックとアウトバウンドトラフィックを拒否する。許可ルールと拒否ルールの両方を指定可能で、ルールは昇順で順に評価される。

## セキュリティグループとネットワークACLの比較

| 属性 | セキュリティグループ | ネットワークACL |
|:-:|:-:|:-:|
| 範囲 | インスタンスレベル | サブネットレベル |
| サポートされているルール | 許可ルール | 許可ルール・拒否ルール |
| ステート |  ステートフル | ステートレス |
| ルールの順序 | 全てのルールが評価される | ルールが番膨潤に評価される |

## Amazon Route53
DNSサービス。IPv4, IPv6に完全に準拠する。リソースのヘルスチェックを行い、モニタリングを実行する。

 - シンプルなルーティング
     - 単一サーバー環境で使用する。
 - 加重ラウンドロビンルーティング
     - リソースレコードセットに重みを割り当て、頻度を指定する。複数のリソースにトラフィックをルーティングする場合に利用する。
 - レイテンシールーティング
     - 世界中で使用されるアプリケーションのパフォーマンスを向上させる。レイテンシーの最も小さいリージョンにトラフィックをルーティングする。
 - 位置情報ルーティング
     - ユーザーの場所に基づいてトラフィックをルーティングする。
 - 地理的近接性ルーティング
     - リソースの場所に基づいてトラフィックをルーティングする。
 - フェイルオーバールーティング
     - プライマリサイトへのアクセスが不可能になった場合にバックアップサイトにフェイルオーバーする。ウェブサイトの機能停止を検知すると、アプリケーションが正常に動作している他のロケーションにリダイレクトする。
 - 複数値回答ルーティング
     - ランダムに選択された最大8つの正常なレコードを使用してDNSクエリに応答する。可用性と負荷分散を向上させる。

## CloudFront
CDNサービス。エッジロケーションとリージョン別エッジキャッシュのグローバルネットワーク。

コンテンツ要求をされた際に、レイテンシーが最も小さいエッジロケーションにルーティングする。コンテンツが人気ではなくなる（要求される頻度が減る）と、エッジロケーションはこのコンテンツを削除し、リージョン別エッジキャッシュに追加する。
エッジ別リージョンキャッシュはユーザーの近くにあるCloudFrontロケーション。オリジンサーバーと、ユーザーに直接コンテンツを提供するエッジロケーションの間にある。

### 料金設定
 - 送信データ転送
     - データ量に対して、GB単位で課金される。
 - HTTP(S)リクエスト
     - HTTP(S)リクエスト数に対して課金される。
 - 無効化リクエスト
     - 無効をリクエストしたパスごとに課金される。
 - 専用IP独自SSL
     - カスタムSSL証明書機能の専用IPバージョンを使用する1つ以上のCloudFrontディスとリビューションに関連付けらえれた各カスタムSSL証明書ごとに、1ヶ月あたり600USD課金される。