AWS初心者がとりあえず必要な知識をまとめてみた。【VPC】



#AWS初心者がとりあえず必要な知識をまとめてみた。【VPC】
こんにちは！プログラミング初心者のsasoriです！

この記事は、AWSに触れた事がなかった私が
AWSを利用しweb上にwordpressを公開するまでに必要だった知識を備忘録としてまとめています。
この記事を通して、AWS勉強の参考になったら幸いです。
私が初心者ということもあり、完全初心者目線の記事になっているので、
少しでもお役に立てたらと思います。
※本記事はインフラエンジニアyoutuberくろかわこうへいさんの動画を参考に作成されており、
画像などはくろかわさんが用意してくださったものを参考に、真似して作図しております。
画像参照元：https://drive.google.com/drive/folders/1QKeAkEd7qqg6WL7DOfqMwLmODpJ8R-Pp
くろかわさんのメインyoutubeアカウント：https://www.youtube.com/channel/UCX30pfp4p82rIiSJmBygADw?sub_confirmation=1
AWS作図キットページ：https://aws.amazon.com/jp/architecture/icons/
※本記事はあくまで個人的な主観も多く含まれていますのでご了承下さい。


**以下この記事の対象者です。**
・AWSを使う前で最低限必要な知識(キーワード)を知りたい方
・なんとなくAWSに触れたけどいまいち理解できていない方
・個人でAWSを使ってポートフォリオを公開したい方

**以下この記事に向いてない人です。**
・AWSの経験がある方
・実演を通して理解したい方

