AWSの「パブリックサブネット」って結局なに?郵便配達の仕組みで紐解くクラウドネットワークの基礎
こんにちは!クラウドインフラの現場でSREをしていると、「パブリックサブネットにインスタンスを置いたのに、なぜか外と繋がらない!」という悲鳴のような相談をよく耳にします。
AWSのネットワークは非常に強力ですが、最初は「サブネット」「ゲートウェイ」「ルートテーブル」といった言葉の壁にぶつかりがちですよね。今日は、AWSのVPC(仮想ネットワーク)における「パブリックサブネット」の正体を、もっとも身近な「郵便配達」の例えを使って、じっくり紐解いていきましょう。
—
1. VPCは「巨大なマンション」、サブネットは「各階の廊下」
まず、VPCを「AWSという巨大なマンション」だと想像してください。このマンション内には部屋(リソース)がたくさんありますが、そのままでは外の世界と手紙のやり取りはできません。
ここで登場するのがサブネットです。サブネットはマンションの「各階の廊下」のようなもの。同じ階(サブネット)にいる住人同士は直接手紙を渡せますが、マンションの外へ手紙を出すには、「管理室」を通る必要があります。
パブリックサブネットの条件
AWSで「パブリックサブネット」と呼ぶためには、以下の2つの条件が揃っている必要があります。
1. インターネットゲートウェイ(IGW)への道があること
2. そこにいる住人(インスタンス)が「外に出られる切符(パブリックIPアドレス)」を持っていること
このどちらか片方が欠けても、そのサブネットは「パブリック」の皮を被った「プライベート(隔離された場所)」になってしまいます。
—
2. インターネットゲートウェイは「マンションの出口」
インターネットゲートウェイ(IGW)は、いわば「インターネットという広大な外の世界へ繋がる唯一の門」です。
しかし、門があるだけではダメなんです。廊下(サブネット)にいる住人が「外に行くにはどの門を通ればいいの?」という地図を持っていないといけません。これがAWSでいうルートテーブルです。
ルートテーブルには、こんな指示が書かれています。
- 「マンション内の隣の部屋に行くなら、そのまま廊下を歩け」
- 「外の世界(
0.0.0.0/0)に行くなら、あの門(IGW)をくぐれ!」
この指示がないと、リソースは迷子になってしまいます。
—
3. 実践:Terraformで「パブリックサブネット」を定義する
では、実際にインフラコード(Terraform)で見てみましょう。教科書的な設定ですが、これが「パブリック」を作る最小単位です。
# 1. 巨大マンション(VPC)を作る
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
# 2. 外への門(インターネットゲートウェイ)を作る
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
}
# 3. 廊下(サブネット)を作る
resource "aws_subnet" "public_subnet" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
# ここが重要!「住人に外に出る切符を自動で渡す」設定です
map_public_ip_on_launch = true
}
# 4. 地図(ルートテーブル)を作って、門へのルートを教える
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0" # 「すべての宛先は…」
gateway_id = aws_internet_gateway.gw.id # 「この門から出ろ!」
}
}
# 5. 廊下と地図を紐付ける
resource "aws_route_table_association" "a" {
subnet_id = aws_subnet.public_subnet.id
route_table_id = aws_route_table.public_rt.id
}
ポイントは、map_public_ip_on_launch = true です。これがないと、インスタンスを作成したときに外の世界で通用する「パブリックIP」が付与されず、どれだけ門を通ろうとしても、外の世界から「あんた誰?」と拒否されてしまいます。
—
4. トラブルシューティングの極意:なぜ繋がらないのか?
現場で「設定したはずなのに繋がらない!」という時は、だいたいこの3つのどれかです。
1. ルートテーブルが設定されていない(または間違ったサブネットに紐付いている)
- 地図を見ずに門まで歩いている状態です。ルートテーブルの
0.0.0.0/0のターゲットがigw-xxxxになっているか確認しましょう。
2. パブリックIPアドレスが付与されていない
- たとえ門が開いていても、住所(IPアドレス)がマンション専用(プライベートIP)だと、インターネットの郵便配達員は届けることができません。
3. セキュリティグループの遮断
- マンションの玄関に「厳重なセキュリティゲート」がある状態です。インバウンドルールで
80や443ポートなどが許可されているか確認してください。
—
最後に:一歩ずつ進めば怖くない
いかがでしたか?「パブリックサブネット」といっても、要は「外への門と地図があり、外で使える住所を持っている」というシンプルなルールの上に成り立っています。
まずは、コンソール画面やコードで「ルートテーブルに 0.0.0.0/0 があるか?」という視点を持つだけで、ネットワークトラブルの解決速度は劇的に上がります。
もし皆さんの環境で「繋がらない!」と悩んだときは、ぜひこの記事の「郵便配達」を思い出してみてくださいね。それでは、素敵なクラウドライフを!
コメント