[初心者向け]VPC作成からRDS接続までをそこそこ丁寧にまとめてみる。①VPC作成まで



# はじめに

「手取り足取りAWSの構築方法を教えてやるぜ！」と謳った記事は私のような未経験の身には大変有難い一方で、痒い所に手が届かないことが多いようにも感じています。
分からない人の分からない具合を侮ってはいけない。
SSHとかSSHとかSSHとか。

「AWSの基礎の基礎の部分で躓いてしまう人をこれ以上生み出してはいけない！」と拳を硬く握り締めて~~はいないのですが~~、
**VPC、EC2、RDSの作成方法、**
**EC2を介したRDSへの接続**を、未経験者の視点からまとめてみようと思います。
まぁ、備忘録が欲しかっただけなんですけどね。

## そして宣伝へ…
この記事はRaisetechのAWSフルコースで学んだことのアウトプットを兼ねています。

https://raise-tech.net/courses/aws-full-course?gclid=Cj0KCQiAweaNBhDEARIsAJ5hwbede574QMJ8ygDoKKizHJlLoyO6vNx_4w4rUQ2fyoVf1lOAfydX9mYaAj9WEALw_wcB#

# 大体こんな方が対象
・VPC、EC2、RDSなど大まかなサービスは知っている。
・IPアドレスについてある程度は分かっている。
・IAMの作成は済んでいる。
・windowsでEC2の接続ってどうやるんだよ！となっちゃっている
（mac向けの解説ではありません）。

人によっては「知ってるよそんなこと！」な内容も長々と書いています。
ガンガン読み飛ばして下さい。

:::note warn
無料利用枠の範囲で構築を行いますが、万が一費用が発生した場合でも当方は責任を負いません。個人の責任でお願いします。
:::