#目次
1. [全体像](#topic1)
2. [VPC](#topic2)

<a id="topic1"></a>
#1.今回理解する内容の全体像
![スクリーンショット 2021-02-11 5.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/e513f63f-a42f-9cfb-e541-01be2b8b5318.png)
この画像を見ただけでは、なんのことかと思いますが、
簡単にいうとAWS内のサービス、(以下サービスと道具を同じような意味で使う)
であるVPCやEC2、などの特性を知り、これらを組み合わせることで
web上にサービスを公開する仕組みを作っています。
つまり、AWS内の道具を知り、それらを上手く活用し、組み合わせることで
wordpressを公開しているのです。
なので、これからAWS内の各道具とその道具を使う際に必要な知識について理解することで
AWSの概要をつかんでいければと思います。今回はVPC編です。
余談ですが、AWSがどうぶつの森に似ているなと個人的に感じる部分があるので、
AWSをちょくちょくどうぶつの森に例えてお話していきます。

<a id="topic1"></a>
#2.VPC(Virtual Private Cloud)
今回はAWSの道具の1であるVPCについて説明していきます。
![スクリーンショット 2021-02-11 5.48.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/75d3b812-e2ec-8172-15c4-493fc0605d57.png)
スクリーンショット 2021-02-11 5.48.44
上記の画像でいうと大枠部分を指します。
VPCとは、AWSアカウント専用の仮想ネットワークを作成するサービスで、
つまりAWS内で自分専用のインターネット領域を持つようなイメージです。
これは自分が作るサービスの土台部分のようなもので、
どうぶつの森でいう"自分の村(の土地)"に相当します。
AWSではデフォルトでVPCが存在しますが、
どうぶつの森で自分の村を持たないと何も始まらないように
AWSも独自のVPCを作成してからが勝負です。

AWSでVPC周りを使用・理解するためには以下のキーワードを理解しておくと良いと思います。
・IPアドレス
・CIDER表記
・サブネット
・アベイラビリティゾーン
・ルートテーブル
・インターネットゲートウェイ
・NATゲートウェイ
・EIP
・ENI
・ネットワークACL

簡単にこれらがVPCでどう活躍するのか説明します！
・IPアドレス
・CIDER表記
・サブネット
・アベイラビリティゾーン
これら4つは自分の土地=VPCの区分けに役立ちます。
どうぶつの森でもガチ勢であれば、自分の村を見せたい部分(華やかな場所・都市部)と見られたくない部分(地味な場所・住宅街)など分けたり、機能毎に土地を区分けする事があると思います。
VPCもWEBページのように見せたい部分やデータベースのように見られたくない部分があるのでそういった領域を確保するために上記の4単語が活躍します。！

![スクリーンショット 2021-02-11 5.48.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/b3d65123-4a05-89df-7c86-2fc525322dac.png)
この例でいうと、VPCという土地の中にPublic subnetとPrivate subnetという枠組みがあります。
Public subnetは見せたいものをおく領域で、private subnetは見られたくない物をおく領域になります。
独自の村(サービス)を完成させるためにも区分けの勉強は必須です。
この辺りはくろかわこうへいさんのyoutube動画
https://www.youtube.com/watch?v=mHi2yFWLz9M
で最高な解説があります。

続いて以下の4つがVPC周りでどう活躍するか説明します。
1.ルートテーブル
2.インターネットゲートウェイ
3.NATゲートウェイ
4.ネットワークACL

上記のワードはデータのやり取りの際に1.どういうルートで通信をするかや
2.3.通信するために必要な経由地点としての役割、
4.不要ではじきたい通信の設定に役立っているものとなっています。
簡単にざっくり説明します。

・ルートテーブル
![スクリーンショット 2021-02-11 5.58.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/0444f725-898d-e8f3-f094-7cdb3b7a3ce2.png)
ルートテーブルは、送信先が決まっているデータをどこに飛ばすか(ターゲット)と言う表です。
普段、私たちが目的地の駅に行きたい時にどの電車に乗るかを判断するように
データも送信先(目的地)があって、手段としてどこに飛ばすかを決めています。
その目的地とそれに対する手段を表にしてまとめたものがルートテーブルです。
ルートテーブルは区分けした土地毎(public subnetやprivate subnet毎)に設定し
適用する必要があります。
これはpublic subnetであれば、インターネットへの通信が必要ですが、
private subnetの場合はインターネットへの通信は必要ないといった具合に
必要な送信先の情報が異なるため、各々の区分けした土地に設定する必要があるのです。

・インターネットゲートウェイ
![スクリーンショット 2021-02-11 5.51.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/471af3e7-424c-5a16-7f3b-2443d06167da.png)
インターネットゲートウェイは、インターネットと通信する際に必要な異世界への扉です。
どうぶつの森でいうと他の村に行くために必要な船場にあたります。
自分の村から他の村(インターネットの世界)に旅立ちたい時はこの異世界への扉がないと
どうやっても自分の村から抜ける事ができません。
インターネットゲートウェイをVPCに取り入れると、データの送信先がインターネットであった場合、
手段として、インターネットゲートウェイを選択する事で
インターネットにデータを飛ばせるようになります。

・NATゲートウェイ
NATゲートウェイはpublic subnetに配置するもので
private subnet(データベースなどがある見せたくない領域)が
インターネットにデータを送信する際の経由地点として使われます。
つまりNATゲートウェイのおかげで
private subnetからインターネットにデータを送信すると言う片道切符状態を実現しています。
イメージで言うとインターネットと隠したい村の領域の間にある関所みたいなものですね。
![スクリーンショット 2021-02-11 5.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/e513f63f-a42f-9cfb-e541-01be2b8b5318.png)
NATゲートウェイのおかげでprivate subnetは安全にインターネットから隠れながら通信ができます。

・ネットワークACL
一言で言うと、サブネット毎に適用するファイアーウォールです。
サブネットとは、private subnetやpublic subnetのことで
ファイアーウォールとは、指定したIPアドレスの範囲外の通信をはじくような設定のこと！
イメージとしては、サブネット毎の村の区域に柵を配置する感じですね。
![スクリーンショット 2021-02-11 6.14.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/4fbbda6f-0e5d-b63c-6ef1-63a307eea727.png)
柵を設けて、常にデータ(人の出入り)を規制するといったところでしょうか。
基本的にネットワークACLはあまり使わずに、後述するセキュリティグループを利用した方が良いと
どこの記事を読んでも書いてあります。そうする理由は２点あって、

1.ネットワークACLは行き帰りの通信(送受信)でセキュリティを設定しなければいけないのに対し、
  セキュリティグループは行きさえ(送信)設定すれば、
  自動的に帰りの通信(受信)も設定されるので便利という点

2.ネットワークACLはサブネット単位でのセキュリティ設定になるため、
  区分けされた村の中にある全てのものにその設定が適用され、自由度が低い村の設計となってしまう点

なので、基本的にはセキュリティグループを用いましょう。

最後に以下の4つがVPC周りでどう活躍するか説明します。
長々とすみませんが、これで本記事ラストです！頑張っていきましょう！
・EC2
・ENI
・EIP
・セキュリティグループ

上記のワードは、サービスを提供するのに超重要になります。

・EC2
超重要圧倒的存在。全ての物語はEC2から始まっていると言っても過言ではないです。
私如きがEC2を語るには6兆年早いでしょうが、
イメージで言うと、高層ビルですね。
村の見せたいところに高層ビルが建っちゃった、、。そんなイメージです。
EC2はサーバーとしての役割を持っていて、何かを提供するビルです。
しかし、まだビルの中の部屋は全て空き家で何も提供できる状態ではないので、
EC2の中に色々インストールなどして、何かを提供する主役のビルに化けさせる必要があります。
例えばWEBページを搭載すれば、WEB上でWEBページを閲覧できるようになり、
wordpressを搭載すれば、ブログサービスになったりもします。

・ENI
簡単に言うとIPアドレスを割り当てる道具です。
IPアドレスを割り当てるとインターネットに接続できるようにします。
イメージで言うと入り口となるドア・扉の場所になると思います。
実は先ほどのEC2には元もと１つのENIがついております。
(ビル本体だけだと出入りができないから、ドアも付けないとね....みたいな)
NATゲートウェイ(関所の役割)にもENIがついております。
ENIを付ける事で、IPアドレスが手に入り、インターネットに接続できるようになります。
また、複数のENIを付ける事で、複数のIPアドレスを持つ事ができ、
IPアドレスに応じて、機能を分ける事ができます。
(イメージとしては、ビルに入り口を2つにわけて、1つはショッピング領域、1つはレストラン領域を展開するような感じ)

・EIP
EIPは、IPアドレスを固定化する仕組みです。
実はEC2はデフォルトだと、一度停止するとIPアドレスが変わってしまいます。
つまり毎回停止する度に扉・ドアの場所が変わってしまい、通信しずらくなり不便です。
毎回同じ場所に固定された扉・ドアを配置するためにEIPという道具を使います。
EIPをEC2やNATゲートウェイに取り付ける事で、固定化を実現します。

・セキュリティグループ
EC2に対して設定するセキュリティ設定。
![スクリーンショット 2021-02-11 6.07.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986035/7e5d8605-0a87-69a0-e90d-65acab598d1c.png)
スクリーンショット 2021-02-11 6.07.51
IPアドレスの範囲やポート範囲を設定する。設定単位がサブネット毎ではなく、EC2に適用できる。
設定は送信(アウトバウンド)・受信(インバウンド)毎に行う事ができ、
イメージとしては、ビルのドアをセキュリティを備えたドアにするような感じです。
設定しなければ、誰でもビルに入れるのですが、セキュリティグループを設定すると必要な管理者しか入れないビルにしたり、ビルから誰も出れないようにしたり、と用途に応じてセキュリティを変更できます。
ここはEC2を実際に動かす上で学べたらベストです！


くろかわこうへいさんのyoutubeでも上記のキーワードを説明しているので、
是非、一度は視聴することをお勧めします。
【ルートテーブル、インターネットゲートウェイ、NATゲートウェイ、ENI、EIP】
↓↓↓↓↓↓↓
https://www.youtube.com/watch?v=6muiXYF6CjE
【セキュリティグループ、ネットワークACL】
↓↓↓↓↓↓↓
https://www.youtube.com/watch?v=wrHDWQEZOiA



いかがでしたでしょうか。
本記事の内容はこれで以上になります。
大変お疲れ様でした。！

まとめるとVPC周りを極めると
適した村の区分けや区分け毎のデータ送受信のルールを決める事ができるようになります。
良いサービスを作るためにもここらへんは極めていきましょう！
あくまで本記事はイメージを掴むのを最優先にし、厳密な理解までは到達できていないので
これからご自身で実践を通して、自分なりの理解を定着を進めて頂ければ幸いです。
本記事をお読み頂き有難うございました！