「AWSの開発をしているけど、VPCがよくわからない!」
「AWS VPCってどんな時に使うの?」
この記事ではこういった疑問に答えていきます。
AWSの開発において、ネットワーク制御を行うために必要なVPC(Virtual Private Cloud)は、最初に設定するものとして、避けられないものです。
ネットワークの知識が豊富にあれば、問題ないのですが、クラウドの場合は、知識がそこまで豊富になくても何となく作れてしまうため、理解自体が希薄になってしまい、そもそもVPCについての理解度が低くなってしまいます。
そこで今回は、何となくの理解になってしまいがちなAWS VPCについて、そもそもVPCとはどんなものなのか、用途はどういうものなのかについてご紹介していきます。
そもそもAWS VPCとは何か?
AWS VPC(Amazon Web Service Virtual Private Cloud)とは、簡単に言うと、その名の通り、ユーザー専用のプライベートなクラウド環境を提供するサービスのことです。
AWSには、代表的な仮装サーバーの「Amazon EC2」、データベースの「RDS」などがありますよね。例えば、EC2同士を内部的に通信したい場合や、RDSとやり取りをしたり、内部と外部のネットワークを繋いだりと、多くのAWSはVPCを利用しています。
AWS VPCの強みとしては、ネットワーク設定を簡単にカスタマイズすることが出来る点です。
例えば、インターネットへのアクセスがあるウェブサーバーのサブネットを作成して、インターネットへのアクセスがないプライベートサブネットに配置することができます。
セキュリティグループやネットワークアクセスコントロールリストなど、非常に強力なセキュリティを使って、Amazon EC2インスタンスへのアクセスをコントロールすることが可能です。
AWS VPCではどんなものを設定出来る?
AWSでは、基本的にVPCが必須なのですが、実は勝手にAWS側が用意してくれています。すぐに使えるVPCとしては、Default VPCと呼ばれている、すぐに使うことの出来るVPCがあります。
このVPCを使ってまずは色々なものを設定していくのですが、具体的にどんなものを設定することが出来るか気になりますよね。以下に設定出来るもののリストを挙げてみました。
ここでは、具体的にそれぞれの設定について噛み砕いて解説していきます。
サブネット
サブネットは最初にVPCによって作られているCIDRブロックを分割したネットワーク群のことです。サブネットは、VPCの上限を超えなければ、いくらでも作ることが可能です。
サブネットには、主にパブリックサブネットとプライベートサブネットがあります。パブリックネットは字のごとく、外のネットワークと直接繋がっているサブネットで、プライベートサブネットとは、直接は外のネットワークに繋ぐことのできないサブネットになります。
それぞれのサブネットはAZ(アベイラビリティゾーン)を指定する必要があり、これはVPCの「Subnet」画面で設定することが可能です。
基本的に、Webサービスを開発する場合は、パブリックネットワークにしてしまいがちなのですが、外部から攻撃を受ける可能性も高いので、可能な限りプライベートサブネットにリソースを置くことが好ましいです。
なお、プライベートサブネットをパブリックにするには、後述するインターネットゲートウェイに接続する必要であることを覚えておきましょう。
インターネットゲートウェイ(IGW)
インターネットゲートウェイ(IGW)とは、VPCとその外のネットワークを繋ぐための接合点のようなものです。IGWを作成して、サブネットに繋ぐことで、サブネットと外部とのネットワークのやりとりを可能にすることができます。
ルーティング
サブネットを利用するために、各サブネットに対してルートテーブルを作成する必要があります。仮想的なルーターと考えるようにしてください。
例えば、ルートテーブルを作成して、接続先に作成したIGWを使うことで、ネットワークがIGWに転送されるようになり、サブネットがパブリックサブネットとなります。
DHCP
Default VPCの画面では、「DHCP Options Sets」という画面で設定することができます。独自のDHCPが必要な場合は別ですが、基本的には、AWSが予め準備しているものを使えば十分です。
ネットワークアクセスコントロール(NACL)
ネットワーク単位でIPアドレス単位での通信の制御をします。外側と内側の通信に対して、プロトコル・ポート・IPアドレスを入れて許可するのか、しないのかを決めていきます。
VPCを作成する時は、IPv4 CIDR blockを設定する必要があります。これは、作成したVPCの中で利用することが出来るネットワークのアドレス範囲を規定していて、インスタンスに割り当てられる内部ネットワークの上限アドレス数を決めることが可能です。
AWS VPCの用途は?
では、具体的にどのようにAWS VPCが使われているのかについてご紹介します。AWS VPCは、用途によって外部ネットワークとの組みわせが変わってきます。
インターネット向けシステム
インターネットを経由するシステムを提供する用途で使われるケースです。インターネット接続を待ち受けるインスタンスにはグローバルIPを設定しますが、必ず全てのインスタンスに付与する必要はありません。
ELB(Elastic Load Balancing)から複数のEC2にトラフィックを転送する構成がしばしば用いられていますが、高可用システムを作成するために使うことも可能なので覚えておきましょう。
オンプレミス向けシステム
オンプレミスとは、サーバーやソフトウェアなどの情報システムを自社で管理し、運用すること、つまり従来のサーバー運用形態のことをさしています。
オンプレミスのネットワークの延長としてVPCを相互に接続することで、データセンターのサーバーや企業の拠点PC向けシステムを提供しています。
インターネット兼オンプレス向けシステム
これは、先ほどのインターネット向けのシステムとオンプレス向けのシステムとの両方の接続をVPCに設定する構成です。普通は、クラウドか、オンプレスかの2択なので、珍しい使い方です。ルーティングテーブルのセキュリティ設定で対応するようにしましょう。
まとめ
今回は、AWS VPCについて概念の部分から、どういったことに使われるのかについて幅広く解説してきました。
AWSはネットワークに関する専門知識が無いユーザーでも使えるように設計されているのですが、専門知識を持って設計されたネットワーク構成を具現化する設定出来るようにもなっています。
実際にしっかり理解して使うのと、理解しないのでは全く違うので、実際に自分でVPCを作って理解出来るようにしましょう。
この記事のキーワードに関する勉強会・イベントを探す
TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。