こんにちは、Mashです。
本記事は私自身がAWSをお勉強で触ってみた経験を共有するシリーズ Mash式AWSチュートリアル です。
今回はAmazon VPC編の第1回となります。
多くのAWSサービスはこのVPC上で稼働するため、AWSを利用するうえで根幹となるたいへん重要なサービスです。
ひとつずつポイントをおさえていきましょう。
今回盛りだくさんな内容になっていますが、順を追って進めていただければ以下のような知識を習得できます。
- Amazon VPCの概要が理解できる
- Amazon VPCの最低限の作成ができるようになる
- VPC上にEC2を構築して、接続確認ができるようになる
何度も読み返してバッチリ習得してください!
What is Amazon VPC?
まずはVPCに関する基本的な知識を整理していきましょう。
VPCとは
正式名称は Virtual Private Cloud で、頭文字3文字をとって VPC と略します。
VPCは、各利用者ごとに仮想的に隔離された、プライベートなネットワーク空間を提供するサービスです。要は「AWS」という同じサービスを利用しているにも関わらず、自分で作成したネットワーク領域が別の利用者が作成した領域と干渉することなく使えるという感じです。

利用料金
VPCに関する追加サービスで有料のものはありますが、本記事で作成するVPC、サブネット、インターネットゲートウェイは無料サービスとなっています。
EC2は有料ですが、AWSアカウント作成後1年間は無料枠が利用可能ですので、本記事の内容を消化するくらいでは課金されることはありません。

AWSのグローバルインフラストラクチャ
AWSサービスを利用するにあたり、まずは自身のネットワーク領域(VPC)を どこに どのように 構築するか検討するわけなんですが、これらを考える上で切っても切り離せないのが リージョン と アベイラビリティゾーンです。
公式ページはこちら。
リージョン
AWSでは顧客のシステムを柔軟にグローバル展開できるよう、北米、南米、欧州、中国、アジアパシフィック、南アフリカ、中東など地理的に離れた様々な国でサービス拠点を提供しています。
これらグローバルに点在している拠点のことを リージョン と呼びます。
なお、日本には東京リージョンと大阪リージョンの2拠点がありますが、大阪リージョンの利用には特別な申請/承認が必要なので基本的には東京リージョンを利用することになります。
本ブログではなにか理由がない限り、東京リージョンを利用して検証を進めています。
サービス仕様や料金などがリージョン毎に異なる可能性があるためご注意ください。
アベイラビリティゾーン
各国のリージョンには、論理的なデータセンター(サーバを安全に置いておくためのビルと思ってください)が点在しています。
この論理的なデータセンターのことを アベイラビリティゾーン(AZ) と呼び、各リージョンには複数のAZが存在します。
で、利用者があまり意識することはないのですが、AZは実は複数の物理的なデータセンターから構成されています。そのため「論理的な」という表現になっています。
仮に、ひとつのデータセンターで電源供給が停止!といった障害が発生しても、AZとしてはサービス提供が可能な設計となっているわけですね。
図示してみた
さて、文字だけだとわかりずらいのでリージョンやAZ、そしてVPCの概念を図示しましょう。

四角い枠がいっぱいあって見づらいかもしれませんが、ポイントは以下です。
- いちばん大きい枠がAWSというサービスそのものである
- AWSには、世界各国にサービス拠点(リージョン)がある
- リージョンは、複数のAZで構成されている
- AZは、複数のデータセンターで構成されている
- VPCは、リージョン単位で構成する(複数作成可)
- VPCは、複数のAZをまたぐことができる
- VPCは、互いに独立している(VPC同士を接続するサービスもあります)
AWSは Design for Failure 、つまり「故障を前提に設計せよ」の原則を提唱しています。
AWSが提供しているインフラストラクチャをうまく利用することで、AWS利用者は自社サービスに求められるレベル感に応じてマルチAZ / マルチリージョン構成をとることができ、オンデマンドで柔軟に耐障害性を高めることが可能となっています。
ちなみにおまけですが、リージョンやAZがどこにあるかが直感的にわかる超カッコいい公式ページがあるのでURLリンクを貼っておきますね。

私のPCはこのサイトを開いたとたんCPUクーラがゴーゴー言い出します。笑
VPCを動かしてみる
それでは実際にVPCを構成してみましょう。
といっても、VPC自体はただのネットワーク領域なので、VPC上でAWSの仮想サーバサービスであるEC2を起動するまでを目標に進めていきます。
VPCを作成する
VPCを作成する方法として「VPCウィザード」という、よくあるVPC構成を簡単に作成できるツールもあるのですが、今回はVPCの構成要素を理解することが目的ですのでVPCウィザードは利用せずに進めます。
VPCの作成
VPC作成の前に、AWS管理コンソールへログイン後、画面右上のリージョン選択が [東京] となっていることを確認してください。

