コンテンツにスキップ

Amazon VPCとは?AWSのネットワークの基本をやさしく解説

AWSでWebサービスを動かすときは、サーバーを用意するだけでなく、「どの通信を受け付けるか」「サーバー同士をどうつなぐか」も決めます。AWS上でこうしたネットワークを作るサービスが Amazon VPC(Amazon Virtual Private Cloud) です。

身近な例:ネットショップで実現したいこと

Section titled “身近な例:ネットショップで実現したいこと”

AWSでネットショップを運営する場面を考えてみます。お客さんには商品を見て注文してもらいたい一方で、注文データを誰でも直接開ける状態にはしたくありません。

そのため、次のようなことを実現したいはずです。

  • お客さんにはサイトを公開する。 商品ページや注文画面には、インターネットからアクセスできるようにする。
  • 注文データは内部で扱う。 サイトの処理には必要でも、お客さんがデータベースへ直接接続できないようにする。
  • サーバーから必要なサービスに接続する。 ソフトウェア更新の配布元や、商品画像を保存するAWSのサービスを使えるようにする。

このように、外へ公開する部分と内部だけで使う部分を分け、どこからどこへ通信できるかを決めたいときにVPCを使います。VPCはネットワークを設計するための土台です。商品ページを表示するプログラムや注文処理そのものは、EC2など別のリソースが動かします。

それぞれの機能は何を担当する?

Section titled “それぞれの機能は何を担当する?”

この目的を実現するために、VPCにはどんな機能があるのかを順に見ていきます。

VPCは、AWS内に作るネットワーク全体の枠です。EC2やデータベースなどのAWSリソースを、このネットワークに接続して使います。

「敷地」にたとえると、VPCは敷地全体、EC2は敷地の中に置くサーバーです。敷地だけあってもサーバーは動かず、サーバーだけあっても接続するネットワークを決める必要があります。

ネットワーク上のサーバーには、行き先を見つけるためのIPアドレスが使われます。VPCでは、その中で使うIPアドレスの範囲を決め、さらにサブネットごとに範囲を分けます。

範囲は CIDR(サイダー) という書き方で表します。たとえば、次の例ではサブネットの範囲がVPC全体の範囲の中にあります。

VPC全体: 10.0.0.0/16
サブネット: 10.0.1.0/24

ここでは「VPCやサブネットで使うIPアドレスの範囲を示すもの」と覚えておけば十分です。

サブネットは、VPCの中を用途ごとに分けた小さなネットワークです。ネットショップなら、外からの通信を受ける場所と、注文データを扱う場所を分けるために使います。

  • パブリックサブネット: インターネットとの出入口へつながる経路がある
  • プライベートサブネット: インターネットとの出入口へ直接つながる経路がない

サブネットは、AWSの場所の単位である アベイラビリティゾーン(AZ) ごとに作ります。複数のAZにサーバーを分けると、1か所の障害に備えやすくなります。

ルートテーブル:通信の行き先案内

Section titled “ルートテーブル:通信の行き先案内”

ルートテーブルは、通信の宛先を見て、どこへ送るかを決める案内表です。同じVPC内の相手へ送る通信と、インターネットへ向かう通信では行き先が異なります。ルートテーブルは、そうした行き先を指定します。

サブネットにルートテーブルを関連付けることで、そのサブネット内のサーバーがどの経路を使うかを決めます。

インターネットゲートウェイ:VPCとインターネットの出入口

Section titled “インターネットゲートウェイ:VPCとインターネットの出入口”

インターネットゲートウェイは、VPCとインターネットをつなぐ出入口です。パブリックサブネットからインターネットへ通信するために使います。

パブリックサブネットにサーバーを置いただけで、誰でも接続できるわけではありません。サーバーに割り当てるIPアドレスや通信を許可するルールも関係します。

NATゲートウェイ:プライベート側から外へ出るための中継

Section titled “NATゲートウェイ:プライベート側から外へ出るための中継”

NATゲートウェイは、プライベートサブネットのサーバーが外部へ通信するときの中継役です。たとえば、サーバーからソフトウェア更新を取得する用途があります。

外部からプライベートサブネットのサーバーへ直接つなぐためのものではありません。サーバー側から始めた通信の返事を受け取れるようにします。

セキュリティグループ:サーバーごとの通信ルール

Section titled “セキュリティグループ:サーバーごとの通信ルール”

セキュリティグループは、EC2などのリソースに届く通信や、そこから出る通信を制限するルールです。「注文処理をするサーバーからデータベースへの通信だけを許可する」のように、必要な通信を選んで許可します。

ネットワークの通り道があっても、セキュリティグループで許可されていない通信は通りません。経路と通信ルールの両方が必要です。

VPCエンドポイント:AWSサービスへのプライベートな入口

Section titled “VPCエンドポイント:AWSサービスへのプライベートな入口”

VPCエンドポイントは、VPC内のサーバーから一部のAWSサービスへプライベートに接続するための入口です。たとえば、サーバーからAmazon S3を利用するときに使えます。

機能を組み合わせると、どんな構成になる?

Section titled “機能を組み合わせると、どんな構成になる?”

最初のネットショップの例を、ここまでに紹介した機能で表してみます。利用者からの通信を受け付けるロードバランサー、サイトを動かすEC2、注文データを保存するデータベースは、VPCの中で使うAWSリソースです。

実現したいこと機能の使い方
お客さんにサイトを公開するパブリックサブネットにロードバランサーを置き、インターネットゲートウェイへの経路を用意する
注文データを内部で扱うEC2とデータベースをプライベートサブネットに置き、セキュリティグループで「ロードバランサーからEC2」「EC2からデータベース」など必要な通信だけを許可する
サーバーから更新を取得するプライベートサブネットからの外向き通信をNATゲートウェイへ送る
商品画像をAmazon S3に保存する対応するVPCエンドポイントを使ってS3へ接続する
flowchart LR
    User[お客さん] --> Internet[インターネット]
    IGW[インターネットゲートウェイ]
    subgraph VPC[Amazon VPC]
        subgraph Public[パブリックサブネット]
            LB[ロードバランサー]
            NAT[NATゲートウェイ]
        end
        subgraph Private[プライベートサブネット]
            App[EC2:サイトの処理]
            DB[データベース:注文データ]
        end
        Endpoint[VPCエンドポイント]
    end
    S3[Amazon S3:商品画像]
    Internet --> IGW --> LB
    LB --> App
    App --> DB
    App --> NAT --> IGW
    IGW --> Internet
    App --> Endpoint --> S3

図の矢印は、どこからどこへ通信させたいかを示しています。実際には、各サブネットのルートテーブルと各リソースのセキュリティグループなどを設定して、この通信経路と許可範囲を作ります。

  • VPCは仮想PCではなく、AWS内のネットワーク
  • 仮想サーバーはEC2で、VPCのネットワークにつないで使う
  • VPCを使うと、通信を受ける場所と、外部から隠すサーバーの場所を分けられる
  • サブネットでネットワークを区切り、ルートテーブルで通信の行き先を決める
  • ゲートウェイやセキュリティグループで、通信の通り道と許可範囲を制御する

この記事では機能の役割を説明しました。VPCやサブネットを実際に作り、各設定を行う手順は別の記事で扱います。