1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS CDK】VPCとPrivate Isolated Subnetを構築する(Part 1:構成設計)

1
Last updated at Posted at 2026-10-02

はじめに

AWSの勉強を兼ねて、WebアプリケーションをAWS上に構築する備忘録です。

今回はインフラ構築の最初のステップとして、AWS Cloud Development Kit(AWS CDK)を使って以下の構成を作成しました。

  • VPC
  • Private Isolated Subnet × 2
  • 2つのAvailability Zoneを使用
  • NAT Gatewayなし

VPCとは

まず、VPCの概要についてです。

Virtual Private Cloud(VPC)は、AWS上に作成できる仮想ネットワークです。

AWS上でEC2やRelational Database Service(RDS)などのリソースを利用する際に、どのネットワークに配置し、どのような通信を許可するかを設計するための土台となります。

VPCを作成する際には、VPC内で使用するIPアドレスの範囲をClassless Inter-Domain Routing(CIDR)形式で指定します。

今回作成するVPCでは、以下のCIDRを設定しました。

10.0.0.0/16

VPCの中には、さらにネットワークを分割したSubnet(サブネット)を作成できます。

VPCが「AWS上に作る大きなネットワークの枠」だとすると、Subnetは「VPCの中を用途ごとに分割したネットワーク」と考えるのが分かりやすいです。

Default VPCとの違い

AWSでは、各リージョンにDefault VPCが用意されています。ただし、Default VPCは削除することもできるため、必ず存在するとは限りません。

今回はこのDefault VPCを変更せず、アプリケーション専用のVPCを新しく作成します。

AWSアカウント
└─ 東京リージョン(ap-northeast-1)
   │
   ├─ Default VPC
   │    172.31.0.0/16
   │
   │    ├─ Public Subnet
   │    ├─ Public Subnet
   │    └─ Public Subnet
   │
   │    ※ AWSによって用意された既存VPC
   │
   └─ 今回作成したVPC
        sesame-admin-vpc
        10.0.0.0/16
        │
        ├─ Availability Zone 1
        │    └─ Private Isolated Subnet
        │
        └─ Availability Zone 2
             └─ Private Isolated Subnet

             ↓
        RDSなどを配置することを想定

Default VPCは、AWSをすぐに利用開始できるよう、あらかじめ用意されたVPCです。

一方、今回作成するsesame-admin-vpcは、このアプリケーション用にネットワーク構成を自分で定義したVPCです。

今回の構成では、Default VPCはそのまま残し、別のCIDRで新しいVPCを作成しています。

Default VPC      : 172.31.0.0/16
sesame-admin-vpc : 10.0.0.0/16

Default VPCを直接変更することなく、アプリケーション専用のネットワーク環境を構築できます。

また、それぞれのVPCは独立した仮想ネットワークとして分離されているため、基本的にVPC同士が直接通信することはありません。

そのため、今回新しくVPCを作成しても、既存のDefault VPCとは分離されたネットワークとして利用できます。

Availability Zone(AZ)とは

次に、今回2つ使用するAvailability Zone(AZ)についてです。

AZは、AWSの各リージョン内に存在する、1つ以上の独立したデータセンターで構成された区画です。

今回使用している東京リージョン(ap-northeast-1)にも、複数のAZが存在します。

東京リージョン(ap-northeast-1)
│
├─ AZ
│   └─ Subnet
│
├─ AZ
│   └─ Subnet
│
└─ AZ
    └─ Subnet

AZはそれぞれ物理的に分離されています。

そのため、複数のAZを利用することで、1つのAZで障害が発生した場合でも別のAZを利用できるような、可用性を考慮した構成を取ることができます。

今回の構成では、2つのAZを利用し、それぞれにPrivate Isolated Subnetを1つずつ作成しています。

VPC 10.0.0.0/16
│
├─ AZ 1
│   └─ Private Isolated Subnet
│
└─ AZ 2
    └─ Private Isolated Subnet

Private Isolated Subnetとは

Subnetは、VPCのIPアドレス範囲をさらに分割したネットワークです。

