AWS SAA対策メモ（VPC, ELB, Auto Scaling, Route 53 & Direct Connect, CloudFront編）

~~SAA対策の自分用のメモ。~~
7/13にSAA合格

SOA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

## VPC
☆パブリックサブネットとプライベートサブネットの定義は？違いは？
サブネットのルートテーブルのデフォルトゲートウェイ（0.0.0.0/0）がインターネットゲートウェイなら、パブリックサブネット。指定が特にないなら、プライベートサブネット。

NATインスタンスの特徴は？
NATゲートウェイの代わりに置く。プライベートサブネットのEC2インスタンスをネット接続させる。ただし、送信元送信先チェックの機能を無効化し、自身への通信トラフィックを破棄する設定が必要。また、単一障害点とならないように冗長化構成も必要。あまりおすすめしない。

Elastic IPとは？いつ課金？
固定のグローバルIPアドレス。これをつけていると、EC2インスタンスを再起動してもIPは変わらない。EC2にアタッチされていない、または、アタッチされているEC2が停止状態の場合に課金される。使っていないなら開放しよう。

**☆VPCエンドポイント**
エンドポイントを作成すると、パブリックIPアドレスを持つインターネットからしかアクセスできないサービスにもVPC内からアクセス可能。
「インターネットからのアクセスを排除できる」
1. ゲートウェイ型　ルートテーブルに指定されたターゲットを追加することで、ネット接続なしにプライベート接続でS3やDynamoDBにアクセス可能。
2. インターフェース型　AWS PrivateLinkのこと。APIコールに対して、ネット接続なしにプライベート接続可能。EC2 API、CloudWatch、SNS、Systems Managerなど

VPCピアリング接続はリージョンやアカウントをまたいだシステム間の通信が可能。ただし、中国リージョンではできない！


☆SGとネットワークACLの違いは？
対象はインスタンスか、サブネットか
デフォルトはイン拒否とアウト許可か、インアウト許可か
全てのルール適応か、順番に適応か
ステートフルか、ステートレスか

SGは通常、インバウンドは最低限必要な通信のみ許可。アウトバウンドは全て許可。

**Egress-only インターネットゲートウェイ**
冗長化されたゲートウェイ。IPv6を利用してVPCからインターネットへアクセスできる。

## ELB
通信負荷軽減、耐障害性の向上のためにトラフィックを分散。
オートスケール
トラフィックの急増により、オートスケールが間に合わないときがある。予めわかっているのであれば、**暖機運転（Pre-Warming）／暖機申請**を行う。AWSサポートにて申請する。ビジネスかエンタープライズのみ。
アクセスうログはS3に保存される。

IPが自動で振り分けられるが、変動してしまう。そのため、ELBへの接続にはDNS名を使う（エンドポイント）
SSL復号機能（SSL Termination）により、EC2インスタンスの負荷軽減や証明書の一元管理ができる。ALB/CLBに証明書を設定する必要あり。これにはCertificate Managerが使える。クライアントーELB間は443ポートのSSL通信、ロードバランサーーターゲットインスタンス間は80ポートのHTTP通信。
SGをつけてアクセス制御可能（NLBはできない）
ヘルスチェック機能（healthy/unhealthy）により、正常でないEC2インスタンスへの振り分けを止める。

**スティッキーセッション**
一度セッションを保持したら、そのサーバーに再度リクエストするようにできる。
ALBかCLBで「アプリケーションのCookieに従う」という設定で利用可能。
オンプレからAWSに移行時にあまり修正せずにできるのが利点。

**Connection Draining**
ELBからサーバーを登録解除する際に、処理が中断しないように解除を遅延させる機能。
クロスゾーン負荷分散とは、複数のAZに登録された全てのインスタンスにリクエストを均等に分散させること。

**Application Load Balancer (ALB)**
**コンテンツベースルーティング**
パスペース、ホストベースのルーティングすること
従来はパスやホストが異なると一つ一つにCLBをつけていたが、いまはALB一つで済む！

**Network Load Balancer (NLB)**
低レイテンシー高スループット。暖機申請は不要。
送信元IPを保持するので、レスポンスはNLBを経由せずに直接クライアントへ（パフォーマンス↑↑）
SGはない



## Auto Scaling
対象はEC2、ECS、DynamoDB、Aurora。
Auto Scaling groupでリージョンをまたぐことはできない

**スケーリングプラン**

- **手動スケーリング**
最大最小数を定義する（Desired capacity）バッチ処理などに使う

- **動的スケーリング**
スケーリングポリシーを設定。
のアラームに基づいてスケール
   - **Target Tracking Scaling**
特定のメトリクスのターゲット値に基づいてスケール
   - **Step Scaling**
アラームの超過具合によって段階的にスケール
   - **Simple Scaling**
1つのスケーリング調整値に基づいてスケール

- **☆スケジュールスケーリング**
特定の日時や繰り返しでスケーリング可能

**Auto Healing**
Auto Scaling対象のEC2は、ELBでヘルスチェックして異常（running以外）と判断されると削除され、新しいインスタンスが起動され、インスタンス数が維持される。