リージョンが東京となっていることが確認できたら、AWS管理コンソールからVPCページへアクセスし、左側メニュー [VPC] を選択、そして [VPCの作成] ボタンをクリックします。

VPCの作成 画面で必要な定義を入力していきます。今回は以下のようにして進めます。
設定項目 | 設定値 |
---|---|
名前タグ | mash-vpc (好きな値でOK) |
IPv4 CIDRブロック | 10.0.0.0/16 |
IPv6 CIDRブロック | IPv6CIDRブロックなし |
テナンシー | デフォルト |
タグ | 追加なし |

CIDR については、AWS用語ではないので今回は参考サイトのご紹介だけで進めます。
VPCで定義するCIDRは、/16 以上 /28 以下 という制限があります。これに則していない場合はこのようなエラーとなりVPC作成を進めることはできません。

設定値に問題なければVPCがさくっと作成されます。

この時点では以下のイメージ図のように、東京リージョンにVPCが作成された状態となっています。

サブネット作成
続いて サブネット を作成します。
サブネットは、大きなネットワークを細かく区切った領域のことを意味します。サブネットそのものについてもAWS用語ではないため参考サイトのご紹介とさせていただきます。
AWSでは、VPC(大きなネットワーク領域)をサブネットで区切っていくことになります。
画面左側メニュー [サブネット] を選択し、[サブネットの作成] をクリックします。

サブネットの作成 画面で必要な定義を入力していきます。今回は以下の通りにして進めます。
設定項目 | 設定値 |
---|---|
名前タグ | mash-public-subnet01 |
VPC | ※さきほど作成したVPCのID リストが表示されるためIDを覚えておく必要はありません |
アベイラビリティーゾーン | ap-northeast-1a |
IPv4 CIDRブロック | 10.0.0.0/24 |

ap-northeast が東京リージョンを意味するリージョンコードで、東京リージョンにはAZが1a、1c、1dの3つあります。今回は1aを選択しています。
ここでわかるようにサブネットはAZと紐づきます。AZをまたいで作成することはできません。
またCIDRブロックについては管理のしやすい /24 で指定しています。(このあたりはネットワーク知識になるので詳細割愛。。。)
各パラメータに問題がなければサブネットもサクッと作成されます。

ここまでの状態を図示するとこのようになります。
AZ 1aにサブネットが作成されています。

ここで一つだけ、サブネットに対して追加設定をします。作成したサブネットを選択した状態で [アクション] から 自動割り当てIP設定の変更 をクリックします。

遷移した画面で IPv4の自動割り当て にチェックを入れて保存しておいてください。

この設定は、EC2を作成する際に自動的にパブリックIPアドレス(インターネットと通信するためのIPアドレス)を割り当てる設定です。
無効でもかまわないのですが、あとあと面倒なのでここで有効にしておきましょう。
インターネットゲートウェイの作成
さて、サブネットまで作成できたのでEC2を構築、、、
といきたいところですが、この状態で mash-public-subnet01 にEC2を構築してもインターネット経由でアクセスできません。
そこで登場するのが インターネットゲートウェイ (IGW)です。
IGWは、インターネットからVPC内 / VPC内からインターネット の通信を介在してくれるコンポーネントです。
ここからはIGWを作成していきます。
AWS管理コンソールでVPCページにアクセスしているかと思いますので、左側メニュー [インターネットゲートウェイ] を選択し、[インターネットゲートウェイの作成] ボタンをクリックします。

IGWを作成する際は、特別なパラメータはありません。
お好きな名前をつけて作成しましょう。

IGWが作成されました。まだ「作成しただけ」なので、VPCとの関連付けをする必要があります。
[VPCへアタッチ] をクリックします。

関連付けるVPCをリストから選択して進めればOKです。

IGWがVPCにアタッチできました!

サブネットのルーティング設定
あともう一歩です。
VPCとインターネット間の入口/出口が作成できましたので、あとは道路を整備してあげる必要があります。
そう、ルーティングの設定ですね。AWSではサブネット単位でルーティング設定を行います。
AWS管理コンソールの左側メニュー [サブネット] から、さきほど作成したサブネットにチェックを入れた状態で画面下部 [ルートテーブル] タブを選択します。
そして、ルートテーブルと書かれた右側に記載のあるIDがリンクになっていますので、こちらをクリックします。

