[VPC-初級編]ゼロからハンズオンで作るAWSのネットワーク
はじめに
AWSの色々なサービスをハンズオンで色々試そうとしても、そもそもの土台となるネットワークを理解していないと上手く進められないな😇と思ったためVPCから改めて勉強していこうと思いました。
例えばElastiCacheを試そうとしても、ECSでタスクを動かすにしても、そもそもどういう土台(ネットワーク)で動かすのかの設定があり
そこをまず自分の中で府に落ちて理解していないと色々つまづく機会が多い、と感じたのが主な動機です。
リージョン
まず一番大きいリージョンについて
リージョンは、AWS が世界中に持つ 巨大な拠点(物理的な地域)のこと
世界の各地に存在していて、日本では東京-大阪

サービスごとの提供状況もリージョンで異なり、us-east-1(バージニア北部)が最新となります。
リージョンの確認はコンソールの右上から現在選択しているリージョンを確認することができます。

世界中に広がるAWS Cloudの中に複数存在する地理的なグループがリージョンのため、図にすると以下のようになります。

アベイラビリティゾーン(AZ)
AZは同一リージョン内にある、物理的に分離された複数のデータセンター
東京の場合は4つのAZが用意されている。
サブネットの作成の設定に進めば自分の利用可能なリージョンのAZを確認することができます。
※VPC作成については次に解説

AZはリージョンの中に複数存在して分かれています。
そのため、図にすると以下のようになります。

VPC
VPC とは、AWS 上に自分だけのネットワーク空間を作る仕組みになります。
このVPC作成はリージョンが単位になります。この後作成するサブネットがAZ単位です。
実際に自分で作成してみましょう。
-
左上からコンソールでVPCを選択

-
ダッシュボードのVPCを作成を押下

-
VPCの設定を入力
ここは重要なので一つ一つ設定項目を見ていきましょう。

-
作成するリソース
シンプルにVPCのみ(空の箱)作成するか、その他もろもろのネットワークセットを自動で作るか
今回は学習の意味でVPCのみを選択

-
VPCの名前
自分が分かるようにVPCの名前を付ける。

-
IPv4 CIDR ブロック
ここの選択肢ではIPv4 CIDRの手動入力とIPAM割り当てのIPv4CIDRブロックというのがありますが、ここでのIPAMの割り当ては企業向けのため今回は上の手動入力を行います。

ただここには何を入れるのがいいのでしょうか。。
個人的にはこの理解が難しかったです。
決めるのはVPC内で使うIP アドレスの範囲です。
そこでここで用いられているCIDR表記を理解する必要があります。
ただここでは細かいCIDR表記の説明は割愛して、
・どこから始まるネットワークか
・どれくらいの広さか
この二つを簡潔に表現しているのがCIDR表記という理解でいきます。
10.0.0.0/16の場合は
「10.0.0.0」がネットワークの開始地点であり、
「/16」がネットワークの広さで16ビットとして利用できるIPは
10.0.0.0 ~ 10.0.255.255(65,536個)の範囲ということが分かります。
そして今回AWS側に書かれているのが/16から/28の間にしてくれい、ということです。
数字が大きいほど、利用できるIPアドレスは減ります。

そのため今回はIPアドレスを最大限広げた10.0.0.0/16にしてみます。

-
IPv6 CIDR ブロック
今回はIPv6は利用しないので、ここはなしで行きます。

-
テナンシー
ここはデフォルトで進みます。
しかし、自分はこのテナンシーってなんだと思ったので調べました。これはこのVPCの中で起動するEC2の物理ホストの使い方を決めるものでした。
物理サーバー1台を自分用に確保してもらうかを選択できます。
もちろん今回は不要です。

-
VPC 暗号化コントロール
ここはVPC内のリソースの暗号化をモニタリングなどができる設定のようです。
今回は学習用なので不要です。

これでようやく、右下のVPCを作成ボタンからVPCを作成できます。

今は以下のようなイメージです。空の入れ物が作成できました。

VPCサブネット
次はサブネットを作成してみましょう。
VPCの左の項目にサブネットという項目があるのでそこからサブネットを作成してみます。

-
VPCを選択
先ほど作成したVPCを選択します。

-
サブネットの作成
最初はAZのaにパブリックサブネットにする予定であるサブネットを作成します。
ここの設定ではサブネットを作成するAZを指定できるのと、CIDR表記を記載します。
VPCを10.0.0.0/16で作成したので、それよりIP範囲を狭めた10.0.0.0/24で作成します。
同じ要領で今回はAZごとにパブリック、プライベート分けて4つのサブネットを作成してみます。
- a-northeast-1aのパブリック用サブネット
- a-northeast-1aのプライベート用サブネット
- a-northeast-1Cのパブリック用サブネット
- a-northeast-1Cのプライベート用サブネット
今の段階は以下のような状況になっているはずです。
二つのAZにサブネットを作成しましたが、まだすべてPrivate扱いです。
それはインターネットへの出口がないためです。

インターネットゲートウェイ
VPCをインターネットへと繋ぐ装置であるインターネットゲートウェイを作成します。

適当に名前を付けて作成します。

次にこのインターネットゲートウェイを作成したVPCにアタッチします。

これで一応VPCにインターネットゲートウェイを用意できました。

ルートテーブル
次に設定する必要があるのが、ルートテーブルです。
これはサブネットの通信を案内する案内役みたいなやつです。
これも左の項目からルートテーブルを選択して作成してみます。

適当に名前をつけてルートテーブルを使用するVPCを選択します。

ルートテーブルが作成できたらまずは、ルートを編集します。
右にあるルートを編集ボタンを押下します。

ルートテーブルには既にデフォルトとしてメインルートテーブルがあります。
それはVPC 内のサブネット同士の通信だけができる状態にするようなやつです。
localなのでVPCの内部です。
自分達が追加するのはメインとは違う0.0.0.0/0の先ほど作成したインターネットゲートウェイに繋がる外側のルートになります。
道案内の看板にインターネットへの出口を書きこむみたいな感じです。


その後にサブネットの関連付けを行います。
サブネットの関連付けを開いて、編集に進みます。

ここでは道案内を適応させるサブネットを選択しているということです。
今回導いてもらうのはPublicになることを予定している二つのサブネットなのでそちらを関連付けします。

そうしたらこの二つのサブネットはルートテーブルの道案内を通してInternet Gatewayに繋がるためPublic Subnetということができそうです。
今回完成したのは以下のような構成です。

まとめ
いかがだったでしょうか。
自分はめちゃくちゃためになりました。
ココを理解できれば様々なAWSのサービスのハンズオンをこの土台を基に始められるわけです。
自分はこのネットワークの理解を疎かにしていて痛い目を見たのでネットワークはこれからも勉強していこうと思います。
Discussion