今さら聞けないAWSでロードバランサーを使ったWEBサイト構築手順(ネットワーク編)

第2回目はネットワーク編ということで、主にネットワーク部分を作成していきます。

第1回目は以下になります。
https://iret.media/64051

具体的には以下の設定になります。
- VPC
- Publicサブネット
- Privateサブネット
- InternetGateway
- NAT Gateway
- ルートテーブル

## 構成図
構成図でいうと赤枠部分の設定をしていきます。
![ksawada1979_network2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b2de18ce-3d54-a8f2-d3c1-6979eec7fd1c.png)


## VPC作成
AWSマネジメントコンソールからVPCへ移動します。

「VPCを作成」をクリックします。
![vpc_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/39198e33-17d6-468e-e9bb-4ddbc1451cc5.png)

次に「VPCのみ」を選択しvpcの名前を入力します。例では「vpc-web-system」としています。
CIDRは構成図のとうりに「10.150.0.0/16」としました。
入力したら「VPCを作成」をクリックします。
![vpc_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/25e029bd-4027-c4ed-fa7c-21c003a30d84.png)

次にサブネットを作成します。VPC画面の左側メニューよりサブネットを選択します。
![subnet_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/5f13fa90-08d6-d81d-0e55-6d859a7bdca4.png)

次に「サブネットを作成」をクリックします。
![subnet_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/6c954ecd-3ee3-32bf-d37c-b6669deaece9.png)

### Publicサブネット作成
次にサブネットの設定をします。
先ほど作成したVPCを選択します。サブネットの名前を入力します。例では「public-subnet-web-system」としています。
CIDRは構成図のとうりに「10.150.10.0/24」としました。
![subnet_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/77ec97d9-9ea5-413d-8396-43c24bffdc65.png)

入力したら「サブネットを作成」をクリックします。
![subnet_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/62b0088a-fe97-fc6f-c0a0-b74f44de0a92.png)

### Privateサブネット作成
同じ要領でPrivateサブネットを作成します。
先ほど作成したVPCを選択します。サブネットの名前を入力します。例では「private-subnet-web-system」としています。
CIDRは構成図のとうりに「10.150.20.0/24」としました。
![subnet_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b7c26ecf-3bf5-60c2-4c4a-11d1729ec766.png)

入力したら「サブネットを作成」をクリックします。
![subnet_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b2f86150-4742-5d16-a8c7-c839c0f2fd4e.png)

## インターネットゲートウェイ作成
次にインターネットゲートウェイを作成します。
インターネットゲートウェイを作成することによりVPCとインターネットで通信できるようになります。

AWSマネジメントコンソールからVPCし、右側のメニューから「インターネットゲートウェイ」をクリックします。
![igw_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b6af04c2-b978-1843-67fd-9b4747cffc52.png)

「インターネットゲートウェイの作成」をクリックします。
![igw_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/aa37c967-7c66-0c4d-da21-f0ab1713a3ec.png)

インターネットゲートウェイの名前を入力します。例では「web-system-igw」としています。
![igw_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/70226035-4b0a-2fbd-ec2c-e7f3319b568e.png)
名前を入力したら「インターネットゲートウェイの作成」をクリックします。

インターネットゲートウェイが作成されたことを確認します。
![igw_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/82f6ecba-5bdc-24bb-97a0-e063c2c4dcb7.png)

ここまではまだインターネットゲートウェイのを作成しただけでVPCとインターネットで通信することができません。
VPCにインターネットゲートウェイをアタッチすることでインターネット通信可能になります。

アクション→「VPCにアタッチ」を選択します
![igw_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/d859bc37-f488-14db-2f0a-aa42ab4aaaa9.png)

作成したVPCを選択して「インターネットゲートウェイ」のアタッチをクリックします。
![igw_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/934edcaf-b444-8da4-49ea-c495fbe72475.png)

状態が「Attached」になっていることを確認します。
![igw_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/6c17794a-9f00-b93c-ea4b-99b301deee8b.png)
これでVPCからインターネット接続できるようになりました。

## NAT Gateway作成
次にNAT Gatewayを作成します。
NAT GatewayはVPC内部からインターネット向けへの通信は許可するがインターネット側からVPC内への通信を許可しない環境が必要な場合に作成します。
今回の構成ですとWEBサーバでPApache用のパッケージを取得するためにインターネット通信が必要だがインターネット側から直接WEBサーバへの通信は必要ないためNAT Gatewayを作成します。

AWSマネジメントコンソールからVPCの画面へ遷移して、右側のメニューから「NATゲートウェイ」をクリックします。
![natgw_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/f7019fcc-c028-855b-6a08-59b72d5be58a.png)

次に「NATゲートウェイを作成」をクリックします。
![natgw_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/7f6ce2ba-5083-2ffe-354c-903072ec2178.png)

NAT Gatewayの名前を入力します。例では「web-system-nat」とします。
サブネットは今回作成したPublicサブネットを選択します。
その次に「Elastic IPを割り当て」をクリックします。インターネットと通信するために必要なElastic IPを取得しNAT Gatewayに割り当ててくれます。
![natgw_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/9d1e8867-102d-5baa-b1f2-fd959e1ceca5.png)

