はじめに
AWS環境のパブリックサブネットとプライベートサブネットの違いについて記載していきます。
きっかけ
以前参画していたプロジェクトでパブリックサブネットとプライベートサブネットが正しく使い分けられていなかったので、これの違いについて備忘録としてまとめてみようと思いました。
該当のプロジェクトでは「public-subnet」「private-subnet」と命名はされていましたが、どちらもパブリックサブネットとして作成されていました。
ではどうしてこのようなことが起こってしまうのでしょうか。
サブネットとは
サブネットとはVPC内のネットワークを論理的に分けたものです。
EC2、RDSなどのリソースを作成するのに主に使用されます。
違い
そもそもパブリックサブネットとプライベートサブネットはなにが違うのか?
| パブリックサブネット | プライベートサブネット | |
|---|---|---|
| インターネットからの通信 | 受け入れる | 受け入れない |
| 通信時の考慮事項 | 少ない | 多い |
| セキュリティリスク | 高い | 低い |
といった感じです。
インターネットからの通信を受け入れる=インターネットゲートウェイに接続されているサブネットと理解していただければと思います。
※プライベートサブネットもインターネットへ向かう通信は設定すれば可能です。
ざっくりのイメージになります。
この違いによって考慮すべきこと
例えばEC2を起動した場合に、パブリックサブネットだったらどこからでもアクセスが可能でCloudWatchへのログの出力やSSMからのアクセスも考慮する必要がありません。
これがプライベートになると通信が正しく届かなくなるものもあります。
この場合はVPCエンドポイントを使用する必要がありますが、話題が逸れるのでこれはまた別の機会に。
実践
デフォルトVPCを使用してパブリックサブネットとプライベートサブネットの設定の違いを見てみましょう。
※今回は料金がかかるものではありませんが、設定ミスによるコストや通信の不具合については自己責任でお願いいたします。
デフォルトVPCを確認
デフォルトVPCを選択しリソースマップのタグを選択すると下記のように表示されます。

全てのルートがインターネットゲートウェイに接続されていてパブリックサブネットであることがわかります。
ルートテーブルの作成
名前とVPCを選択すればルートテーブルは簡単に作成できます。


サブネットの関連付け
ルートテーブルとサブネットの関連付けをしていきます。
今回は1つだけ関連付けをして他との差分を見てみます。
実際に環境を構築する際はNameタグで名前を付けているとわかりやすいですね。

リソースマップの再確認
変更したサブネットが存在するVPCのリソースマップを再度確認してみましょう。

us-west-2aのサブネットのアイコンが四角く青色に変わったのがわかるかと思います。
ルートテーブルとの関連付けも変わりました。
これがプライベートサブネットになっています。
※UIは変更される可能性があるのでご注意ください。
まとめ
結論としてパブリックサブネットとプライベートサブネットの違いはインターネットゲートウェイに接続されているか、そのための設定としてルートテーブルが鍵になることがわかりました。
2026年1月現在ではパブリックサブネットとプライベートサブネットの表示が色と形で異なるのでわかりやすいですね。
ちょっとした備忘録ですが、誰かのお役に立つことがありましたら幸いです。