AWSでWebサイトを構築してみる【第一回】全？回（VPC編）

AWS を実際に触りながら、実際にやったことを残しておこうと思いました。
これから何回かに分けて書いていきます。
今回は VPC 編ということで、VPC を作成していきます。
途中で気になったこともメモとして残しています。


#今回作成する構成
![aws.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/c19e804a-639a-5279-35ac-fea8afdac495.png)
※ 構成図はdraw.ioにて作成
&emsp;<https://app.diagrams.net/>


#利用するサービス
・ **VPC** (Virtual Private Cloud)
・ **ELB** (Elastic Load Balancing)
・ **AMI** (Amazon Machine Images)
・ **EC2** (Elastic Compute Cloud)
&emsp;　　　EC2 : t2.micro インスタンス × 2
・ **RDS** (Relational Database Service)
&emsp;　　　RDS for MySQL : db.t2.micro マルチ AZ 配置

#注意すること
1. RDSリソースのみ無料利用対象外ですが、構築後にすぐ削除すれば発生する料金は数十円程度です。
&emsp;無料利用枠についてはこちらで確認できます。
&emsp;<https://aws.amazon.com/jp/free/>

2. リソースの削除
・ 作成したリソースは必ず削除しましょう。削除し忘れた場合、想定以上の料金が発生する場合があります。

#全体の流れ
全体の流れはこのような感じで進めていきます。

1. VPC の作成
2. EC2 の作成
3. RDS の作成
4. ELB の作成
5. WordPress の初期設定
6. AMI の作成
7. 2つ目の EC2 インスタンスの作成
8. 2つ目の EC2 インスタンスを ELB に登録
9. RDS インスタンスのマルチ AZ 配置
10. EC2 インスタンスを1つ停止させ、全体の可用性の確認
11. RDS インスタンスのフェイルオーバーを行い、全体の可用性を確認
12. 作成したリソースの削除

#VPC の作成
最初に1つのVPCとその中に4つのサブネットを作成していきます。
名称やIP CIDRは図のような感じで作成しますが、自分の構成図に合わせて変更しても構いません。
![vpc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/e889a4be-d22b-7dcb-0d3b-4ad8187e1f2a.png)


#1. AWSマネジメントコンソールにログイン

AWSマネジメントコンソールにログインしたら、リージョンを確認します。
「東京」が表示されていない場合は、▼マークをクリックして
「アジアパシフィック（東京）ap-northeast-1」を選択します。
![console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/8f09ff59-5c11-e959-e507-7a69a1b59aa0.png)

#2.VPCの作成

###2-1.検索ボックスに**VPC**と入力
&emsp;入力すると同時に検索結果に**VPC**のサービスが表示されますのでクリックします。
![VPC2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/0fa28840-f29f-7b14-3543-48b603670eae.png)

###2-2.VPCウィザードの起動
&emsp;今回は VPC ウィザードを利用し、必要なコンポーネント を自動的に作成後、
&emsp;足りないコンポーネントを手動で作成・設定していきます。
&emsp;「VPC ウィザードを起動」をクリックします。
![vpc3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/09b1fb7d-e730-2482-47de-4045308c3999.png)

###2-3.VPC作成
#####ステップ１ ： 1個のパブリックサブネットを持つ VPC が選ばれていることを確認し、選択ボタンをクリック。
![vpc4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/6a384cfe-d52b-860d-573c-e08dd7f0536a.png)

#####ステップ2 : 構成図を元に図のように入力し、VPC の作成ボタンをクリック。
&emsp;他の項目はデフォルトのままでOKです。
![vpc5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/904baa23-7f69-eb93-b9a8-f32b5d2cbd97.png)

VPC が正常に作成されると下記画面が表示されるので、OKをクリックします。
![vpc6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/4325e9a6-29c7-671d-ea82-651ef3113ba0.png)

#3.VPCの確認
1.作成した VPC が存在するか確認します。
&emsp;※ 無い場合はブラウザを再表示してみてください。
2.IPv4 CIDR が 設定した 10.0.0.0/16 であることを確認します。
![vpc7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/caa9c06f-291c-0c00-bb6e-ef7501f04cc3.png)

