AWSを利用する上で必ずと言っていいほど出てくる仕組みがVPCです。
VPCはAWSを使う上で理解しておく必要がある必須とも言えるものなので、まず最初に抑えておくことをオススメします。
今回はVPCについて解説したいと思います。
VPC(Virtual Private Cloud)とはなんぞや?
VPC、Virtual Private CloudとはAWS上に自分たちのNetworkを作るサービスのこと!
IPベースで構築するのでCIDRと呼ばれる記載方法でIPを定義し、割り当てることでNetworkとして機能させるものです。
イメージ的としては1つのデータセンターそのもの(あくまで論理的なNetworkとしての)です。
データセンターのイメージとして、アベイラビリティーゾーンがありますがVPCはアベイラビリティーゾーンを跨ぐことができます。
よって、そのAWSアカウントの規模にもよりますが多くはVPCを1つにしていることが多いのではないでしょうか。
実際に私が管理しているAWSアカウント(業務利用しているもの含めて)はVPCは原則1つが多いです。
ただし、複数リージョンを利用する場合はリージョン毎にVPCを作成する必要があります。
VPCでやること
では、VPCを作成するにあたって必要なことは何でしょうか?
具体的には以下の内容を主に作成していきます。
- VPCが利用するIPアドレス帯
- VPCの中で利用するSubnet(サブネット)の作成
- 外部とインターネット接続するためのインターネットゲートウェイの作成
- Private Subnetから外部にインターネット接続するためのNATゲートウェイ
- VPCフローログの設定
- Network ACLの設定
・・・など、多岐にわたります。
これらを設定、作成していくことでネットワークとしての機能を利用していくという形です。
サブネットとは?
サブネットはVPCの中に作る、ネットワークセグメントです。
オンプレのデータセンターの中でDMZや、内部向け~みたいなイメージ。
要するにすべてのサーバ、サービスを全て同じ場所に置くのではなく、役割毎にネットワークを分割してわかりやすく安全性を高くしよう、ということですね。
(オンプレのネットワーク設計に近い感じです。)
サブネットはさらに「Public Subnet」と「Private Subnet」があります。
Public Subnet
その名前の通り、外部との受け口(入り口)になるサービス、サーバを配置することが多いサブネットです。外部からの通信を受けるため、ElasticIPを割り当てることが多く外部に晒されるため危険度がちょっと高いサブネット。
ロードバランサーや、ロードバランサーを利用しないWebサービスなどを配置する。
Private Subnet
非公開のサブネットで、外部から直接通信を受け付けないようにするためPrivate IPのみを持つようにします。
また、ElasticIPを持たないためインターネットへの接続が行えません。
これを回避するためにNATゲートウェイを作成する必要があるのもポイント。(ElasticIPがある場合は直接通信できるので不要)
このサブネットは主に、RDSやDB、アプリケーションサーバやアプリケーションコンテナなんかをおいたりします。(Webサーバは置かずに、ロードバランサーから直接アプリを呼ぶ場合など)