AWS VPC環境構築 

一つのAWSアカウント上に複数プロジェクト環境を構築する際に、VPCごとに分けると管理がしやくなります。
デフォルトはVPCは172.31.0.0/16なので、それと同じ環境を自前で構築してみました。

#制約
1.AWSではリージョンごとに最大5VPCが作成可能です（上限緩和申請すれば、それ以上も作成可能）
2.VPCを作成する際に利用するIPアドレス範囲は/16～/28のサイズまで指定可能
3.VPCで利用するIPアドレス（プライベートIPアドレス）は下表で

| Private IP範囲 |
|:-----------|
| 10.0.0.0 ～ 10.255.255.255|
| 172.16.0.0 ～ 172.31.255.255|
| 192.168.0.0 ～ 192.168.255.255|

#VPC構成イメージ
もっともシンプルな構成をまず作ってみます。
![image1.png](https://qiita-image-store.s3.amazonaws.com/0/191079/c25e2747-7744-d1f0-8b8d-b546e183986e.png)

#VPC作成
AWSのサービスでVPCを選択し、VPCダッシュボートで作成できます。
「Start VPC Wizard」ボタンで、用意された各種テンプレートから簡単に作成できますが、
理解するために、Wizardを利用せず、マニュアルで作っていきます。

your VPCsで一覧を表示し、「Create VPC」ボタンをクリックします。
![image1.png](https://qiita-image-store.s3.amazonaws.com/0/191079/992c76bd-bfd1-d569-ab6a-5f2bef8c2882.png)
Name tagに適切な名前を入力し、IPv4 CIDR blockは10.100.0.0/24として、小さめに作成します。
![image3.png](https://qiita-image-store.s3.amazonaws.com/0/191079/36a4e66c-f492-9273-2fb9-4b31d32d2f6c.png)

構成図からは下記となります。
![image2.png](https://qiita-image-store.s3.amazonaws.com/0/191079/b025d4fa-3c8d-f0e7-539a-ac97f4b1ffe6.png)

#Subnet作成
上記通り、VPCはあくまでネットワークアドレスを確保しただけで、インスタンスを配置するにはSubnetを作成し、その中に作る必要があります。
同じVPCメニューからSubnetsを選んで、サブネット一覧画面へ行きます。
「Create Subnet」ボタンを押して、まず以下のような二つを作成します。

| IPv4 CIDR block | アベイラビリティゾーン | 有効なIPv4数 |
|:-----------|:-----------|-----------:|
| 10.100.0.0/27|ap-northeast-1a|27|
| 10.100.0.32/27|ap-northeast-1c|27|
AWSにおけるIPv4 用の VPC とサブネットのサイズ設定は以下を参考
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Subnets.html#vpc-sizing-ipv4

作成
![image4.png](https://qiita-image-store.s3.amazonaws.com/0/191079/e32bd5d4-2c80-d8d4-d22f-893269899a58.png)
![image5.png](https://qiita-image-store.s3.amazonaws.com/0/191079/759305e6-8cc0-344c-f9ab-c3a45755cb7e.png)
「Yes, Create」ボタン押して作成完了
![image6.png](https://qiita-image-store.s3.amazonaws.com/0/191079/922c77a5-68bd-7e7d-cb10-08bdc5fb646c.png)

構成図からは下記となります。
![image7.png](https://qiita-image-store.s3.amazonaws.com/0/191079/2c1dd131-eb75-ee0e-4554-4e7cc938b6ca.png)

#EC2インスタンス作成
VPCとSubnet構築したら、次はEC2インスタンスを作成可能です。

詳細は省略しますが、Step3:Configure Instance Detailsの設定だけ配置したいVPCとSubnetを選択し、Createします。
※Auto-assign Public IPをEnableにすることを忘れるとInternetでRDPができなくなります。
![image8.png](https://qiita-image-store.s3.amazonaws.com/0/191079/10cc71b4-5e8b-7b0c-42ce-eaeea26098cd.png)

構成図からは下記となります。
![image9.png](https://qiita-image-store.s3.amazonaws.com/0/191079/c9d9f724-6289-cc69-98b7-d42b356a929b.png)

早速RDPして、サーバに入りたいですが、まだこの段階ではサーバに接続できないです。
Internetをつなげるためにはインターネットゲートウェイが必要です。

#IGW作成&アタッチ
同じVPCのメニューから「Internet Gateways」を押して、一覧画面を表示します。
「Create Internet Gateways」ボタンでインターネットゲートウェイを作成します。
Name tagに sample-igw-publicを入れて、「Yes, Create」をクリック
![image10.png](https://qiita-image-store.s3.amazonaws.com/0/191079/6ace39ae-6f9b-49ba-12cd-b8ed9a3eabf1.png)

![image11.png](https://qiita-image-store.s3.amazonaws.com/0/191079/4d595c09-594e-bef2-4c74-29c3e431bd1d.png)

作成したら、Stateはまだdetachedの状態です。
右クリックして、「Attach to VPC」を選択、対象VPCにアタッチします。
![image12.png](https://qiita-image-store.s3.amazonaws.com/0/191079/de1f8dbf-335a-39ef-6f0c-42983be119c1.png)
Stateが変わりました。
![image13.png](https://qiita-image-store.s3.amazonaws.com/0/191079/5d97c1f9-543b-ca78-8ff5-be3f23f09353.png)
アタッチはできたものの、インターネットと通信するために、サブネットのルートテーブルをシュウセイする必要があります。

#ルーティングの構成
VPCのRoute table IDからRoute talbeの設定画面にたどり、
![image14.png](https://qiita-image-store.s3.amazonaws.com/0/191079/3cce89ba-5bc8-cfa4-c908-1d51e81b9f82.png)
Routesタブで「Edit」ボタンを押して、項目追加します。
このルートテーブルに対して、「0.0.0.0/0」を送信先としてターゲットに対する通信を、作成したインターネットゲートウェイ（igw-xxxx）をターゲットとする項目を追加します。
「Save」して確定します。
最後に、EC2　sample-public-ec2を起動して、RDP接続します。
![image15.png](https://qiita-image-store.s3.amazonaws.com/0/191079/24bfa980-ce59-b379-937d-2e1ad57adb8b.png)