AWSの基本理解：AWS VPCをマネコン上から一括作成！その仕組みと設定を紐解き、より深く理解する

## はじめに
AWSで新しいアプリケーションを開発する際には、VPC（Virtual Private Cloud）をはじめとするネットワーク環境の構築が不可欠です。

:::note warn
**従来はVPCやサブネット、セキュリティグループなどを一つひとつ手動で設定する必要がありましたが、現在では「VPCなど」の機能を利用することで、AWSが自動的に最適なネットワーク環境を構築してくれるようになりました。**
:::

今回は、この便利な一括作成機能を活用し、実際にVPC環境を構築しながら、その設定について詳しく解説していきます。

本記事は、物忘れの多い自分への備忘録としてまとめていきます。

## 知識整理
### VPC（Virtual Private Cloud）とは？
AWS上に構築する、完全に分離されたプライベートネットワークです。

自社のデータセンター内にプライベートネットワークを構築するのと同じように、AWS上で独自のネットワーク環境を構築することができます。

https://qiita.com/kimuni-i/items/f9957efccb9ed4bf1495

### サブネットとは？
VPCをさらに細かく分割した論理的なセグメントです。

IPアドレスの範囲とルートテーブルを共有し、セキュリティグループと組み合わせて、異なる種類のインスタンスを分離することができます。

https://wa3.i-3-i.info/word11973.html

### NATゲートウェイとは？
プライベートサブネット内のインスタンスが、インターネット上のサービスにアクセスできるようにするためのゲートウェイです。

プライベートIPアドレスからパブリックIPアドレスへの変換を行います。

https://zenn.dev/youtuber/articles/6d656fac5013d4

### IGW（インターネットゲートウェイ）とは？
VPCをインターネットに接続するためのゲートウェイです。

パブリックサブネットにアタッチすることで、インターネットからのアクセスを許可することができます。

https://zenn.dev/yukun369/articles/0703765388c70c

### ルートテーブルとは？
パケットが宛先に到達するために、どのインターフェイスを経由すればよいかを示すためのルーティング情報が記載されたテーブルです。

サブネットごとにルートテーブルが紐付けられ、パケット転送の制御を行います。

https://en-junior.com/routetable/

## 実際に作ってみた
マネジメントコンソールから「VPC」サービスを選択し、「VPCの作成」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/1a37db23-0353-10ec-b5bf-cf1d616758f1.png)

VPCの設定画面で、作成するリソースを「VPCなど」で指定していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/a54f6d6a-e17e-4aaf-7f42-698ddcba7844.png)

必要に応じて、CIDRブロック、サブネット、NATゲートウェイ、インターネットゲートウェイなどの設定を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/ffd6860e-e300-5a79-c909-72cc37428615.png)

ここでは、アベイラビリティゾーン（AZ）を2つ、パブリックサブネットを2つ、プライベートサブネットを4つ作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/b538ab5b-aa87-e14d-f1f1-04a28e6ad5db.png)

最後に、費用を考慮してNATゲートウェイは1つのAZ内に配置し、VPCエンドポイントは不要としました。これで、現在のVPC環境の構成がプレビュー形式で確認できるため、問題がなければ「VPCを作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/69f4c81d-e013-7b42-9316-585649becd31.png)

以前はこの環境の構築にかなりの時間がかかっていましたが、今では非常に簡単に構築できるようになり、大変便利です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f865fdf5-a131-4e5b-1146-47d7d3cc25b7.png)

:::note alert
**作成中に他のページへ遷移するとリソース作成が途中で終了する可能性があるため、作成が完了するまで待ってください。**
:::

## 作成されたリソースの設定確認

それでは、VPCダッシュボードで作成されたVPC、サブネット、インターネットゲートウェイなどを確認していきます。

### VPCの設定

作成されたVPCは以下の通りです。サブネットは6つ、ルートテーブルも6つ、ネットワークACLは2つが設定されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/be6fa99d-cdb9-85f1-e273-d7277fcfbf91.png)

パブリックサブネット4つ、プライベートサブネット2つが作成され、IPv4 CIDRに関してもIPアドレスが割り当てられていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/ecab8823-e31d-1d04-9b03-ac043e216518.png)

### ルートテーブルの設定

ルートテーブルも5つ作成されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/a403de6b-2677-2770-5448-94bf8ab15fc6.png)

パブリックサブネットのルートテーブルには、インターネットゲートウェイが紐づいており、ターゲット先としてlocalが設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/a1616ef3-5028-fa31-afb9-67744b432c31.png)

サブネットの関連付けでは、パブリックサブネットが明示的に設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/42dcda9a-1591-5c98-e42c-737bb1d085d3.png)

プライベートサブネットのルートテーブルには、NATゲートウェイが紐づいており、ターゲット先としてlocalが設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/304cc1c3-639c-e655-2be5-6c5109ddb059.png)

明示的なサブネットの関連付けには、privateサブネットが設定されている状況になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/359c5d0b-b276-eee6-7b41-811acdde4b42.png)

### インターネットゲートウェイの設定

インターネットゲートウェイは、作成したVPCに設定されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/1e590416-e131-1a46-591f-0cf3d97d511c.png)

### NATゲートウェイ

NATゲートウェイは、以下の通りパブリックサブネットに配置されていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/eed54a1a-5a4f-6d24-ccfe-40868399570f.png)

## まとめ
今回の記事では、VPC、サブネット、NATゲートウェイ、IGW、ルートテーブルといった基本的な概念と、実際に作成したVPC環境の設定を紐解くことで、より深くAWSのネットワーク環境を理解することができました。

今後も、より楽に便利な機能が提供されると思いますが、基本的な仕組みを理解した上で、適切なネットワーク構成を設計していくことが重要となります。

## 参考文献

https://dev.classmethod.jp/articles/vpc-new-console-20220513/