#4.パブリックサブネットの確認
1.左側のペインからサブネットをクリック
2.サブネット表示欄にある「Name」から public-subnet-a1 を探し、左横のチェックボックスをクリック
&emsp;（レ点が入っていることを確認）
3.アベイラビリティゾーンが ap-northeast-1a であることを確認
4.IPc4 CIDR が 10.0.0.0/24 であることを確認
![vpc8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/f3a6d245-3341-c93e-9d18-bef9309643ea.png)

#5.サブネットのルートテーブルの確認
1.先ほどの4でサブネットにチェックが入っていると、画面中段以降に「詳細」、「フローログ」、**「ルートテーブル」**、「ネットワークACL」、「共有」、「タグ」というタブが表示されていると思います。その中から**「ルートテーブル」**を選択。
2.送信先に表示されている 0.0.0.0/0 のターゲットが、 igw-xxxxx （xは人により異なります）に設定されていることを確認
3.igw- から始まるターゲットに表示されているリンクをクリック
![vpc9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/32ed9f8b-2c5b-331f-4ae7-4dfd736592eb.png)

#6.インターネットゲートウェイの確認
インターネットゲートウェイが、作成したVPCにアタッチされていることを確認

![vpc10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/e21cdb18-2f5f-a3fe-80fa-f1a3d5c4ff40.png)

***
ここまで VPC 作成ウィザードにより、VPC、1つのパブリックサブネット、ルートテーブル、インターネットゲートウェイを作成してきました。
ここからさらに3つのサブネットを作成していきます。
***

#7.サブネットの作成
####7-1.作成するサブネット
|       |名前|VPC|アベイラビリティゾーン|CIDRブロック|備考|
|:--:|:--:|:--:|:--:|:--:|:--:|
|1|public-subnet-1a|自分のVPC|ap-northeast-1<font color="Red">a</font>|10.0.<font color="Red">0</font>.0/24|作成済み|
|2|public-subnet-1c|自分のVPC|ap-northeast-1<font color="Red">c</font>|10.0.<font color="Red">1</font>.0/24||
|3|private-subnet-1a|自分のVPC|ap-northeast-1<font color="Red">a</font>|10.0.<font color="Red">2</font>.0/24||
|4|private-subnet-1c|自分のVPC|ap-northeast-1<font color="Red">c</font>|10.0.<font color="Red">3</font>.0/24||

####7-2.public-subnet-1<font color="Red">c</font>の作成
1.左側のペインからサブネットをクリックするとサブネットの画面が表示されます。
2.サブネットの作成をクリックします。
![vpc11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/5c714375-7d5d-744d-2e9a-e7837c953b25.png)

1.VPC ID のプルダウンメニューから作成した VPC を選択します。（デフォルトは選択しないでください）
![vpc12-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/4b9827f9-9af4-ec9e-4da7-18cc9d6c3290.png)

2.サブネット名に public-subnet-1c を入力
3.アベイラビリティゾーンのプルダウンメニューから ap-northeast-1c を選択
4.IPv4 CIDR ブロックで設定する値を入力（値がいろいろ表示されますが、手入力可能です）
5.タグ-オプションは変更せずデフォルトのままでOKです
6.サブネット作成をクリックします
![vpc12-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/a39c8ae3-8127-2400-d08e-72d80951074b.png)

成功すると下記画面が表示されますので、続けて3つ目のサブネットを作成していきます。
1.サブネット作成画面でない場合は、左側のペインからサブネットをクリックします。
2.サブネットの作成をクリックします。
![vpc13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/fd147621-e727-d0e2-7a92-9d0cc73c1e9b.png)

####7-3.private-subnet-1<font color="Red">a</font> の作成
1.左側のペインからサブネットをクリック
2.サブネットの作成をクリック
![vpc14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/0f5f0131-09d1-45a0-7397-1d25af371989.png)
***
######< 思ったこと >
&emsp;この画面でのこの「サブネット作成」ボタンは、「サブネットの追加」もしくは「新しいサブネットの追加」などの方が良いような気がします・・・。
&emsp;サブネットの設定画面にある「サブネットの作成」ボタンと被っているので混乱する人がいるかもです。
&emsp;イメージとしては「作成→実際に追加反映される」、「追加→設定のみを行い即時反映されないためキャンセルも可」ですかね。
&emsp;サブネット画面での「サブネット作成」ボタンは設定するための画面が表示されるだけなので。
***