すると、ルートテーブルの画面に遷移します。
画面下部[ルート] タブを選択し、[ルートの編集] をクリックします。

[ルートの追加] ボタンをクリックすると新しい行が追加されますので、送信先を 0.0.0.0/0、ターゲットをIGWとします。
入力が完了したら [ルートの保存] をクリックします。

ここで追加した0.0.0.0/0は、「すべてのIPアドレス」を意味します。
今回の場合は、10.0.0.0/16宛以外の通信はすべてIGW向けに送信される という設定になっています。
VPCを利用する上で最低限必要になる作業は以上になります。おつかれさまでした!
ここまでの作業で構築できた環境を図示しますね。
IGW作成とルーティング設定によって、インターネットとサブネット間で通信できるようになりました。

※AWS Cloudの外枠はもう不要なので削除しています
EC2を作成する
ようやくここまできました。笑
それではお待ちかね。作成したVPCネットワーク上に仮想サーバであるEC2を構築してアクセスしてみましょう。
EC2の詳細については別途EC2編でご説明します。
ここでは稼働確認のための手順だけご紹介します。
まずAWS管理コンソールから EC2ページ へアクセスし、[インスタンスを起動] ボタンをクリックします。

AMI選択画面では Amazon Linux 2 を選択します。おそらくいちばん上に表示されているかと思います。

インスタンスタイプの選択 ではデフォルトのまま t2.micro を選択して [次のステップ] をクリックします。

インスタンスの詳細の設定 では、
- ネットワーク がDefaultとなっているはずなので、作成したVPCへ変更
- 自動割り当てパブリックIP が 有効 となっていることを確認
この2点だけ確認して [次のステップ] をクリックします。

ストレージの追加 はそのまま [次のステップ] をクリックします。

タグの追加 では、EC2の名前だけつけておきましょう。
キーをName、値をお好きな名称にして [次のステップ] をクリックします。

セキュリティグループの設定 では、新しいセキュリティグループを作成する が選択された状態でOKです。
セキュリティグループ名と説明文は任意のもので構いません。

インスタンス生成の確認 画面で警告が表示されます。
「外部に公開されちゃってるけど大丈夫?」という警告です。本来はもっとセキュリティを強固にする必要がありますが、今回はテスト目的ですので問題ありません。 [起動] ボタンをクリックします。


EC2へ接続するためのキーペアをどうするか聞かれます。
EC2作成がはじめての場合は、新しいキーペアの作成 を選択して、キーペア名欄にお好みの名前を入力して [キーペアのダウンロード] をクリックします。
ファイルがダウンロードできたら [インスタンスの作成] ボタンをクリックします。

ダウンロードしたキーペアファイルをなくしてしまうとEC2へ接続できなくなりますのでご注意ください。
また、このファイルを他人に譲渡してはいけません。
以上でEC2の作成が開始します。「次のインスタンスの作成が開始されました」の右側リンクをクリックします。

EC2一覧画面に遷移します。
EC2が稼働するまでに少し時間がかかりますが、インスタンスの状態 が実行中になります。

作成したEC2をクリックして選択状態にすると、画面下部にいろいろと情報が表示されます。
- 意図したサブネットに所属していること
- プライベートIPv4アドレスが、指定したサブネットの範囲内であること
- パブリックIPv4アドレスが割り当てられていること
このあたりが確認できればOK。

EC2の作成は以上です。
ここまでで下記のような環境になりました。

インターネット経由で接続してみる
それではEC2へSSH接続してみましょう。私はWindowsを使用しているため、Teratermというソフトをつかって接続します。
手順はクラスメソッドさんのブログをお借りします!(手抜きすんません)


つながりましたー!バッチリですね。
ここでチュートリアルを終える方はEC2の停止をお忘れなく!
AWSには一定の無料枠がありますが、ムダな請求が来てしまう可能性があります。
まとめ
今回の記事でVPCの基本的なセットアップ手順とEC2への接続確認まで体験できました。
ひとまずリージョン / AZ / VPC / サブネット の関係性がイメージできて、頭の中で構成図が描けるようになっていればうれしいです。
今回ご紹介した内容はほんとうに最低限の状態となっているため、次回以降少しずつ実践的なVPC構成に拡張してきたいと思います。
今回は以上です。
それじゃあまたね。