こんにちは、弱小エンジニアのいすいです!
本日のテーマはタイトル通り、 Amazon VPC です!
みなさん AWS に触れ始めた頃に、EC2 の作成でセキュリティグループやサブネットなどの設定がうまくいかなかったり、時間がかかってしまったことはないでしょうか、、?
もしくは良く分からないまま設定してしまったとかないでしょうか、、?
(何を隠そう、自分もそうでした、、🤣)
本記事では、そんなVPC って何なの?どうやって設定するの?という部分を初心者の方向けに超簡単に解説いたします。
最近の業務で AWS を使ったので、今回はその復習も兼ねています。
それでは、Let’s go!!!
目次
Amazon VPCって?
そもそもAmazon VPC(以降 VPC と省略)とは、
AWS 内部に作ることができる利用者専用のプライベートネットワークのことです。
そして個々の VPC は完全に独立しています。
何も設定されていない状態では、AWS アカウントを持っていても VPC 内部に入ることはできず、
もちろん AWS 内部関係者もアクセスができません。
VPC を使うことで、社内や家庭のネットワークと同じようなプライベートネットワークの環境を構築することができるのです。
VPC の内部で使用できる AWS サービス
VPC の詳細に入る前にまず大事な点として、
VPC 内部には全ての AWS サービスを置けるわけではないという点があります。
ここは個人的に最初に一番壁となった点です、、😢
VPC はプライベートネットワークなんだから、
基本的にそこに全てのリソースを配置できると思ってしまいそうですが、
VPC の内部で使用できるサービスは 、EC2 をベースとしたサービスのみとなります。
具体的には以下のサービスを VPC 内部に置くことができます。
- EC2
- RDS
- ロードバランサー
- etc..
ストレージサービスの S3 やサーバーレスの Lambda などを VPC 内部に置くことはできません。
()
つまりは S3 や Lambda などは パブリックインターネット上に配置されることになります。
ただしLambdaにVPC接続という機能があるので、VPCに置いているような構成にすることは可能です。
(実際はENIというネットワークインターフェースがVPC内に置かれるだけです。https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-vpc-endpoints.html)
また、S3 などではプライベートアクセスにする設定もあります。
S3 や Lambda などでセキュリティ設定できないのかというと当然そのようなことはなく、
各サービスに付いてるアクセス制限を使用できます。
アクセス制限に関しては VPC の話と逸れてしまうので説明は控えます。
VPC に関連するサービス
VPC 内部で使えるのは EC2 ベースのサービスのみと説明したところで、
VPC に関連するサービスについてざっと説明いたします。
VPC 環境の構築には基本的に以下のサービスが必要になってきます。
- インターネットゲートウェイ(igw)
- サブネット(subnet)
- ルートテーブル(rtb)
インターネットゲートウェイ(igw)
VPC をインターネットに繋ぐために必要です。VPC の入り口です。
サブネット(subnet)
VPC のネットワークを分割するために用います。
実際に AWS リソースが配置されるのはサブネット内です。
ルートテーブル(rtb)
サブネットでのルーターの機能を持ちます。
サブネット作成時に自動作成され、そのサブネットに紐づきます。
EC2 などのサービスは 実際には VPC 内のサブネット内に配置されます。
VPC の機能はプライベートネットワーク全体の CIDR を定義しているだけに過ぎません。
(つまり VPC を分割する必要がなくてもサブネットは必要です)
また、VPC だけではインターネットにアクセスできず、
インタネットゲートウェイ(igw)を使うことでインターネットにアクセスができます。
igw がないと VPC 内の EC2 は外部とインバウンドもアウトバウンドも通信ができません。
ただ、igw を経由せずに VPC内部から他の AWS サービスにアクセスが可能な
VPC エンドポイントというサービスがあります。(次の投稿で扱います)
また、VPCからVPNに繋ぐものとして仮想プライベートゲートウェイというものもあります。
(こちら今回は説明は省かせていただきます。)
では、実際に EC2 作成に必要な最低限の VPC 環境を作成手順をご紹介します。
EC2 作成に必要な最低限の VPC 環境の作成
EC2 の場合に限らず、他の EC2 ベースの AWS サービスでも通じる手順です。
こちらをベースに、RDS を配置したり、サブネットをプライベートにしたり、応用ができると思います。
EC2 作成に最低限必要な VPC 環境を作成する手順は以下です。
- VPC の作成
- サブネットの作成
- インターネットゲートウェイの作成
- ルートテーブルの変更
1. VPC の作成
AWS コンソールに入り以下の手順で VPC を作成します。
- AWS コンソールの検索窓に「VPC」と入力し、VPC のコンソール画面に進みます。
- 「VPCを作成」を押下します。
- 以下のように入力欄を埋め、一番下の「VPCを作成」を押下します。
- 作成するリソース:「VPCなど」にすると、サブネットなども同時に作成できますが、ちゃんと理解していないと不要なリソース作成や設定をしてしまう可能性がありますので、最初は「VPCのみ」で良いと思います。
- 名前タグ:任意です。
- IPv4 CIDRブロック:「IPv4 CIDRの手動入力」を選択します。
- IPv4 CIDR:任意ですが、特にこだわりがなければ「10.0.0.0/16」で良いと思います。実際の運用では CIDR を社内ネットワークの管理ポリシーに準拠して設定することで、社内ネットワークのように扱うことが可能です。実際の運用では要件に応じて CIDR は決まります。
- IPv4 CIDRブロック:今回は使わないので、「IPv6 CIDR ブロックなし」にします。
今の時点で作成した環境は以下のような状態となっています。VPC があるだけです。
続いてサブネットを作成します。
2. サブネットの作成
以下の手順でサブネットを作成します。
- 左のサイドバーからサブネットを選択(もしくはサブネットで検索)し、サブネットのコンソール画面に進みます。
- 「サブネットを作成」を押下します。
- 以下のように入力欄を埋めて、一番下の「サブネットを作成」を押下します。
- VPC ID:先ほど作成した VPC を選択します。
- サブネット名:任意です。
- アベイラビリティゾーン:任意です。(後ほどEC2作成時にこのアベイラビリティゾーンを同じにします。)
- IPv4 CIDR:任意ですが、特にこだわりがなければ「10.0.1.0/24」で良いと思います(「10.0.x.0/24」の CIDR でサブネットは225個作成でき、1つのサブネットあたり255個のIPアドレスを割り当てられる計算になります)。実際の運用では要件に応じて CIDR を設定します。
この時点で作成した環境は以下のようになっています。
サブネットが作成されたので、サブネット内に AWS リソースを配置することが可能になりました。
サブネット内の AWS リソースは、ルートテーブルを用いて相互に通信する事ができます。
しかし、まだサブネット内の AWS リソースは外部とは通信ができません。
続いて、インタネットゲートウェイを作成します。
3. インターネットゲートウェイの作成
以下の手順でインターネットゲートウェイを作成します。
- 左のサイドバーからインターネットゲートウェイを選択(もしくはインターネットゲートウェイで検索)し、インターネットゲートウェイのコンソール画面に進む。
- 「インターネットゲートウェイの作成」を押下する。
- 以下の入力欄を埋め、「インターネットゲートウェイの作成」を押下する。
- 名前タグ:任意です。
4. 作成したインターネットゲートウェイを VPC にアタッチする。
インターネットゲートウェイの作成後、作成したインターネットゲートウェイの管理画面にいるの
で、「アクション」>「VPC にアタッチ」> 作成した VPC を選択して、「インターネットゲートウ
ェイのアタッチ」を押下します。
ちなみに VPC にアタッチできるインターネットゲートウェイは1つまでです。
環境は以下のようになりました。
インターネットゲートウェイを作成したので、VPC は外部へアクセスができるようになりましたが、サブネットから外部へアクセスはまだできません。
それはサブネットとインターネットゲートウェイが繋がっていないためです。
ルートテーブルにインターネットゲートウェイへのルートを追加します。
4. ルートテーブルの変更
以下の手順でルートテーブルを変更します。(ルートを追加します)
- 左のサイドバーからサブネットを選択(もしくはサブネットで検索)し、サブネットのコンソール画面に進む。
- 作成したサブネットを選択し、下のウィンドウの「ルートテーブル」タブを選択する。
- 「ルートテーブル:〜」の〜がリンクになっているので、リンクを押下する。
- ルートテーブルの管理画面に移動するので、下のウィンドウの「ルート」タブを選択する。
- 以下のように「0.0.0.0/0」をインターネットゲートウェイへのルートで追加する。
- 送信先:「0.0.0.0/0」(外部ネットワークへアクセスする際のデフォルトゲートウェイを指す)
- ターゲット:作成したインターネットゲートウェイ(コンボボックスでインターネットゲートウェイを選択すると、作成したインターネットゲートウェイが選択できます。)
ちなみに、「10.0.0.0/16 ,lobal」のルートはデフォで作成されており、同じサブネット内で通信するのに使用するものです。
6. 「変更を保存」を押下する。
これで作成した環境は以下のようになりました。
以上で EC2 を置く VPC 環境が整いました。
ちなみに、上の図のようにサブネットがインターネットゲートウェイに繋がっている場合、
そのサブネットはパブリックサブネットと呼ばれたりします。
逆にインターネットゲートウェイに繋がっていないサブネットはプライベートサブネットと呼ばれます。
パブリックサブネットとプライベートサブネットは AWS コンソール上で出てくる単語ではないのですが、色んなサイトで良く使われています。
(こちらとか:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Scenario2.html)
まとめ
ここまで VPC の概要から、 VPC 作成手順までご紹介しました。
内容をまとめます。
- VPC はAWS 内に作成された完全独立のプライベートネットワークのこと
- VPC 内部では EC2 ベースのサービスのみ使用できる
- VPC 環境には「igw」「サブネット」「ルートテーブル」が基本的に必要
- AWS サービスは実際はサブネット内に作成される
- igw は VPC と外部の通信に必要(実際はさらにサブネットから igw へのルートも必要)
- インターネットゲートウェイに接続されたサブネットは「パブリックサブネット」と呼ばれる
今回の内容で VPC について少しでもみなさんの理解が進んでいたら嬉しいです!
VPC 内に EC2 を作成する話は次の投稿とさせてください。🙇🏻♂️
→2022/12/3 EC2 の記事投稿しました
今回は11ヶ月ぶりの投稿となりました(良くないですね、、w)が、これから毎週投稿を続けたいと思いますので、
今後とも読んでいただけたら幸いです。