AWS認定アドバンストネットワーキング - 専門知識を受験した時の話

## この記事の概要
2022/09/04
**AWS認定アドバンストネットワーキング - 専門知識**
(AWS Certified Advanced Networking - Specialty (ANS-C01))
を受験したので、その時の記録

復習用ノートとして、また後で見返して今後の資格試験受験時の参考にしたり仕事で使いたくなったとき思い出せるようにまとめます。

## 試験の概要

![スクリーンショット 2022-08-18 7.08.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/4fe87f77-c080-f34d-e64d-0a4a7445a8f0.png)

**SPECIALTY**カテゴリの試験で、AWSを利用した、クラウドベースやハイブリッドのネットワーク設計・構築をベストプラクティスに沿って行うための知識を問われます。
この試験では「AWS およびハイブリッドネットワークアーキテクチャを大規模に設計、実装、管理、保護するための能力を評価します。」とのこと。
AWS公式より引用：[引用元](https://aws.amazon.com/jp/certification/certified-advanced-networking-specialty/)

**◼︎ 試験要項**
問題数　　：65問(うち15問は採点対象外)
試験時間　：180分(公式サイトでは「170分」と表記されているのですが、実際に試験会場に行ってみると画面の表示は180分でした)
受験料　　：¥30,000(税別)※公式サイトでは「300USD」の表記ですが、為替レートに関わらず税抜¥30,000です。
合格ライン：100~1000点中750点(約72%、採点対象の問題37/50正解で合格)
受験資格　：なし
有効期限　：3年

**◼︎ 出題範囲**

| 分野 | 出題割合 |
|:--|:--:|
| 第 1 分野: ネットワーク設計 | 30% |
| 第 2 分野: ネットワーク実装 | 26% |
| 第 3 分野: ネットワークの管理と運用 | 20% |
| 第 4 分野: ネットワークセキュリティ、コンプライアンス、ガバナンス | 24% |

**2022/09時点の最新バージョン(Ver.1.0)** のものです。
バージョンアップで範囲等は変更されるので、受験時は公式サイトで確認してください。
[AWS Certified Advanced Networking - Specialty 認定](https://aws.amazon.com/jp/certification/certified-advanced-networking-specialty/)

## 勉強開始前の状態
AWSで動いているアプリの保守開発/運用の業務を5年程度、現在も継続中
AWS認定はこれまで7個取得済み

- [AWS認定ソリューションアーキテクトを受験した時の話](https://qiita.com/aminosan000/items/24c6dff9532658a5c4d5)
- [AWS認定デベロッパーアソシエイトを受験した時の話](https://qiita.com/aminosan000/items/89bc76f77626314f3182)
- [AWS認定SysOpsアドミニストレーターアソシエイトを受験した時の話](https://qiita.com/aminosan000/items/b1765260e8ad1435a366)
- [AWS認定ソリューションアーキテクトプロフェッショナルを受験した時の話](https://qiita.com/aminosan000/items/f172b7add8303926bddc)
- [AWS認定DevOpsエンジニアプロフェッショナルを受験した時の話](https://qiita.com/aminosan000/items/ee2fe130bfca1164f4a5)
- [AWS認定セキュリティ - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/435fc411a4d10cf6ba43)
- [AWS認定データベース - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/1f2a8d5b7611a3d31247)

## 勉強に使ったもの

**1. AWS公式模擬試験(Skill Builder)**
AWS Skill Builderで**20問の模擬試験を無料**で受けられます。何度でも実施できるのではじめに実施します。
ANSは最近バージョンアップされたからか、英語版しかありませんでした。Google翻訳やDeepLで翻訳して利用します。

https://explore.skillbuilder.aws/learn/course/internal/view/elearning/12676/aws-certified-advanced-networking-specialty-official-practice-question-set-ans-c01-english

**2. Exam Readiness: AWS Certified Advanced Networking - Specialty (Japanese)**
**AWS Skill Builder**で**無料**で提供されている「AWS認定アドバンストネットワーキング – 専門知識試験」対策の**AWS公式E-learning**、試験範囲についてサンプル問題をはさみながら教えてくれます。試験範囲の要点について知ることができるので、受講する価値はあると思います。
こちらも最近バージョンアップされたためかボリュームは少なめでした。

https://explore.skillbuilder.aws/learn/course/12691/exam-readiness-aws-certified-advanced-networking-specialty-japanese-ri-ben-yu-shi-xie-ban

**3. オンライン問題集(非公式)**
AWS認定受験時に毎回購入している「Whizlabs」
ANSのコースは最新のバージョンの問題が **194問(65問×2パターン+セクション問題が31問+お試し問題が20問)** 用意されています。
19.95USDからクーポン利用で30%offの13.96USD(日本円で¥1,900ぐらい) でした。
ANSは最近バージョンアップされたのですが、バージョンアップ前の「ANS-C00」の問題も実施できるので、「ANS-C01」の問題を解き終わって物足りなければこちらもやっておくのもありだと思います。
いつもどおり、Google翻訳で翻訳して利用。

https://www.whizlabs.com/aws-advanced-networking-speciality/

## 勉強(試験準備)の流れ
### 1. 試験ガイドを読む
はじめに、公式サイトの「**試験ガイド**」を読みます。
今回の試験範囲の中で特に勉強が必要そうな部分としては↓このあたり。

- Direct Connect利用時のNW設定の詳細
- DNSのレコードなどの基礎知識
- AWSアカウント、VPC、リージョンをまたいだNW接続

ハイブリッドのオンプレ側やリージョンをまたいだ構成などはこれまであまり触れる機会がなかったので、重点的に勉強していきます。
DNSやBGPなどのNW基礎の部分も結構昔に勉強して以来ほぼ触れていないので、再勉強…

### 2. サンプル問題と模試を実施する
次に、公式の**サンプル問題と模試**をやってみます。
**無料**なので気軽に実施できます。これで**問題のレベル感**と**自分のレベル感**、そのギャップを確認します。
もちろんここでわからなかった部分はメモしておいて**後で調べます**。覚えたほうが良さそうな部分は**ノートに書き出します**。

### 3. Exam Readinessを受講する
公式E-Learningはためになることが多いので、受講しておきます。
ANS-C01のExam Readinessはすべて動画で他の試験より内容は少なめでした。

### 4. 練習問題を解く
すでに基礎知識はあるので、練習問題を解いてわからないところを集中的に勉強します。
全問解いてから回答の確認をしていると問題文を2回ずつ読むことになって効率が悪いので、practice modeでその場で回答を確認し、間違っていた場合メモしたりすぐに調べるようにしています。

### 5. 復習する
ここまで勉強しながらまとめたノートと練習問題の回答/解説を見返しながら、覚え直し+まだ足りなそうな部分の勉強をします。

## 勉強時間
**約30時間**
今回はほぼ練習問題の実施だけで試験に挑みました。

## 受験後
結果は**スコア779**で合格、長文の問題が多く時間は180分いっぱいまで使って見直しできず、スコアも結構ギリギリでした。
やはり出題率の高いサービスはBlack Belt資料など見て詳しく勉強しておくべきですね…
ELB、VPC、Route53、CloudFront、DX、サイト間VPNなどはある程度細かいところまで理解できるようしっかり勉強することをおすすめします。

![スクリーンショット 2022-09-07 20.23.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/a2810362-c70a-fab1-82e1-24fe0b375e24.png)

結果の内訳も半分「改善が必要」で「やっぱりちょっと勉強不足だったかな」といったところでした。

![スクリーンショット 2022-09-07 20.24.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/a9996658-00cc-f846-369a-4cffd515bd8a.png)

まぁ、ギリギリでも受かればOK！**12冠まであと4個！**
![スクリーンショット 2022-09-07 20.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/6e35eef9-6d2e-4e96-4245-b1194c4ea149.png)

今年追加された「AWS Certified: SAP on AWS - Specialty」の教材がいつ出るのかわからないので若干不安ですが、今年度中に12冠を目指して、次は「**AWS Certified Data Analytics - Specialty**」か「**AWS Certified Machine Learning - Specialty**」を受けます！

そういえば今回の試験で「NAT instance」を「NATゲートウェイ」と翻訳している選択肢があってモヤッとしました。（ちゃんとレビューしてくれ！）
文章が矛盾していると思ったときは原文を確認することをおすすめします。

## 勉強ノート
試験のために勉強しながらまとめたノート  
※ここに書いてあることは、あくまで私が理解が足りないと感じ、覚えたかったことだけです。試験範囲を網羅はしていません。

### 用語
#### アプライアンス

「特定の用途で使われるように最適化された機械や器具（コンピュータ）」のことを指す。
IT用語として「アプライアンス」と言ったときには、特定の用途向けに設計、開発されたサーバなどの製品のことである。
特に多いのがIDS、IPS、ファイアウォールなどのセキュリティ対策に特化した「セキュリティアプライアンス」で、この試験で「アプライアンス」という単語が出てきた場合、これを指すと思っていい。

### ELB(Elastic Load Balancing)
#### ゲートウェイロードバランサー(Gateway Load Balancer)
ファイアウォール、侵入検知/防止、ディープパケットインスペクションなどの仮想アプライアンスをデプロイ、スケーリング、管理するのに利用できるLB
VPC内へのすべての通信をアプライアンス経由にするなどで利用する

■特徴

- L3(ネットワークレイヤー)で機能し、すべてのポートのすべてのパケットをリスナールールで指定されたターゲットグループに転送する
- ゲートウェイロードバランサーはゲートウェイロードバランサーエンドポイント(VPCエンドポイント)を利用し、VPCを超えてトラフィック分散を行う
- ゲートウェイロードバランサーは仮想アプライアンスと同じVPCにデプロイする
- ゲートウェイロードバランサーはリスナーとターゲットグループを利用して宛先と振り分けルールを定義する(ALBと同じ)

<img src="https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/images/vpc-endpoint-service-gwlbe-new.png" alt="Gateway Load Balancer" />

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/getting-started.html

#### 特定のALBを宛先として許可する

ALBは動的にIPが変わってしまうため、Proxyやファイアウォールで宛先IPを元にアクセス制限をしている場合、ALBの前段にNLBを置くことでエンドポイントのIPを固定する。(NLBは静的IPを持つ)

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/

### AWS Direct Connect(DX)

EquinixなどのプロバイダーのデータセンターにAWSが用意している「Direct Connectロケーション」と呼ばれるスペースにユーザのオンプレ環境から物理専用線を接続することで、VPCとオンプレを専用線接続するサービス。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html

#### ハイブリッド構成に登場するリソース

DXやサイト間VPNでオンプレと接続する際に登場する要素は多く、紛らわしいので一覧にする。

| 名前 | 説明 |
|:-|:-|
| 仮想プライベートゲートウェイ(VGW:Virtual Private Gateway) | オンプレと接続時するためのVPCの出入り口となるリソース |
| カスタマーゲートウェイ(Customer Gateway) | サイト間VPN接続時にオンプレ側のカスタマーゲートウェイデバイス(物理端末orSWデバイス)の情報を持つリソース、図示される際にオンプレ上にかかれるので分かりづらいが、AWSリソース |
| トランジットゲートウェイ(Transit Gateway) | オンプレと複数VPCを接続するハブ |
| ダイレクトコネクトゲートウェイ(DXGW:Direct Connect Gatway) | 複数リージョンでDX接続を共有するためのハブ |
| パブリックVIF | VPCサービスへの接続(EC2、RDSなど)に利用する論理インターフェース |
| プライベートVIF | 非VPCサービス(DynamoDB、S3など)への接続に利用する論理インターフェース |
| トランジットVIF | トランジットゲートウェイへの接続に利用する論理インターフェース |

![スクリーンショット 2022-09-03 13.36.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/e5e0a906-2565-a57a-9805-b770e6b7c69f.png)

https://d1.awsstatic.com/webinars/jp/pdf/services/201910_AWSInnovate_Network.pdf

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/create-vif.html

https://blog.serverworks.co.jp/aws-gateways-2

#### BGPコミュニティ
DXは、範囲BGPコミュニティタグと`NO_EXPORT`BGPコミュニティタグをサポートする。
これらはパブリック仮想インターフェイス上のトラフィックの範囲(リージョンまたはグローバル)とルートの優先順位を制御するのに利用できる。

##### BGPコミュニティの範囲

###### パブリック

7224:1~7224:65535の範囲はDXによって予約されている、その中で伝達範囲の指定に下記のコミュニティ値を利用できる。

- 7224:**9100** – ローカル AWS **リージョン**
- 7224:**9200** – **大陸**内のすべての AWS リージョン
  - 北米全域
  - アジアパシフィック
  - 欧州、中東、アフリカ
- 7224:**9300** – グローバル (**すべて**のパブリック AWS リージョン)

DXは下記のコミュニティ値をアドバタイズされるルートに適用する。
- 7224:8100 — AWS のプレゼンスポイントが関連付けられているDXリージョンと**同じリージョン**から送信されるルート。
- 7224:8200 — DXのプレゼンスポイントが関連付けられている大陸と**同じ大陸**から送信されるルート。
- タグなし - グローバル (すべてのパブリック AWS リージョン)

※8x00, 9x00は値が大きいほど範囲が広がる、と覚える。

###### プライベート
- 7224:7100 - ローカル(優先設定: **低**)
- 7224:7200 - ローカル(優先設定: **中**)
- 7224:7300 - ローカル(優先設定: **高**)

※7x00は値が大きいほど優先、と覚える。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/routing-and-bgp.html#bgp-communities

#### AS_Path属性とLocal Preference属性

BGPの優先パスを操作する属性としてAS_Path属性とLocal Preference属性がある。

| 属性 | 説明 |
|:-|:-|
| AS_Path | ・発信ポリシーに適用し、着信トラフィックに影響<br>・短いAS_Pathが優先 |
| Local Preference | ・ルータ自信に設定し、発信トラフィックに影響<br>・高い値が優先 |

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/creating-active-passive-bgp-connections-over-aws-direct-connect/

#### 冗長化

DXでクリティカルなワークロード(止まると困るサービス)に対し、最大の回復性を実現する(サービスを止めない)には、**複数のロケーション**で、それぞれ**複数のデバイス**(ルーター)を利用する。
※もちろんロケーションもルーターも増やすほどコストは上がる

<img src="https://d1.awsstatic.com/AWS%20Direct%20Connect/Redundancy-Highest.cc18117d65de87b62bf4b8e10db7f980e3ac13fd.png" alt="dx_for_critical_workload" />

https://aws.amazon.com/jp/directconnect/resiliency-recommendation/

#### 共有アプライアンス

https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/transit-gateway-appliance-scenario.html

#### MACsecセキュリティ
DXではMACsecセキュリティ(IEEE 802.1AE)により、L2の暗号化によりすべての**コントロールプレーンプロトコル**パケット (ARP、DHCP、LLDP、および BGP などのレイヤー3ルーティングプロトコルなど) を含むイーサネットリンクを保護できる。
IPsecVPNやSSL/TLSでも暗号化はできるが、これらはL2より上位のレイヤーで動作するため、すべてのパケットを保護することができない。

#### Direct Connectゲートウェイ
DXリンクのVGW(仮想プライベートGW)とVIF(仮想インターフェース)の間に追加することで、１つのDXリンクで複数のAWSリージョンを相互に接続できる。
この時同一リージョン内の複数のVPCへ接続したい場VGWの代わりにトランジットゲートウェイに接続する。

https://dev.classmethod.jp/articles/direct-connect-gateway/

##### 他のアカウントへの関連付け

DXの所有者が承諾すれば、他のアカウントへDXゲートウェイを関連付けることもできる。

<img src="https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/images/dx-gateway-shared.png" alt="dxgw_over_account" />

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/direct-connect-gateways-intro.html#transit-gateway-across-accounts

#### リンクアグリゲーショングループ(LAG)

複数のDX接続を単一の接続として扱うことができる。
LAGで集約できるのは同じ帯域幅かつ同じDXロケーションのみ。

#### 専用接続とホスト型接続(Dedicated Connection or Hosted Connection)

ホスト型接続はパートナーからすでに構築済みのリンクを提供されるため、専用接続より速くデプロイできる。
(専用接続の場合数ヶ月かかるのに対し、ホスト型は数週間)

> Q: 専用接続とホスト型接続の違いは何ですか?
>
> 専用接続は 1 Gbps、10 Gbps、100 Gbps の Ethernet ポート経由で確立されるもので、単一ユーザーに専> 用です。ホスト型接続は、AWS との間にネットワークリンクを確保している、AWS Direct Connect パートナーから> 供給されます。

https://aws.amazon.com/jp/directconnect/faqs/

### トランジットゲートウェイ(Transit Gateway)

VPCとオンプレミスネットワークを相互接続するために使用できるネットワークの中継ハブ。
複数のVPCへのDXやVPN接続を集約できる。透過的に冗長化されておりネットワークトラフィックの量に基づいて自動的にスケーリングされるマネージドサービス。ルーティングはレイヤー3で動作する。

<img src="https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/images/transit-gateway-overview.png" alt="Transit Gateway" />

https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/what-is-transit-gateway.html

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/aws-transit-gateway-vpn.html

DXとトランジットゲートウェイを接続するには、DXゲートウェイをトランジットゲートウェイに関連付けする。

https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/direct-connect-transit-gateways.html

トランジットVIFは速度が1Gbps未満のホスト型DX接続には使用できない。
1Gbps未満でトランジットゲートウェイを利用したい場合、一度パブリックVIFを経由しそこからトランジットゲートウェイへVPN接続する。

<img src="https://d2908q01vomqb2.cloudfront.net/5b384ce32d8cdef02bc3a139d4cac0a22bb029e8/2019/11/19/Sub1GigPublicVIF211.jpg" alt="integrating-sub-1-gbps-hosted-connections-with-aws-transit-gateway" />

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/integrating-sub-1-gbps-hosted-connections-with-aws-transit-gateway/

#### 共有サービスを利用する分離されたVPC

複数のVPC間で共有サービスを利用しつつ、相互に通信はできない状態するためのルーターとしてトランジットゲートウェイを利用することができる。

<img src="https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/images/transit-gateway-isolated_shared.png" alt="transit-gateway-isolated-shared" />

上記の図でトランジットゲートウェイのアタッチメントに関連付けるルートテーブルは下記
※VPCのルートテーブルとは別にアタッチメントにもルートテーブルがある

VPC A, VPC B, VPC Cのアタッチメントに関連付けるルートテーブル(各VPCから共有サービスへの行き用+VPNの戻り用)

| 送信先 | ターゲット |
|:-|:-|
| カスタマーGW IP | VPN接続のアタッチメント |
| VPC D CIDR | VPC Dのアタッチメント |

VPC D, VPNのアタッチメントに関連付けるルートテーブル(共有サービスからの戻り用+VPNからの行き用)

| 送信先 | ターゲット |
|:-|:-|
| VPC A CIDR | VPC Aのアタッチメント |
| VPC B CIDR | VPC Bのアタッチメント |
| VPC C CIDR | VPC Cのアタッチメント |

https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/transit-gateway-isolated-shared.html

#### トランジットゲートウェイ+DXゲートウェイ

トランジットゲートウェイは同一リージョン内の複数VPCでしか利用できない、複数リージョンの複数VPCの場合トランジットゲートウェイ+DXゲートウェイの併用が必要となる。

<img src="https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/images/image9.png" alt="transit_gw_and_dxgw" />

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect-aws-transit-gateway.html

既存のDXゲートウェイから移行の際はDXゲートウェイを新規で用意する必要がある。
既存のDXゲートウェイとVGWの関連付けを一度削除するため、ダウンタイムが発生する。

https://dev.classmethod.jp/articles/how-to-migrate-from-private-vif-to-transit-vif/

##### 複数のリージョンにまたがる大規模なハイブリッド構成

1つのDXゲートウェイは最大3つのトランジットゲートウェイと接続できる。4つを超えるリージョンと接続する場合、さらにDXゲートウェイを増やす必要がある。複数のDXゲートウェイとトランジットゲートウェイを接続し、トランジットゲートウェイ同士でフルメッシュピアリング接続を行う。

<img src="https://docs.aws.amazon.com/ja_jp/whitepapers/latest/hybrid-connectivity/images/dx-dxgw-transit-gateway-multi-regions.png" alt="large_hibrid_nw" />

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/hybrid-connectivity/aws-dx-dxgw-with-aws-transit-gateway-multi-regions-more-than-3.html

#### Transit Gateway Connect

VPN 接続よりも高い帯域幅パフォーマンスを実現するGeneric Routing Encapsulation(GRE)をサポートする新しい接続タイプ。

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/simplify-sd-wan-connectivity-with-aws-transit-gateway-connect/

#### Transit Gatewayピアリング

複数リージョンのトランジットゲートウェイをピアリング接続することができる。
トランジットゲートウェイピアリングではBGPルート伝播はサポートされないため、静的ルートの構成が必要。

https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/tgw-peering.html

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/building-a-global-network-using-aws-transit-gateway-inter-region-peering/

#### 1つのNAT GWを複数のVPCで共用

トランジットゲートウェイを使用し、1つのNAT GWを複数のVPCで共用しインターネットへのアウトバウンド通信を行える。
この時、トランジットゲートウェイのデフォルトルートとしてNAT GWのあるVPCのアタッチメントをターゲットに指定する。

https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/transit-gateway-nat-igw.html

### AWS Site-to-Site VPN

専用の物理線を利用せずにVPCとオンプレのNWを接続する方法。(データセンターではなくPCやモバイル端末との接続は「Client-to-site VPN」と呼ぶ)
VGWまたはトランジットゲートウェイまたはDXゲートウェイとカスタマーゲートウェイの間でIPsecによるVPN接続を確立する。

VGW - VPN - カスタマーGW のシンプルな構成

<img src="https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/images/vpn-basic-diagram.png" alt="site_to_site_vpn" />

https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPC_VPN.html

トランジットゲートウェイやDXゲートウェイと組み合わせることもできる。

<img src="https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/images/private-ip-dx.png" alt="site_to_site_vpn_with_transitgw_and_dxgw" />

https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/Examples.html

#### アクセラレーションの有効化

VPN接続の作成時に`Acceleration`を有効化することで、Global AcceleratorによるVPNの高速化が行われる。

<img src="https://d2908q01vomqb2.cloudfront.net/fc074d501302eb2b93e2554793fcaf50b3bf7291/2020/07/15/Create-VPN-connection-3-1024x496.png" alt="site_to_site_vpn_acceleration" />

https://aws.amazon.com/jp/blogs/architecture/improve-vpn-network-performance-of-aws-hybrid-cloud-with-global-accelerator/

#### デュアルサイト間VPN

トランジットゲートウェイを利用したサイト間VPNの冗長化ができる。
負荷分散と自動フェイルオーバーも可能。

<img src="https://docs.aws.amazon.com/ja_jp/whitepapers/latest/hybrid-connectivity/images/dual-s2s-vpn-connections-specific-routes.png" alt="site_to_site_vpn_acceleration" />

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/hybrid-connectivity/dual-site-to-site-vpn-connections-with-more-specific-routes-example.html

#### Virtual Routing and Forwarding(VRF)

ルーティングテーブルの複数のインスタンスが同じルータ内で共存できるようにする技術。同じまたは重複するIPアドレスを競合せずに利用できる。
AWSでは単一のカスタマーゲートウェイを複数のVPCに接続する時はVRFの利用を推奨している。

https://aws.amazon.com/jp/articles/connecting-a-single-customer-router-to-multiple-vpcs/

### CloudFront

#### ALBのアクセス制御
ALBやAPI GatewayなどでCloudFront経由のアクセスのみ許可したい場合、CloudFrontのカスタムヘッダーを利用したアクセス制御が推奨。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html

#### エッジ関数

CloudFrontのCloudFrontディストリビューションのリクエスト/レスポンス処理をカスタマイズする方法として下記の2つがある。
- CloudFront Functions
- Lambda@Edge

##### CloudFront Functions

CloudFront内で実行されるネイティブ関数。対応している言語はJavaScriptのみ。
対応しているイベントソースはビューワーリクエストとビューワーレスポンスのみ、オリジンリクエストとオリジンレスポンスをイベントソースにはできない。
下記のような計量で実行時間の短い処理に適している。

- キャッシュキーの正規化
- ヘッダー操作
- URLリダイレクトまたは書き換え
- リクエストの承認

##### Lambda@Edge

より複雑な処理をエッジロケーションで実行させるために利用する。
対応している言語はPythonとNode.jsで、単一(バージニア北部のみ)リージョンで公開されたLambda関数は各リージョンにレプリケートされる。
下記のような処理はCloudFront Functionsではできないため、Lambda@Edgeを利用する。

- 完了までに数ミリ秒以上かかる関数。
- 調整可能なCPUまたはメモリを必要とする機能。
- サードパーティーライブラリに依存する関数 (**AWS SDK** を含む、AWS のその他サービスとの統合用)。
- 処理に外部サービスを使用するために**ネットワークアクセス**が必要となる関数。
- ファイルシステムへのアクセスまたは HTTP**リクエストの本文**へのアクセスを必要とする関数。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/edge-functions.html

#### CloudFront Origin Shield

オリジンと同一のリージョン内でオリジンの前段の集中型キャッシングレイヤーを提供し、オリジンへの不可を最小限に抑える。

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-cloudfront-origin-shield-to-protect-your-origin-in-a-multi-cdn-deployment/ 

#### 署名付きURLと署名付きCookie

どちらもS3コンテンツへアクセスするユーザを制御するために使える。
使い分けは下記。

| URL or Cookie | ユースケース |
|:-|:-|
| 署名付きURL | ・個々のファイルへのアクセス制御<br>・クライアントがCookieをサポートしていないとき |
| 署名付きCookie| ・複数のファイルをまとめてアクセス許可<br>・URLはそのままCloudFrontのURLを利用したいとき |

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html

### VPC

#### IPv6への対応

VPCではIPv4とIPv6双方を有効化し、デュアルスタックモードで動作させられる。
既存のIPv4VPCに対し、新たにIPv6に対応させるためには、下記の手順が必要となる。

1. IPv6 CIDR ブロックを VPC およびサブネットと関連付ける
2. IPv6用にルートテーブルを更新する ※プライベートサブネットの場合、Egress-onlyインターネットゲートウェイを利用する
3. IPv6を許可するようSGルールを更新する ※カスタムNACLルールを作成している場合、NACLも更新する。
4. (オプション) インスタンスタイプを変更する ※IPv6に対応していない古いタイプの場合のみ
5. IPv6アドレスをインスタンスに割り当てる
6. (オプション) インスタンスに IPv6 を設定する ※DHCPv6を設定されていないAMIから起動している場合のみ

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-migrate-ipv6.html

#### Egress-Onlyインターネットゲートウェイ 

IPv6アドレスはグローバルに一意なので、インターネットからのアクセスを許可せずにアウトバウンドのみ許可する場合、通常のIGWではなく「Egress-Onlyインターネットゲートウェイ」を利用する。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/egress-only-internet-gateway.html

#### ジャンボフレーム

ネットワーク接続の最大送信単位(MTU)は通常1500だが、ジャンボフレームではパケットあたりのペイロードサイズを拡張し、9001MTUまで送信できる。
クラスタープレイスメントグループ内ではNWスループットを高めるためにジャンボフレームの仕様が推奨される。
下記の場合、ジャンボフレームは利用できない。

- インターネットゲートウェイ経由のトラフィック
- リージョン間VPCピアリング接続経由のトラフィック
- VPN 接続経由のトラフィック
- EC2-Classic用の特定のAWSリージョン外部にあるトラフィック

`ip`コマンドでMTU設定を確認することでジャンボフレームが使用されているかどうかがわかる。

```bash
[ec2-user ~]$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 02:90:c0:b7:9e:d1 brd ff:ff:ff:ff:ff:ff
```

MTU値を変更する時も`ip`コマンドを利用する。

```bash
[ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
```

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/network_mtu.html

#### オンプレネットワークからVPCへの接続

オンプレネットワークとVPCのハイブリッドアーキテクチャを設計する際には、いくつかの接続方法から要件に合わせた組み合わせを選択する。

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html

#### VPCトラフィックミラーリング

EC2のENIを通過するトラフィックを異なるEC2などにミラーリングできる。
トラフィックミラーフィルタールールによってミラーリング対象トラフィックを絞ることもできる。
ミラーリング先は下記のいずれかを指定できる。

- EC2のENI
- UDPリスナーを使用したNLB
- UDPリスナーを使用したGLB

https://docs.aws.amazon.com/ja_jp/vpc/latest/mirroring/traffic-mirroring-how-it-works.html

#### VPC共有(VPC sharing)

複数のAWSアカウント間で1つのVPC(内のサブネット)を共有することができる。
共有できるのは同一Organizations内のみ。
共有VPC内のリソースは作成したアカウントでのみ変更でき、作成したアカウントに請求が発生する。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-sharing.html

#### ミドルボックスルーティングウィザード

VPC内にミドルボックスを配置したい場合、複雑なルーティング設定を簡単に作成できるようなウィザードが用意されている。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/middlebox-routing-console.html

※ミドルボックス(Middlebox): 通信を中継し、トラフィックを変換、検査、フィルタリング、操作などするネットワークデバイス。ファイアウォールやNAT、IDS、LBなど。

https://ja.wikipedia.org/wiki/Middlebox

### AWS PrivateLink

AWSへのAPIアクセスをインターネットを経由せずに行えるインターフェースタイプのVPCエンドポイント

https://devlog.arksystems.co.jp/2018/05/11/4896/

### AWS Local Zones

エンドユーザーにより近い場所にデプロイする事で極めて低いレイテンシーでのアクセスを提供する。
親VPCから新しいサブネットを作成し、AWS Local Zonesに割り当てることでVPCを拡張する。
AWS Local ZonesからはS3,DynamoDBにシームレスにプライベートアクセスできる。ゲートウェイエンドポイントは不要。
AWS公式の説明だと分かりづらいが、「より細かくエリアを選択できるAZ」という理解。

下記のサービスに対応している。※DXもサポートしている

- EC2
- ECS
- EKS
- VPC
- EBS
- FSx
- ELB
- EMR
- ElastiCache
- RDS
- Direct Connect

https://aws.amazon.com/jp/about-aws/global-infrastructure/localzones/faqs/

https://aws.amazon.com/jp/blogs/compute/low-latency-computing-with-aws-local-zones-part-1/

現時点(2022/08)ではTokyoリージョンには対応していない。

https://aws.amazon.com/jp/about-aws/global-infrastructure/localzones/locations/

### AWS Outposts

AWSのインフラストラクチャ、サービス、API、ツールをお客様のオンプレミスまで拡張するフルマネージドサービス。
自社オンプレとして設置したハードウェアをAWSに管理してもらい、そのハードウェア上でAWSサービスを動作させられる。
オンプレのシステムとのNWレイテンシを低くしたい場合や、社内セキュリティ規定によりオンプレ環境から外に出せない場合などに利用する。

https://docs.aws.amazon.com/ja_jp/outposts/latest/userguide/what-is-outposts.html

:arrow_down: 下記の記事に実際のAWS Outpostsラックの写真などが載っている

https://engineers.ntt.com/entry/2022/03/15/102459

:arrow_down: Local Zones と Outposts については下記のスライドがわかりやすかった

https://speakerdeck.com/mamohacy/wavelengthmian-qiang-hui?slide=26

### Route53

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

下記ページ参照

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geo

#### レコードタイプ

Route53では下記13個(+ALIASレコード)のレコードタイプに対応している。

| レコードタイプ | 説明 |
|:-|:-|
| A | IPv4アドレスを保持する |
| AAAA | IPv6アドレスを保持する |
| CAA | ドメインまたはサブドメインの証明書発行を許可する認証機関(CA)を指定する |
| CNAME | DNSクエリを別のドメインにマッピングする |
| DS | サブドメインのゾーンキーを参照する |
| MX | メールサーバーの名前を指定する |
| NAPTR | 名前付け権限ポインタ(NAPTR)、動的委任発見システム(DDDS)アプリケーションで、1つの値を別の値に変換または置き換えるために使用 |
| NS | ホストゾーンのネームサーバを識別する |
| PTR | IPからドメイン名への逆引きマッピング |
| SOA | Start of Authority(SOA)、ドメインおよび対応するRoute53のホストゾーンに関する情報を提供 |
| SPF | メールの送信者の身元確認用、現在は非推奨、TXTの利用を推奨 |
| SRV | ドメイン名と合わせて優先順位、重み、およびポートを保持する |
| TXT | 1つの文字列が255文字以内、全体が4,000文字以内のテキストを保持する。`""`で囲い、スペース区切りで複数のテキストを保持できる |

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/ResourceRecordTypes.html

#### ALIASレコード

Route53独自のレコードでELBなどのAWSリソースをターゲットとして指定できる。
ALIASレコードを利用することで、直接IPアドレスへの変換が行えて、AWSサービスのIPの動的な変更を自動的に追跡してくれる。
ターゲットとして指定できるのは下記。

- API Gateway
- VPCインターフェイスエンドポイント
- CloudFrontディストリビューション
- Elastic Beanstalk環境
- ELB
- Global Accelerator
- ホスティング設定が有効なS3バケット
- 同じホストゾーン内のRoute53レコード
- AppSyncドメイン

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html

https://dev.classmethod.jp/articles/amazon-route-53-alias-records/

#### DNSクエリログ

Route53では設定を有効化することによりクエリログを出力することができる。
出力先はCloudWatch Logsのみ。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/query-logs.html

#### Route53 Resolver

VPCを作成すると、Route53 Resolverが自動的に作成され、ローカルVPCドメイン名(ec2-192-0-2-44.compute-1.amazonaws.com)およびプライベートホストゾーン (acme.example.com)内のレコードに対するDNSクエリに応答する。
インバウンド/アウトバウンドエンドポイントをVPC内に作成し、DNSクエリの転送先IPを設定することでオンプレミス環境からもRoute53 Resolverを利用したり、VPC内からオンプレのDNSリゾルバを利用できる。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html

| イン or アウト | 説明 |
|:-|:-|
| インバウンドエンドポイント | オンプレのNWからVPC内のIPに名前解決する |
| アウトバウンドエンドポイント | 社内DNSで管理しているプライベートなドメインへのDNSクエリを社内DNSリゾルバーに転送する、転送の条件を指定することもできる |

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html

##### エンドポイントのルール

Route53 Resolverのルールにはいくつかの種類がある

| ルール | 説明 |
|:-|:-|
| 条件付き転送ルール | 社内DNSリゾルバーに転送するのに利用 |
| システムルール | 条件付き転送ルールで指定したドメインの一部のサブドメインを除外したい場合に利用する |
| 再帰ルール | ルールが定義されていないドメインに自動的に作成される |

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html#resolver-overview-forward-vpc-to-network

##### スケールアウト

Resolverエンドポイントには最大6つのIPアドレスを指定できる。
1IPあたり1,000クエリ/秒を処理できるので、必要に応じてIPを追加する。エンドポイントを増やす必要はない。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html#resolver-considerations-number-of-endpoints

##### VPCエンドポイントの共有

Route53 Resolverを利用してVPCエンドポイントをオンプレから利用するためには、下記の設定が必要。

1. プライベートDNSの無効化
2. VPCエンドポイント名を指すエイリアスレコードを使用したプライベートホストゾーンの作成
3. インバウンドエンドポイントの作成
4. オンプレのDNSリゾルバーにインバウンドエンドポイントへの条件付き転送を設定

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/integrating-aws-transit-gateway-with-aws-privatelink-and-amazon-route-53-resolver/

その他メモ

- アウトバウンドエンドポイントはリージョン内の複数のVPCで共有できる。
- インバウンドエンドポイントは転送先のプライベートホストゾーンと同一のVPCに作成する。

#### Route53 Resolver DNS Firewall

VPCからのアウトバウンドDNSトラフィックをフィルタリング及び、制限できる。
Route53 Resolverを通過するアウトバウンドDNSクエリに対してフィルタリングを行う。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver-dns-firewall.html

### AWS Global Accelerator  

リージョンをまたいだグローバルなエンドポイントを提供するロードバランサー。
各リージョンのELBやEC2の前段に配置することで、ユーザに近いロケーションを通る通信を行い、パフォーマンスを改善させる。
リスナー定義によりポートとプロトコルごとの振り分け設定を行える。(ALBに近い)
トラフィックダイヤルの設定によりエンドポイントグループ(1つ以上のエンドポイントをまとめたグループ)ごとの重み付けもできる。

https://dev.classmethod.jp/articles/re-introduction-2022-globalaccelerator/

https://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/secure-vpc-connections.html

Global AcceleratorはIPv6をサポートしていない。

### AWS Wavelength

5Gネットワークを持つキャリア(日本の場合KDDI)の施設内に配置された物理サーバ上でEC2インスタンスを起動することにより、5G端末とEC2のエンドツーエンドでの5G通信を可能にするサービス。

https://aws.amazon.com/jp/wavelength/faqs/

https://qiita.com/sugimount-a/items/1ec954ae4bd1a06da1bf

### IPAM(IPアドレスマネージャー)

AWS上で利用するIPアドレスを管理するためのサービス。
IPAMで管理するIPアドレスは割当履歴の追跡や、ルールへの適合状態の監視を行える。

https://docs.aws.amazon.com/ja_jp/vpc/latest/ipam/what-it-is-ipam.html

#### AWS Network Firewall
L3~L7で動作し、VPCの侵入検知および防止ができる。
IGW、NAT GW、Site-to-Site VPN、DXからのトラフィックをVPC境界でフィルタリングする、スケーラブルで可用性の高いマネージドサービス。

https://docs.aws.amazon.com/ja_jp/network-firewall/latest/developerguide/what-is-aws-network-firewall.html

https://aws.amazon.com/jp/blogs/security/protect-your-remote-workforce-by-using-a-managed-dns-firewall-and-network-firewall/