Web3層システムをAWSで作ってみる #1（NW編）

リハビリ&社内勉強用のために作成します。


#用意するもの
・PC
・インターネット

#用語
詳細は[AWS Blackbelt（VPC）](https://aws.amazon.com/jp/blogs/news/webinar-bb-amazonvpc-2020/)を参照。

| 用語 | 意味 |
|:-:|:-|
|VPC|Virtual Private Cloud。AWSにおけるプライベートなNW環境。|
|Subnet|VPC内の区画。|
|インターネットGW|VPCがインターネットに接続するための入口（GW）。|
|ルートテーブル|通信の流れ（ルーティング）を定義するテーブル。|

#ゴール
以下のようなNW環境を作成します。
サブネットを2つ作成するのは、今後Web3層システムを構築するにあたりインターネット接続されるサーバを配備するサブネット（PublicSubnet）と、インターネット接続の必要がない（不要なアクセスを防ぎたい）サーバを配備するサブネット（PrivateSubnet）を準備しておくためです。


![スライド4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1389958/ca2352e1-cdb3-c316-72f0-7f06ac483d0f.jpeg)



#手順
##１．AWSアカウントにログイン
まずAWSアカウントにログインします。
①下記リンクの右上「コンソールにサインイン」
②自身のアカウントにログイン
https://aws.amazon.com/jp/console/

##２．VPCを作成
次に、コンソール右上にある特定のリージョン（東京・大阪・オレゴンetc・・）に自身のプライベートなNW環境（VPC）を構築します。なお、今回はオレゴンを選択しています。

①検索窓でVPCを検索。
②左サイドバーで「VPC」を選択し、「VPCを作成」をクリック。
③以下を入力し「作成」をクリック。

| 項目 | 設定値 | 意味 |
|:-:|:-:|:-|
|名前|vpc_yh_20210501|VPCの名前。分りやすければOK。|
|[IPv4 CIDR ブロック](https://wa3.i-3-i.info/word11989.html)|10.0.0.0/16|データセンター内で利用するアドレスレンジをCIDR表記で指定。左記の場合は10.0.0.1～10.0.255.254※の65,534個のアドレスが利用可能。|
※10.0.0.0はNW自身、10.0.255.255はブロードキャストのアドレスのため利用不可。

![スライド1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1389958/e7418292-02d8-442f-61e1-37ef39fdcef7.jpeg)


##３．インターネットGWを作成し、VPCにアタッチ
インターネットから接続するためのGWを作成し、VPCにくっつけ（アタッチ）る。
①左サイドバーで「インターネットゲートウェイ」を選択し、「インターネットGWの作成」をクリック。
②以下を入力し「作成」をクリック。

| 項目 | 設定値 | 意味 |
|:-:|:-:|:-|
|名前|myig_yh_20210501|インターネットGWの名前。分りやすければOK。|

__名前：myig_yh_20210501__
インターネットGWの名前。分りやすければOK。
③「アクション」の「VPNのアタッチ」で作成したVPCを選択。

これでインターネットへ接続するためのGWがVPCに紐づいた。
![スライド2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1389958/a2c39044-42c0-705a-9dd7-2144bb59250b.jpeg)


##４．サブネットを作成
VPC内に小規模な管理区画（サブネット）を構築する。インターネット接続用サブネット（PublicSubnet）と内部接続用サブネット（PrivateSubnet）を構築する。

①左サイドバーで「サブネット」を選択し、「サブネットの作成」をクリック。
②以下を入力し「作成」をクリック。＝PublicSubnetが作成される。

| 項目 | 設定値 | 意味 |
|:-:|:-:|:-|
|VPC ID|vpc_yh_20210501|サブネットを作成するVPCを選択する。|
|サブネット名|PublicSubnet01_20210501|サブネットの名前。分りやすければOK。|
|アベイラビリティーゾーン（AZ）|us-west-2a|VPCのリージョンにおけるAZ（AWSの複数のデータセンターを束ねたもの）を選択。選択したAZにサブネットが作成される。なんでもいい。|
|IPv4 CIDR ブロック|10.0.1.0/24|サブネットのアドレスレンジをCIDR表記で指定。当然ながらVPCのアドレスレンジ内である必要がある。上記の場合は10.0.0.4～10.0.0.254※の251個のアドレスが利用可能。|

※VPCで解説した2つに加えて、AWS仕様で10.0.0.1-3が利用不可。

③上記①②の作業を行い、PrivateSubnetを作成する。

| 項目 | 設定値 |
|:-:|:-:|
|VPC ID|vpc_yh_20210501|
|サブネット名|PrivateSubnet01_20210501|
|アベイラビリティーゾーン|us-west-2a|
|IPv4 CIDR ブロック|10.0.3.0/24|

![スライド3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1389958/10d60630-dd9d-0656-c55c-f17a3526abb6.jpeg)


##５．ルートテーブルを作成し、サブネットにアタッチ
通信の流れ（ルーティング）を定義するルートテーブルを作成します。
VPC内の通信についてはデフォルトのルートテーブル（送信先「10.0.0.0/16」ターゲット「local」）にて定義されています。一方で、インターネット接続用サブネット（PublicSubnet）はインターネットへも接続できるよう設定する必要があります。
そこで、インターネット接続用のルートテーブルを作成し、PublicSubnetへ適用します。

①左サイドバーで「ルートテーブル」を選択し、「ルートテーブルの作成」をクリック。

②以下を入力し「作成」をクリック。

| 項目 | 設定値 | 意味 |
|:-:|:-:|:-|
|名前タグ|routetable_yh_20210501|ルートテーブルの名前。分りやすければOK。|
|VPC|vpc_yh_20210501|ルートテーブルを利用するVPCを選択。|

③作成したルートテーブルを選択し、下タブの「ルート」の「ルートの編集」をクリックし「ルートの追加」で以下を入力。

| 項目 | 設定値 |
|:-:|:-:|
|送信先|0.0.0.0/0|
|ターゲット|myig_yh_20210501|

④下タブの「サブネットの関連付け」の「編集」をクリックしPublicサブネットを選択し保存。


![スライド4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1389958/8fde8249-5b1f-2bfc-29a1-066c7e084e8c.jpeg)

（蛇足メモ）
VPCにて「メインルートテーブル」を選択すると、メインルートテーブルが確認できますが、本例の場合は送信先「10.0.0.0/16」、ターゲット「local」になっています。つまり「10.0.0.16が宛先ならVPC内の宛先を探すね！」と言っています。今回、PublicSubnetはインターネット接続があるため「10.0.0.16以外ならインターネットに出て行って！」と言いたいので、上記の設定を入れています。ちなみに「0.0.0.0/0」はデフォルトGWと呼ばれる設定で「それ以外」を表します。「PublicSubnetとPrivateSubnetを作る」と言っていましたが、このルーティング定義で実現しています。

#参考
①[VPC作成ハンズオンサイト](https://dev.classmethod.jp/articles/myfirstnvpcsetup/)