Direct Connect？PrivateLink？ 一枚図でAWS VPC接続サービス類の概要を理解する

# 記事をかいたきっかけ
AWSのネットワーク関連サービス（Direct Connect、Site-to-Site VPN、PrivateLink、Transit Gateway、VPC Peeringなど）は便利ですが、関連する「ゲートウェイ」や「エンドポイント」といった用語が多く、理解が難しいと感じました。そこで、自分の理解を深めるために図にまとめて整理しました。

初心者の視点で書いた記事なので、誤りがあればぜひコメントで教えていただけると嬉しいです！

# 全体図
![接続サービス構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/95dfc4bf-afd7-0ddf-b248-049bb12574a5.png)

こんな感じにまとまりました！

# 各サービスについて補足
## Direct Connect (DX)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/ad355e18-28c3-2350-48ce-8addb0e8a29c.png)

一言で言うと、*オンプレとAWS環境を専用回線で繋ぐサービス* です
設定にはプロバイダーの実作業などが必要になるため、時間がかかります。
こちらの記事が本当にわかりやすかった

https://www.ashisuto.co.jp/db_blog/article/aws-direct-connect.html


### 理解しておくべき概念
### データセンター
AWS Direct Connectのエンドポイントが存在するデータセンターは「Direct Connectロケーション」と呼ばれていて、ここにあるルーターをネットワーク事業者が設定してくれるので、そのルーター間を相互に接続することでオンプレミスとVPC間の閉域接続が実現できます。図のCustomer Gatewayはそこのルーターを意味しています。

### 仮想インターフェース(VIF)
ポート帯域の割り当てとして考えて良さそうです。
用途によって種類が3つあります。 
- Private VIF 図の内容のものです。VPCに対するプライベート通信を確立するために使用します。
- Public VIF VPCに属さないAWSサービスとの通信を確立するために使用します。（S3やDynamoDB）
- Transit Gateway オンプレとTransitGatewayとの接続を確立します。DirectConnectゲートウェイが必要です。

### Direct Connectゲートウェイ
Direct Connectゲートウェイを挟むことによって、単一の仮想インターフェースによって複数のVPCとDirect Connect通信を確立させることができます。

### 仮想プライベートゲートウェイ(Virtual Private Gateway) (VGW)
VPC側の接続ゲートウェイです。VPCが外部ネットワークと通信する際の出入り口になるコンポーネントで、VPCに対して一つだけ関連づけることができます。（つまり、Direct Connectゲートウェイと仮想プライベートゲートウェイは1対多関係になる）

## Site-to-Site VPN
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/dccabd37-3789-00ba-c301-f5d78af50828.png)

一言で言うと、*オンプレとAWS環境をIPSecを用いた暗号化通信のトンネルで繋ぐサービス* です
Site-to-Site VPNはインターネット経由でAWS環境に接続し、低コストで利用できる点が特徴と言えそうです。

こちらの記事がわかりやすかったです

https://qiita.com/fjisdahgaiuerua/items/5c051d81817b68924ec1

Customer Gatewyについて(公式）

https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/your-cgw.html

## Transit Gateway
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/c3672c36-8d0a-bcaf-e098-bc4441c3560a.png)

一言で言うと、VPCのハブって感じのサービスです。
ルートテーブルを用いて、複数のVPCの接続を実現します。
先ほどのDirect Connectや、Site-to-Site VPNを併用してオンプレミス環境も合わせて扱うことが可能です。

この記事が一番わかりやすかったです

https://dev.classmethod.jp/articles/transitgateway-cross-account-diagram/

### 理解しておくべき概念
### Transit Gatewayの共有
共有元アカウントで作成し共有を行い、を共有先アカウントで承認することで相互に通信を行えるようになります。

### Attachment
TransitGatewayと他のネットワークを接続するための「接続ポイント」
接続先のネットワークサービスによって3種類あります。
- VPC Attachment (ENIと紐づいているらしい）
- VPN Attachment
- Direct Connect Attachment

## AWS PrivateLink 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/356217c2-911b-91dd-05bb-9ceb3e4632e9.png)

一言でいうと、VPC間でプライベートなAPIを叩くような感じで通信を実現するサービスと言えそうです。

初心者にもわかりやすかった記事

https://dev.classmethod.jp/articles/aws-vpcendpoint-privatelink-beginner/



公式の例

https://aws.amazon.com/jp/blogs/news/aws-privatelink-cross-account-connection/

### 理解しておくべき概念

### VPCエンドポイント
VPCと他のサービス間でプライベートな接続を実現するためのコンポーネントです。
- ゲートウェイエンドポイント S3、DynamoDBへのアクセスをプライベートに接続する
- インターフェースエンドポイント 上記以外のサービスへのアクセスをプライベートに接続する。ENIが作成され、それ経由で通信が行われる

このうち、インターフェースエンドポイントは、PrivateLinkが基盤技術となっています。
今回は自分にとってわかりやすくするためにゲートウェイVPCエンドポイントも図に記載していますが、これはあまり関係ありません。


# VPC Peering

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480176/c6ccb5f5-6868-ba4b-f708-c23f67091df5.png)

一言でいうと、2つのVPCを直接通信して1つのVPCのように扱えるようにする技術です。

シンプルな設計で、仮想プライベートゲートウェイ（VGW）は設定不要です。

# まとめ
全体像がなんとなくわかったので、今後この辺の調査がしやすくなりました。
初学者の書いた記事なので、誤りがありましたらコメントいただけると助かります。



# 参考にした記事まとめ

https://www.ashisuto.co.jp/db_blog/article/aws-direct-connect.html 

https://qiita.com/fjisdahgaiuerua/items/5c051d81817b68924ec1

https://dev.classmethod.jp/articles/transitgateway-cross-account-diagram/

https://aws.amazon.com/jp/blogs/news/aws-privatelink-cross-account-connection/