1.VPC ID のプルダウンメニューから作成した VPC を選択します。（デフォルトは選択しないでください）
![vpc12-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/90043554-3dc3-4690-dd6e-8b9e92127582.png)

2.サブネット名に private-subnet-1a を入力
3.アベイラビリティゾーンのプルダウンメニューから ap-northeast-1c を選択
4.IPv4 CIDR ブロックで設定する値を入力（値がいろいろ表示されますが、手入力可能です）
5.タグ-オプションは変更せずデフォルトのままでOKです
6.サブネット作成をクリックします
![vpc15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/6e760743-f587-4e3f-1597-a7894d5c7ce7.png)

####7-4.private-subnet-1<font color="Red">c</font> の作成
1.左側のペインからサブネットをクリック
2.サブネットの作成をクリック
![vpc16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/dbfcfbf9-b67a-9d3a-59c2-2e1b6a321425.png)

1.VPC ID のプルダウンメニューから作成した VPC を選択します。（デフォルトは選択しないでください）
![vpc12-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/148a98c0-80f7-867f-baa4-e6ad3ed55adb.png)

2.サブネット名に private-subnet-1c を入力
3.アベイラビリティゾーンのプルダウンメニューから ap-northeast-1c を選択
4.IPv4 CIDR ブロックで設定する値を入力（値がいろいろ表示されますが、手入力可能です）
5.タグ-オプションは変更せずデフォルトのままでOKです
6.サブネット作成をクリックします
![vpc17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/94f97128-bb6e-436d-071b-8606cdb81a65.png)

####7-5作成した全てのサブネットを確認
左側のペインからサブネットをクリックし、4つのサブネットが全て正しく作成されていることを確認します。
![vpc18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/da74a3dd-c26d-dac8-a6be-b91b9b5d27cb.png)

スクロールバーで隠れている項目を見ることができます。
右上の歯車をクリックすると、画面に表示させる項目を選択することができます。
自分の環境に合わせて見やすいように変更しても良いかもしれません。

![vpc18-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/5182366a-6909-f1dc-43f1-83b5901adafe.png)

#8.public-subnet-1c のルートテーブルを変更する
ここで public-subnet-1a と public-subnet-1c のルートテーブルを確認します。
####public-subnet-1a
![public-1a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/21dd4ebf-ecd0-6070-be6f-59608656033d.png)

こちらはターゲットにインターネットゲートウェイへのルートが設定されています。
この場合のサブネットは「パブリックサブネット」になります。
逆にインターネットゲートウェイへのルートがないサブネットは、「プライベートサブネット」になるためインターネットと接続されていないことになります。
では、public-subnet-1c を見てみましょう。


####public-subnet-1c
![public-1c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/bbcc7409-ee96-3946-415c-f55ad2e54977.png)

public-subnet-1c のターゲットに igw- が見当たりません。この場合は「プライベートサブネット」です。
ですので、インターネットと通信できるようにルートテーブルを変更していきます。

1.public-subnet-1c を選択します。
2.ルートテーブルをクリックします。
3.ルートテーブルの関連付けの編集をクリックします。
![public-1c-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/98b0fc02-cc72-5872-50e7-7b77390813fb.png)

1.ルートテーブルIDから、既に選択されているルートテーブル（メインテーブル）とは異なるルートテーブルを選択する。
![public-1c-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/eb7f9a8c-05f3-81eb-130b-42fc2e443d4c.png)

2.デフォルトルート 0.0.0.0/0 のターゲットが "igw-xxxxx" と表示されていることを確認。
3.保存をクリックする。
![public-1c-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/b3cbf5af-5b37-317a-f700-0d5a078dc582.png)

最後に public-subnet-1c のルートテーブルを確認します。
![vpc19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494824/68584dc9-1c86-fb9e-9d92-e543510add04.png)
ちゃんと作成されていることが確認できました。

今回は VPC を作成しました。
次回は EC2 の作成をしていきます。

※ この記事はAWS初学者を導く体系的な動画学習サービス
&emsp;「AWS CloudTech」の課題カリキュラムで作成しました。
&emsp;https://aws-cloud-tech.com