AWS CDKでは、用途に応じてPublic Subnet、Private Subnet、Private Isolated Subnetなどを指定できます。

今回使用するPrivate Isolated Subnetは、Internet GatewayやNAT Gatewayを経由してインターネットへアクセスするためのルートを持たないSubnetです。

大まかな違いは以下のようになります。

種類 インターネットへの通信 主な用途
Public Subnet Internet Gateway経由で可能 ALBなど、外部との通信が必要なリソース
Private Subnet NAT Gatewayなどを経由して可能 アプリケーションサーバーなど
Private Isolated Subnet インターネットへのルートなし RDSなど、インターネットへの接続を必要としないリソース

今回のWebアプリケーションでは、後ほどRDSを構築し、データベースエンジンとしてPostgreSQLを利用する予定です。

データベースをインターネットへ直接公開する必要はないため、RDSを配置するSubnetとしてPrivate Isolated Subnetを利用する構成としました。

NAT Gatewayとは

ここまでの説明でNAT Gatewayという言葉が出てきましたが、NAT GatewayはPrivate Subnet内のリソースからインターネットへ通信するために利用できるAWSのサービスです。

例えば、Private Subnetに配置したEC2からOSのアップデートやパッケージのダウンロードなどを行う場合、インターネットへの通信が必要になることがあります。

そのような場合に、NAT Gatewayを経由してインターネットへアクセスする構成を取ることができます。

VPC
│
├─ Public Subnet
│   └─ NAT Gateway
│        │
│        ↓
│   Internet Gateway
│        │
│        ↓
│     Internet
│
└─ Private Subnet
    └─ EC2
         │
         └────→ NAT Gateway

イメージとしては、NAT GatewayがPrivate Subnetからインターネットへ通信するための「出口」のような役割を持っています。

ただし、インターネット側からNAT Gatewayを経由してPrivate Subnet内のリソースへ直接接続するための仕組みではありません。

今回使用しているPrivate Isolated Subnetは、NAT Gatewayなどを経由したインターネットへのルートを持たないSubnetです。

今回はRDSを配置することを想定しており、インターネットへ直接通信するための経路を必要としないため、NAT Gatewayを作成していません。

今回の構成

VPC
│
├─ AZ 1
│   └─ Private Isolated Subnet
│        └─ RDS用
│
└─ AZ 2
    └─ Private Isolated Subnet
         └─ RDS用

NAT Gateway:なし
インターネットへのルート:なし

また、NAT Gatewayは作成して稼働させると料金が発生します。

今回はインターネットへの通信経路を必要としない構成のため、不要なNAT Gatewayを作成しないことで構成をシンプルにし、コストも抑えています。

なぜPrivate Isolated Subnetを2つ作るのか

今回Private Isolated Subnetを2つ作成しているのは、PostgreSQLを2台構築するためではありません。

RDSで使用するDB Subnet Groupでは、複数のAZにまたがるSubnetを指定する必要があります。

そのため、今回は2つのAZにそれぞれPrivate Isolated Subnetを作成しています。

VPC
│
├─ AZ 1
│   └─ Private Isolated Subnet A ─┐
│                                 │
└─ AZ 2                           ├─ DB Subnet Group
    └─ Private Isolated Subnet B ─┘
                                      │
                                      └─ RDS

つまり、今回の構成は以下のような関係になります。

Private Isolated Subnet × 2
           ↓
異なる2つのAZに配置
           ↓
DB Subnet Groupとして利用
           ↓
RDSを配置

最初、自分もなぜSubnetが2つあるのか分からなかったのですが、Subnetが2つあるからといって、RDSが必ず2台作成されるわけではありません。

今回は、後ほどRDSを構築することを想定して、あらかじめ2つのAZにPrivate Isolated Subnetを用意しています。

以上が、今回構築するVPCやSubnetなどの概要になります。

今回は、VPC、Availability Zone、Private Isolated Subnet、NAT Gatewayについて、それぞれの役割と今回この構成にした理由を整理しました。

パート2では、AWS CDKを使って実際にVPCとPrivate Isolated Subnetを構築していきます。


関連記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?