Elastic IPアドレスが割り当てられたことを確認し、「NATゲートウェイを作成」をクリックします。
![natgw_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/6ddd040e-d9eb-2c92-bf6e-6160319e7823.png)

NATゲートウェイが作成されたことを確認します。
![natgw_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/da5508f2-0f19-e856-26a6-b71cf011d79b.png)

## ルートテーブル作成
次にルートテーブルを作成します。先ほどPublicサブネットとPrivateサブネットを作成しました。
作成しましたが、CIDRを設定だけでそれぞれの役割を持ったサブネットにはなっていません。

それぞれの役割とは今回の構成ですと以下になります。

Publicサブネット
- Publicサブネットからインターネット、インターネットからPublicサブネットへの通信が可能
- VPC内の通信可能

Privateサブネット
- Privateサブネットからインターネットへの通信可能。インターネットからPrivateサブネットへの通信不可
- VPC内の通信可能

サブネットに上記の役割を持たせるためにルートテーブルが必要になります。
ルートテーブルを作成して、サブネットに「関連付け」をしていきます。

AWSマネジメントコンソールからVPCの画面へ遷移して、左側のメニューから「ルートテーブル」をクリックします。
![rt_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b655fe83-5db4-171d-e2d5-b5ba033ee03c.png)


次に「ルートテーブルを作成」をクリックします。
![rt_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/ef3630a8-37bc-fd5c-f64f-c01b944a82f9.png)

まずPublicサブネット用のルートテーブルを作成します。
ルートテーブルの名前を入力して、VPCは作成したVPCを選択します。例ではpublic-subnet-rt-web-systemとします。
入力したら「ルートテーブルを作成」をクリックします。
![rt_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/76f57fdc-1b47-7aae-c7b2-49c825760889.png)

ルートテーブルが作成できたら、次に「ルートの編集」をクリックします。
![rt_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/75dd283d-42d6-0521-e4cd-a3535bb54c78.png)

最初から「10.150.0.0/16」が入っているので、インターネット通信するための設定を入れていきます。
「ルート追加」をクリックして、送信先はインターネット通信用なので「0.0.0.0/0」としてターゲットを先ほど作成したインターネットゲートウェイを選びます。
最後に「変更を保存」をクリックします。
![rt_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/7103dd0f-8575-3ffa-b9ab-4e09e7d872ef.png)

ルートが追加できましたので、次に作成したルートテーブルをサブネットに関連付けます。AWSだと「アタッチ」という言葉がよく出ますが、ここではサブネットの関連付けと呼びます。
「サブネットの関連付け」のタブを選択します。
![rt_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/27ede808-3b3c-ceb8-2d16-e68f119cdb0e.png)

次に「サブネットの関連付けを編集」をクリックします。
![rt_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/0c8e256d-3ecf-b8a1-c138-b85d855314d9.png)

次にPublicサブネットを選択します。
「関連付けを保存」をクリックします。
![rt_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/30c18c07-8098-e369-8da5-e25e2d08fc88.png)

明示的なサブネット関連付けに選択したPublicサブネットが表示されていればOKです。
![rt_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/d65d3fb0-dde2-43b6-0351-53faf3764503.png)

続いてPrivateサブネット用のルートテーブルを作成します。

「ルートテーブルを作成」をクリックします。
![rt_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/ef3630a8-37bc-fd5c-f64f-c01b944a82f9.png)

ルートテーブルの名前を入力して、VPCは作成したVPCを選択します。例ではprivate-subnet-rt-web-systemとします。
入力したら「ルートテーブルを作成」をクリックします。
![rt_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/227be772-71e3-f6c8-e32f-3ca42efb10bf.png)

ルートテーブルが作成できたら、次に「ルートの編集」をクリックします。
![rt_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/e9ba471f-3e56-b832-f105-21030f7b58d9.png)

最初から「10.150.0.0/16」が入っているので、Privateサブネットからインターネット通信するための設定を入れていきます。今回はPrivateサブネットからインターネット通信は許可するがインターネット側からPrivateサブネットに通信を許可しないためNATゲートウェイを選択します。
「ルート追加」をクリックして、送信先は「0.0.0.0/0」としてターゲットを先ほど作成したNATゲートウェイ選びます。
最後に「変更を保存」をクリックします。
![rt_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/bbb642d6-a524-6e1b-71ad-537aa7b3a67e.png)

ルートが追加できましたので、次に作成したルートテーブルをサブネットに関連付けます。
「サブネットの関連付け」のタブを選択します。
![rt_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/08cf2f8a-c0af-7fc3-320b-e71284c394eb.png)

次に「サブネットの関連付けを編集」をクリックします。
![rt_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/c12539fb-0a32-61c4-bca4-1d9450851f8f.png)

次にPrivateサブネットを選択します。
「関連付けを保存」をクリックします。
![rt_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/c0765d74-5d85-e067-c827-c967ec001a87.png)

明示的なサブネット関連付けに選択したPrivateサブネットが表示されていればOKです。
![rt_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/406f08eb-7a4b-44eb-ea0c-fd7a9f32ff78.png)

長くなりましたが以上でネットワーク編は終了です。