Amazon VPCとは何か？

今回は、VPCについて解説をします。
---
先週、AWS Cloud Practitionerに合格し、11個のAWS資格を取得しました。
振り返って、一番のキーワードは、VPCだと感じました。
最近、AWSを学びたいという周囲の声に応えるべく、取り急ぎVPCについてまとめました。

■VPCは、Virtual Private Cloud（仮想プライベートクラウド）の略称で、Amazon Web Services（AWS）が提供するクラウドコンピューティングサービスのひとつです。VPCを使用すると、ユーザーは定義した仮想ネットワーク内にEC2インスタンスなどのAWSリソースを起動できます。

VPCは、AWSクラウド内の論理的に分離されたセクションであり、ユーザーは自分自身のIPアドレス範囲、サブネット、およびネットワークゲートウェイを定義することができます。ユーザーはまた、ネットワークアクセス制御リスト（ACL）やセキュリティグループなどのセキュリティ設定を構成することもできます。

VPCを使用すると、ユーザーはAWSクラウド内にプライベートネットワークを作成し、VPN接続やAWS Direct Connectを使用してオンプレミスネットワークに接続することもできます。これにより、ユーザーはクラウド上でアプリケーションを実行しながら、データのセキュリティとプライバシーを維持することができます。

__つまり、VPCは、AWSクラウド内にユーザーの独自のプライベートネットワークを作成し、クラウド上でAWSリソースを安全に実行するためのサービスです。__

■VPCを使用することで、ユーザーはAWS上で独自の仮想ネットワーク(自分たちのプライベート空間)を定義し、ネットワーク内でリソースを配置する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/25bf1d99-f43a-6266-006d-75ef25f67054.png)


VPCを作成する際に、ユーザーは必要とするIPアドレス範囲を定義し、その範囲内にサブネットを作成します。サブネットは、VPC内の特定の範囲のIPアドレスを定義したものであり、通常は1つのAZ（アベイラビリティーゾーン）に属しています。サブネットを作成することで、VPC内の異なるワークロードに対して異なるネットワークセグメンテーションを提供できます。
VPC内の通信は、ルートテーブルによって管理されます。ルートテーブルには、VPC内のサブネットに割り当てられたIPアドレス範囲へのルートが含まれます。ルートテーブルには、VPC内の異なるサブネットに対して異なるルーティングを提供することができます。
VPCは、AWSの各リージョンに存在します。

AWSのリージョンには、複数のAvailability Zone（AZ）が存在します。AZとは、地理的に離れた複数のデータセンターです。同じリージョン内にある複数のAZは、障害が発生しても別々に構築されているため、互いに独立して動作し、高可用性と耐久性を提供します。例えば、1つのAZに障害が発生しても、他のAZでシステムを継続的に稼働させることができます。

■AZ（アベイラビリティーゾーン）は、１つ以上のデータセンターです。
(ある地域に立地するデータセンター群を一つの論理的な管理単位にまとめたもの)
ラックと呼ばれるサーバを収容する鉄の本棚みたいなものが沢山収容されています。
![pexels-manuel-geissinger-325229.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/726aaa6a-1cc1-87de-c7f8-b53147f71d45.jpeg)
ラックの中を開けると、このようにサーバがケーブルで接続されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/a153d97f-8365-5301-967a-88e3b64c5333.png)

ひとつのリージョンには、だいたい、３つのAZ（アベイラビリティーゾーン）が所属されています。

■各リージョンというのは、場所の事でざっくり次のような場所があります。
•	米国東部 (バージニア北部)
•	米国西部 (カリフォルニア北部)
•	アジアパシフィック (東京)
•	アジアパシフィック (シンガポール)
•	EU (ロンドン)
•	EU (パリ)

■現在は、31 リージョンの様です。まだまだ、増えそうです。
https://aws.amazon.com/jp/about-aws/global-infrastructure/

■各VPCは独自のCIDRブロックを持ちます。

CIDRブロックとは、インターネットプロトコルにおいて、IPアドレスの範囲を表現するために使用される方法です。CIDRブロックは、IPアドレスとサブネットマスクを組み合わせて表現され、IPアドレスの範囲を明確に示すことができます。
例えば、192.168.0.0/24は、192.168.0.0から192.168.0.255までのIPアドレスを表します。