**ヘルスチェック**
EC2用とELB用の２種類がある。

**クールダウン（タイマー）**
Auto Scalingが連続で実施されないように、待ち時間を設定。新しいインスタンスを起動中のときに、例えばCPU使用率が変動して閾値を数回越えると、その分だけまた新しいEC2インスタンスを作成してしまう。

**ライフサイクルフック**
Auto ScalingによるEC2インスタンスの起動または終了を一時的に待機させ、指定したアクションを実行できる。例えば、終了前にログを出力するとか。

営業中／業務時間中にスケーリング→スケジュールスケーリング

☆可用性についての考え方
3AZであれば、ピーク負荷最小値を50%にすると、50%, 50%, 50%となり、1AZで障害が発生しても大丈夫（完全に利用可能な状態）。
一方で、33%, 33%, 33%と設定してしまうと、1AZでの障害で66%しかカバーできなくなってしまうのでフォールトトレランス性は下がる。

## Route 53
**権威DNSサービス**
パブリック／プライベートのホストゾーンの定義の管理を行う。
**ホストゾーン**

- **パブリックホストゾーン**
インターネット上に公開するDNSドメインのレコードを管理するホストゾーン

- **プライベートホストゾーン**
VPCのプライベートネットワークにおいてDNSドメインのレコードを管理するホストゾーン

**☆エイリアスレコード**
Route 53固有の仮想リソースレコード。
エンドポイントのIPアドレスは動的に変化するのでAレコード設定できない。例えばCloudFrontディストリビューションやELB、S3など。そこでエイリアスレコードを活用する。
利点　レスポンスが高速、S3、CloudFront、ELBへのクエリが無料になる。

**☆Zone Apex**
管理しているDNSドメインの頂点のノードのこと
Route 53ですでにNSレコードは４つ登録されており、CNAMEレコードには登録できない。代わりに**エイリアスレコード**を用いる。

**ルーティングポリシー**

- **シンプルルーティング**
設定された値に基づいてルーティング

- **加重ルーティング**
重み付けを行い、それに従ってルーティング。ラウンドロビン。

- **レイテンシールーティング**
遅延が少ないリソースへルーティング
ダウンタイムを最小限に抑えたいときに使用

- **フェイルオーバールーティング**
ヘルスチェックに基づき、正常なリソースへルーティング

- **位置情報ルーティング**
クライアントの位置情報に基づきルーティング。地理的に最適なELBにルーティングするときに使用


**DNSフェイルオーバー**
エンドポイントのヘルスチェックを行い、正常なものにだけルーティングされるようにする。1つも正常なエンドポイントがない場合、逆に全てのエンドポイントを正常とみなしてルーティングする。

## Direct Connect
**物理接続**
AWSのDCの場所は不明なので、Direct Connectロケーションというところから間接的に接続する。（東京２ヶ所、大阪２ヶ所、台湾１ヶ所）

- **専有型**
相互接続ポイント(Direct Connect ロケーション)にユーザーがネットワーク機器を設置し、専用線を引き込む。１Gbps or 10Gbps

- **共有型**
相互接続ポイント(Direct Connect ロケーション)に通信事業者などがネットワーク機器の専用線を引き込み、それを論理的に分割し、複数企業で利用する。〜10Gbps


**論理接続**
物理的な接続を論理的に分割し、複数のAWSアカウントで利用可能。
分割された接続は仮想インターフェイス（VIF: Virtual Interface）で構成されており、VLAN IDが割り当てられる。開発や本番環境などの用途別にできる。

**インターネットVPN**
安くて比較的すぐ使える。帯域制限・ネットワーク制限あり。通信品質は劣る。

**ハードウェアVPN**
オンプレに専用ハードウェアを設置するタイプ

**Direct Connect Gateway**
1つのリージョンで接続を確立すれば、これ経由で別リージョンにもアクセスが可能。

☆主回線にはDirect Connect、主回線で障害発生した場合ように副回線としてVPNコネクションを使うケースがある。


## CloudFront
エッジロケーションからコンテンツを配信（CDN）
地理的に最も近いキャッシュサーバーからコンテンツを受け取るので低レイテンシー。

- **オリジンサーバー**
配信するオリジナルファイルのあるサーバー

- **エッジサーバー**
オリジンサーバーのコンテンツをキャッシュするサーバー

- **ディストリビューション**
ドメインごとに割り当てられている設定

オリジンにはオンプレサーバーやEC2、S3やELBが指定可能

**☆署名付きURL**
一定時間だけアクセスできるURLを発行できる（アクセス制御）

**カスタムエラーページ**
地域制限ー地域によってアクセスの許可と拒否を決定可能

☆S3がオリジンサーバーの場合、**Origin Access Identity（OAI）**を使ってS3バケットへのアクセスをCloudFrontからのみにして制限・保護が可能。

リージョン別エッジキャッシュ　エッジロケーションよりも大容量のデータをキャッシュ可能なキャッシュサーバー
※構成図には記載されない