[AWS] 基本的な構成の VPC の構築メモ

# 0. 完成形
このようなネットワーク構成を作成していく
> AWS の各サービスについての説明は今回は省略

![VPC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/933c9fef-3381-026c-2282-ccc49a189494.png)



# 1. VPC / Subnet の作成
## 1.1 VPC の作成
`my-vpc` という名前の VPC を作成
[AWS] > [VPC] > [VPC の作成] から以下のように作成
<img width="649" alt="settings_vpc.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/7d242034-9ee6-f466-537c-885968e0481a.png">

## 1.2 Subnet の作成
Public subnet と、Private subnet を以下のように作成

|Name|AZ|
|---|---|
|my-public-subnet|ap-northeast-1a|
|my-private-subnet|ap-northeast-1c|

[AWS] > [VPC] > [サブネット] > [サブネットの作成] から以下のように作成
> それぞれの "VPC*" は、上で作成した `my-vpc` を選択

**Public subnet**
<img width="732" alt="settings_public.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/c8ba015b-ddce-9a62-733f-89f4e0064cc2.png">

**Private subnet**
<img width="732" alt="settings_private.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/6795b8da-0086-c37a-cdf4-53b107696f08.png">

# 2. Internet Gateway / Route Tableの作成
## 2.1 Internet Gateway の作成
作成した VPC から、インターネットにアクセスするためには、ここで作成する Internet Gateway が必要となる。また、サブネットの作成手順からわかるように、Public subnet と Private subnet で、サブネット自体の作成に特に違いはない。ルートテーブルにこの Internet Gateway を設定したものが Public subnet になる。

[AWS] > [VPC] > [インターネットゲートウェイ] > [インターネットゲートウェイの作成] から以下のように作成
![settings_igw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/5494abfe-17bd-76a6-d231-6f25f6f0ea4a.png)

作成した Internet Gateway は、作成しただけでは VPC から使用することができないため、アタッチ
[my-igw] > [アクション] > [VPC にアタッチ] から、`my-vpc` を選択してアタッチする。
![settings_igw2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/adca5916-ce6e-905c-1969-594532bd7ef1.png)

## 2.2 Route Table の作成
[AWS] > [VPC] > [ルートテーブル] > [ルートテーブルの作成] から以下のように作成
![settings_route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/dc02880f-8923-dcc4-ab11-36ef15628b4b.png)

作成した Route Table で Internet Gateway が使えるように設定を行う
[my-route] > [ルート] > [ルートの編集] から以下のように設定
> 0.0.0.0/0 のターゲットで、作成した `my-igw` を選択

![settings_route2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/74971947-cb2d-2ea8-6b86-303a3cf76e3a.png)

## 2.3 Public subnet と Route Table の関連付け
Route Table を作成したら、これをサブネットに関連付ければ、それが Public subnet になる
[my-route] > [サブネットの関連付け] > [サブネットの関連付けの編集] から `my-public-subnet` を選択し、保存

これで Public subnet で Internet Gateway が使えるようになったが、デフォルトだと Public IP Address がない状態
そのため、[my-public-subnet] > [アクション] > [自動割り当て IP 設定の変更] から、`IPv4 の自動割り当て` を有効化し保存

# 3. EC2 インスタンスの作成
ここは本題ではないため詳細は省略
Public subnet と Private subnet に 1 つずつ、EC2 インスタンスを起動する
所属する VPC の設定を、それぞれ作成した、`my-public-subnet` と `my-private-subnet` にする

**Public subnet EC2**
`my-public-instance` を作成
<img width="748" alt="ec2_pub.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/63357267-4c9b-abaf-3838-d495531f723a.png">

**Private subnet EC2**
`my-private-instance` を作成
<img width="748" alt="ec2_pri.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/062cf967-b98c-5e19-c569-6ec7b77ada6b.png">

# 4. Security Group の作成
EC2 インスタンスを起動すると、Security Group が設定される
Private subnet の EC2 インスタンスは、Public subnet からだけアクセスできるようにしたいため、新しく Security Group を作成
[AWS] > [EC2] > [セキュリティグループ] > [セキュリティグループの作成] で以下のように設定
![private_sg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/825ebbd3-e69e-4996-6648-26bacef7606a.png)

作成した `my-private-sg` を、`my-private-instance` に設定する
[my-private-instance] > [アクション] > [ネットワーキング] > [セキュリティグループの変更] から、
作成した `my-private-sg` を選択し、保存

# 5. NAT Gateway の作成
Private subnet はインターネットに接続されていない
インターネットに接続するためには、Public subnet に NAT Gateway を作成し、Private subnet の Route table に追加する必要がある

[AWS] > [VPC] > [NAT ゲートウェイ] > [NAT ゲートウェイの作成] で以下のように設定
> サブネットは、`my-public-subnet` を指定

![NAT_gateway.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/add969b6-29c2-cc8e-a426-a37a796ceb6e.png)

Route table への追加は、
[my-private-subnet] > [ルート] > [ルートの編集] から以下のように設定
> 0.0.0.0/0 のターゲットに、作成した NAT Gateway を指定

![NAT_route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/7fe34f32-233e-ee73-3b82-d8fe4e1a3c14.png)

これで、`my-private-instance`からインターネット接続ができるようになる