■VPC内では、ネットワークセグメンテーション、セキュリティグループの適用、NATゲートウェイやVPN接続を使用してオンプレミスのネットワークと接続することができます。

VPC内でのネットワークセグメンテーションとは、VPC内のネットワークを論理的に分割することです。

VPC内の各サブネットはルーティングテーブルによって、どのサブネットと通信できるかを定義することができます。これにより、VPC内でセグメント化されたサブネット間での通信を制御することができます。

■セキュリティグループは、AWSのVPC内でインスタンスに適用されるファイアウォールルールのセットです。セキュリティグループは、特定のIPアドレスやプロトコルなどのトラフィックを許可または拒否することができます。セキュリティグループは、インバウンドトラフィック、アウトバウンドトラフィック、または両方に対して定義できます。

■セキュリティグループとネットワークACLは、VPC内の通信を制御します。
セキュリティグループは、EC2インスタンスなどのVPC内のリソースに対するトラフィックを許可または拒否するルールを定義します。
ネットワークACLは、サブネット内のトラフィックを制御するためのファイアウォールルールを定義します。

■AWSのVPCにおいて、セキュリティグループとネットワークACLは両方ともネットワークのセキュリティを確保するために使用されますが、以下のような違いがあります。

•	セキュリティグループはインスタンスレベルのファイアウォールルールであり、ネットワークACLはサブネットレベルのファイアウォールルールです。つまり、セキュリティグループは個々のEC2インスタンスに適用され、ネットワークACLはVPC内のサブネットに適用されます。

•	セキュリティグループはステートフルであり、許可されたトラフィックは往復する方向の通信が許可されます。ネットワークACLはステートレスであり、送信と受信のトラフィックは別々に扱われます。

セキュリティグループとネットワークACLの両方を使用することで、より高度なネットワークセキュリティを確保できます。セキュリティグループはアプリケーションレベルのトラフィックを制御するために使用され、ネットワークACLはIPレベルのトラフィックを制御するために使用されます。


AWSのVPC内で構築されたリソースに対して、オンプレミスのネットワークからアクセスする場合、いくつかの方法があります。
参考に、例を下記に記載致します。
---

1.	Direct Connectを使用して、オンプレミスのネットワークとVPCを直接接続する
(Direct Connectは、オンプレミスのデータセンターやオフィスなど、AWSクラウド内のVPCに専用の接続を提供するサービスです)

2.	VPNで接続する
・Site-to-Site VPNで接続する
(IPsecトンネルを使用して、オンプレミスのVPNデバイスとAWSの仮想プライベートゲートウェイの間に暗号化されたトンネルを確立)
・AWS Client VPNで接続する
(リモートユーザーが、OpenVPNを使用して、AWSのClient VPNエンドポイントとクライアントデバイスの間に暗号化されたトンネルを確立)

3.	VPCピアリングを使用して、別のVPCを介してオンプレミスのネットワークに接続する
(既にオンプレミスに接続済みの別のVPCにピアリングする)

4.	AWS Transit Gatewayを使用して、複数のVPCやオンプレミスのネットワークを接続する
(VPCピアリングでは、VPC間の接続を1対1で設定する必要がありますが、Transit Gatewayでは、複数のVPCを一元管理できます)

5.	AWS App Meshを使用して、オンプレミスのネットワークからVPC内のマイクロサービスにアクセスする
(Envoyというオープンソースのプロキシを使用して、トラフィックをルーティングします)

6.	AWS PrivateLinkを使用して、オンプレミスのネットワークからVPC内のプライベートエンドポイントにアクセスする
（オンプレミスのネットワークに、プライベートエンドポイントを使用してアクセスしたいVPCと同じCIDRブロックを持つVPCエンドポイントを作成します）

7.	AWS Global Acceleratorを使用して、オンプレミスのネットワークからグローバルに配置されたVPC内のリソースに高速アクセスする

8.  AWS Storage Gatewayを使用して、オンプレミスのネットワークとAWSのストレージを接続する(キャッシュ、ストレージ仮想テープライブラリ、およびストレージボリュームの3つの異なるタイプのゲートウェイがあります)


少しでも、学習の参考にして頂ければ、と思います。
---