導入
VPCという敷地ができても、そのままでは何も動きません。敷地の中を区画に分け、どこがインターネットに面していて、どこが面していないかを決める必要があります。
説明
VPCの内部は、サブネットという単位でさらに区切って使います。
- パブリックサブネット … インターネットゲートウェイ経由でインターネットと直接通信できるサブネット。Webサーバーなど、外部からアクセスされる必要があるリソースを置く。
- プライベートサブネット … インターネットから直接アクセスできないサブネット。データベースなど、外部に直接さらしたくないリソースを置く。
通信の出入り口となるのが次の2つのゲートウェイです。
- インターネットゲートウェイ(IGW) … VPCとインターネットの間の双方向の出入り口。パブリックサブネットのリソースが外部と通信するために使う。
- NATゲートウェイ … プライベートサブネットのリソースが、外部からは直接アクセスされずに、自分からインターネット側へ出ていく(例:ソフトウェアの更新を取りに行く)ための一方向の出口。
そして、どの通信をどこへ送るかを決めるのがルートテーブルです。サブネットごとに関連付けられ、「この宛先の通信はこのゲートウェイへ」という経路(ルート)の一覧を持ちます。
flowchart TB
Internet(("インターネット"))
subgraph VPC["VPC"]
IGW["インターネット\nゲートウェイ"]
subgraph Public["パブリックサブネット"]
Web["Webサーバー(EC2)"]
end
subgraph Private["プライベートサブネット"]
DB["データベース(RDS)"]
Nat["NATゲートウェイ"]
end
end
Internet <--> IGW
IGW <--> Web
Private -->|外へ出るときだけ| Nat
Nat --> IGW
Webサーバーはパブリックサブネットに置いて外部からのアクセスを受け付け、データベースはプライベートサブネットに置いて外部から直接アクセスできないようにする——この組み合わせが、Webアプリケーションの定番の構成です。
読んでみよう
「IGWは双方向の玄関、NATゲートウェイはプライベート側から外へ出るための一方通行の勝手口」という違いは頻出ポイントです。