# この記事でやる内容
こんな物を作ってみます。
![VPC～RDS接続構成図.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/d63cf54f-3b4a-96a2-5aeb-fe350d6b14e9.png)
>図の作成に当たって、こちらの記事を参考にさせて頂きました。
>[draw.ioでAWSのインフラ構成図を書く](https://qiita.com/nave-m/items/68425f476b254a1a47b0)

あくまで構築方法の学習が目的ですので、シンプルな形にします。

ざっくりとこんな流れの記事になります。

|順番|内容|  
|:---|:--|
1．|VPC作成
2．|EC2作成
3．|EC2接続
4．|RDS作成
5．|RDS接続
おしまい！！！

本記事では1のVPC作成までを解説します。
以降の内容はこちらの記事で解説しています。

>[[初心者向け]VPC作成からRDS接続までをそこそこ丁寧にまとめてみる。②EC2作成～SSH接続まで](https://qiita.com/kmmz/items/2920659fbe7ad2b0ef5f)
>[[初心者向け]VPC作成からRDS接続までをそこそこ丁寧にまとめてみる。③RDS作成から接続まで](https://qiita.com/kmmz/items/75e3516166b4fcfb0dcf)

それでは早速やってみましょう！

# 1．VPC作成
VPC（Virtual Private Cloud）とはなんぞや？　
という方は、なんだかんだ言って公式を見るのが手っ取り早いと思います。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

サーバーを作ったところで、インターネットに繋がっていなければお金を吸い取るだけの~~ドル~~箱です。
AWSでは、基本的にVPCを介してインターネットに接続します。

語弊を恐れずに言うと、VPCは"お部屋"だと私は解釈しています。
サーバーを作るぞ！　その辺に放置！　青空サーバー！　というのでは少々困ります。
EC2とRDSの場合、作成時に配置先のVPCを選択する必要があるので、VPCがないとそもそも作成することができない仕組みです。

それではAWSにログインしましょう。

## 1-1 VPCを作成する前にリージョンを確認。

早速VPCを作成しましょう！
と、いきたいところですが、マネジメントコンソールに入ったら、真っ先に自分のリージョンを確認します。
特段の事情がない限り、東京リージョンを選択するのが無難かと。

![AWSマネジメントコンソール画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/51245cb5-229b-5925-d8fc-a2d0cb7c70a2.png)

>理由はこちらの記事などを参照してみて下さい。
> [[AWS]最善のリージョンはこれだ！サービスの設置先を考える](https://www.t3a.jp/blog/infrastructure/aws-best-region/)

~~大阪リージョンは"ローカルリージョン"という一部の顧客しか使えないリージョンのようなので、関西圏の方も東京リージョンで大丈夫です。~~

::: note info
追記
大阪リージョンですが、2021年3月にフルリージョン化され、申請不要で全ユーザーが利用可能になっていたようです。これにより、関西圏の方は東京リージョンを選択するのと比べて、低レイテンシーな構築が可能となりました。
:::
>参考
>[AWS 大阪リージョン - 2021年3月 誕生!](https://aws.amazon.com/jp/local/osaka-region/)

## 1-2 「VPCを作成」からVPCを作成。

それでは今度こそVPCを作成しましょう！

サービスメニューから「VPC」を選択します。
下記の画像の画面に入ったかと思います。
「VPCウィザード」から作成する方法もありますが、学習が目的なので「VPCを作成」からVPCを作成します。
VPCウィザードから作成される場合は、「VPCダッシュボード」から「VPCウィザードを起動」を選択して下さい。

![VPC画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/f7de9840-b61f-4e2b-788d-9aa65b16779b.png)


注意点ですが、画像ではすっかり黒くなった箇所に**デフォルトVPC**が存在しているかと思います。今後使用する予定がなくても、**削除**をしないで下さい。
EC2インスタンスの起動に問題が生じるなど、面倒なことになるようです。
>参考
>[Amazon VPC で削除したデフォルト VPC を復元する方法を教えてください。](https://aws.amazon.com/jp/premiumsupport/knowledge-center/deleted-default-vpc/)




「VPCを作成」から下の画面に入れたかと思います。必要な箇所を入力しましょう。

![VPC作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/ffc852e3-58f8-9e37-c210-27b264fbc21a.png)

・名前タグ
VPCの名前です。
ご自身で識別可能なものを入れて下さい。
例：`プロジェクト名-作成年月`

>命名規則に関しては、こちらのクラスメソッドさんの記事がとても参考になります。
>[弊社で使っているAWSリソースの命名規則を紹介します](https://dev.classmethod.jp/articles/aws-name-rule/)

・IPv4 CIDR
私がVPCを初めて作成した際に、真っ先に躓いた部分はここでした。
CIDRって、なに……？　
同様の状態の方は、手前味噌で恐縮ですがCIDRの解説の記事を別に投稿しましたので、そちらなどを参考にしたりしなかったりして下さい。
>[[初学者向け]AWSを利用するのに最低限必要なCIDRの知識。](https://qiita.com/kmmz/items/bf059e17fecac746cc9e)

AWSでは、CIDRブロックを使ってサブネットをグループ分けします。
以降のサブネットの作成の際にも、CIDRブロックを指定します。
サブネットはVPC内を区切るものなので、当然ながらCIDRブロックの大きさは、

VPCのCIDRブロック＞サブネットのCIDRブロック

となります。

今回はシチュエーションなども特にない練習なので、CIDRの組み合わせは、
VPCのCIDRを「/16」、
サブネットのCIDRを「/24」、
というオーソドックスな構成で作成してみようと思います。
`10.0.0.0/16`と入力します。
CIDRを入力する際は、「10」と「1」の見間違いに注意して下さい。
私はそれで一度死にました。


:::note info
AWSでは/16～/28の範囲でCIDRが利用可能です。
5つのIPアドレスは利用できないので（ブロードキャストなどに使われる）、
利用可能なIPアドレスの範囲は11～65531となります。
:::

「IPv4 CIDRブロック」と「IPv6CIDRブロック」の項目はそのままにします。

次に「タグ」を入力します。
タグはフィルタリングなどで使用するメタデータのことです。
「ベストプラクティスについて知りてぇ～！」という方は公式ドキュメントなどを確認して下さい。

>参考
>[AWSリソースのタグ付け](https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_tagging.html)

タグはAWSにおいて「タグ付け戦略」という物騒な名称が存在するほど重要な概念なのですが、今回は「Name」タグのみを使用します。









![VPCタグ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/653c6a7a-ea32-fa97-47c4-040fbb313e2f.png)
「キー」に`Name`、
「値-オプション」に`名前（VPCの名前と同じもの)`が既に反映されていると思います。
先程入力した"VPCの名前"が"Nameタグ"そのものだからです。
そのため、「値-オプション」の内容を変更すると、"VPCの名前"の方も自動的に変更されます。

タグを増やしたい場合は「新しいタグを追加」をクリックして下さい。
最大50個までタグ付け可能です。

全ての入力が完了したら、「VPCを作成」をクリックします。爆発とかは多分しないので安心して下さい。

「正常に作成されました」と上部の緑のラインに表示されたらVPCの作成は完了です！

##1-3 インターネットゲートウェイの作成

VPCは作成しましたが、これではまだインターネットと繋がる状態ではありません。
「インターネットゲートウェイ」と「ルートテーブル」が必要です。
「またなんか変な用語が出たわね！」という方は、こちらの記事が大変参考になります。

https://qiita.com/MayForBlue/items/95562b1af16f74e44110

役割は2つとも名前のまんまです。
ざっくり言うと、

|名称|内容|
|:---|:--|
|インターネットゲートウェイ|インターネットの出入り口となる。|
|ルートテーブル|ネットワークトラフィックの経路を指定する。|

インターネットゲートウェイだけでは、パケットに「インターネットゲートウェイを通って下さい～」と誘導できないので、ルートテーブルで別個指定する必要があります。
「誘導員（ルートテーブル）」が「門（インターネットゲートウェイ）」に誘導する、という感覚です。

それでは、インターネットゲートウェイ、ルートテーブルの順に作成します。


VPCの画面からインターネットゲートウェイを選択し、「インターネットゲートウェイの作成」をクリックします。

![igw作成1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/4bf6b980-875f-a6df-4640-6fee8ef8758b.png)

「インターネットゲートウェイの作成」の画面では、そこまでやることはありません。

![igw作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/a4325272-780e-98b7-1115-2111c194e3e8.png)

・名前タグ
要領はVPCと同じです。
識別のためにインターネットゲートウェイの略称の「igw」を先頭に付けます。
例：`igw-プロジェクト名-作成年月`

・タグ
VPCのタグと同じ要領です。
恐らく名前タグの入力と並行して、自動で「Name」キーが入力されたかと思います。

入力を終えたら、「インターネットゲートウェイの作成」をクリックします。

まだ終わりではありません。
インターネットゲートウェイはVPCがあってなんぼのもんです。
構成図にもある通り、インターネットゲートウェイはVPCの境界線上に配置されるイメージです。
「アクション」から「VPCにアタッチ」をクリックして下さい。
配置先のVPCを選択します。

「使用可能なVPC」の項目は、作成したVPCを選択して下さい。
選択を終えたら、「インターネットゲートウェイのアタッチ」をクリックします。

![VPCにアタッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/c354fae4-a63e-19a4-4798-e29bea3a5f50.png)

インターネットゲートウェイ自体の作成はこれで完了です！
この後くっつけたり色々なんかはします。

## 1-4　ルートテーブルの作成

「ちょっと待って！　メインルートテーブルとかって言うのがVPC作ったときに付いてこなかった？」
という鋭いご指摘もあるかもしれませんが、その通りです。

|名称|作成のタイミング|  
|:---|:--|
|メインルートテーブル|VPC作成時に自動で作成される。|
|カスタムルートテーブル|ユーザーが作成する。|
メインルートテーブルは、サブネットの作成時にも自動的に関連付けられ、VPC内での通信が可能なローカルルートのみが格納されています。

両者に機能的な違いはありません。
しかし、インターネットへ接続する場合、メインルートテーブルは使用しないのが無難です。
メインルートテーブルはサブネットを作成すると自動で関連付けられます。つまり、メインルートテーブルにインターネットとの経路を設定していた場合、サブネットを作成した瞬間にインターネットと繋がってしまいます。
プライベートサブネット用に作成したつもりが、強制的にパブリックサブネットになってしまう、という自体も考えられます。
そのためメインルートテーブルはそっとしておき、インターネット接続にはカスタムルートテーブルを使用します。

というわけで、カスタムルートテーブルを作成します。

VPCの画面からルートテーブルを選択し、「ルートテーブルを作成」をクリックして下さい。

![ルートテーブルを作成選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/75690361-845f-0d40-1a6c-cba7eaa374a0.png)

ルートテーブルを作成します。入力内容は、前項のインターネットゲートウェイとほとんど同じです。

![ルートテーブルを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/7b3e4bf9-15c1-4c1d-9a92-aac5c385f4f1.png)

・名前タグ
識別のためにルートテーブルの略称の「rt」を先頭に付けます。
例：`rt-プロジェクト名-作成年月`

・タグ
キー：`Name`
値-オプション：`名前タグと同じもの`

入力を終えたら、「ルートテーブルを作成」をクリックします。

ルートテーブルの作成が完了したら、そのままインターネットゲートウェイとの関連付けを行います。
「アクション」から「ルートを編集」をクリックして下さい。

![igwrt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2338398/f093390a-6702-7e91-8363-cec389de6da4.png)

「ルートを追加」をクリックして下さい。

・送信先
トラフィックを送信する IP アドレスの範囲のことです。
今回は実際に運用するわけではないので、`0.0.0.0/0`＝全部OKですよ～にしちゃいます。

・ターゲット
転送先のことです。
インターネットゲートウェイを指定します。項目から、作成したカスタムインターネットゲートウェイを選択して下さい。

入力を終えたら、「変更を保存」をクリックして下さい。

「ルートを正常に更新しました」とか言われたら完了です！

VPC作成はこれで完了です。
ここまでお疲れさまでした。

VPCを作成したことにより、EC2の作成が可能になりました。
次はEc2を作成します。

# 次の記事

[[初心者向け]VPC作成からRDS接続までをそこそこ丁寧にまとめてみる。②EC2作成～SSH接続まで](https://qiita.com/kmmz/items/2920659fbe7ad2b0ef5f)