はじめに
AWSでシステムを構築していると、「複数のVPCを接続したい」という場面に遭遇することがあります。そんなときに活躍するのが VPCペアリング です。
この記事では、AWS初心者の方でも理解できるよう、VPCペアリングの仕組みと必要性をわかりやすく解説します。
対象読者
- AWSを学び始めた方
- VPCの基本は知っているが、ペアリングはよくわからない方
- ネットワーク構成を検討中のエンジニア
そもそもVPCとは?
VPCペアリングを理解する前に、まずVPCについておさらいしましょう。
VPCは「自分専用のネットワーク空間」
VPC(Virtual Private Cloud)は、AWS上に作成できる 仮想的なプライベートネットワーク です。
イメージとしては、巨大なデータセンター(AWS)の中に、自分専用の区画を借りるようなものです。この区画内では、自由にサーバー(EC2)を配置したり、ネットワークのルールを設定したりできます。
なぜVPCを分けるのか
「1つのVPCにすべてのリソースを入れればいいのでは?」と思うかもしれません。しかし、実際の運用では以下の理由からVPCを分けることが多いです。
| 分離の目的 | 具体例 |
|---|---|
| 環境分離 | 開発環境、ステージング環境、本番環境を分ける |
| セキュリティ | 機密性の高いシステムを隔離する |
| 組織分離 | 部署やプロジェクトごとにVPCを分ける |
| アカウント分離 | 複数のAWSアカウントでリソースを管理する |
VPCを分けることで、万が一のセキュリティインシデントが発生しても、影響範囲を限定できます。これは「ブラストラディウス(爆発半径)を小さくする」という考え方です。
VPC同士をつなぎたい場面とは
VPCを分離するのは良いのですが、分離したVPC同士で通信が必要になる場面も出てきます。
身近な例で理解する
VPCペアリングを オフィスビルのフロア間通信 にたとえてみましょう。
- 各フロア(VPC)は、普段は独立して業務を行っています
- しかし、プロジェクトによっては他のフロアと連携が必要です
- 外部の電話回線(インターネット)を使わず、内線電話(VPCペアリング) で直接つながれば、安全かつ高速に通信できます
具体的なユースケース
1. 開発環境から本番DBへのアクセス
開発チームが本番環境のデータを参照用に使いたい場合があります。VPCを分離しつつ、必要な通信だけを許可できます。
2. 別チーム・別プロジェクトとの連携
マイクロサービスアーキテクチャでは、各サービスが別々のVPCに配置されていることがあります。サービス間の通信にVPCペアリングが活用されます。
3. 異なるAWSアカウント間の通信
企業では、部署ごとに異なるAWSアカウントを使用することがあります。経理部門のシステムと営業部門のシステムを連携する場合などに利用されます。
VPCペアリングとは
基本的な定義
VPCペアリング は、2つのVPC間にプライベートな接続を確立する機能です。
ペアリングされたVPC間では、プライベートIPアドレスを使って直接通信できます。まるで同じネットワーク内にいるかのように、シームレスに接続できるのが特徴です。
インターネットを経由しない安全な接続
VPCペアリングの大きな特徴は、通信がAWSのバックボーンネットワーク内で完結する ことです。
| 接続方法 | 経路 | セキュリティ |
|---|---|---|
| インターネット経由 | パブリックインターネットを通過 | 暗号化が必要、レイテンシが不安定 |
| VPCペアリング | AWSバックボーン内で完結 | プライベート通信、低レイテンシ |
VPCペアリングの通信は、パブリックインターネットを一切経由しません。そのため、追加の暗号化なしでも安全に通信でき、レイテンシも安定しています。
VPCペアリングの通信フロー
VPCペアリングがどのように動作するか、図で見てみましょう。
- VPC AのEC2がVPC BのIPアドレス宛にパケットを送信
- VPC Aのルートテーブルが、宛先をペアリング接続に転送
- ペアリング接続を通じて、VPC Bにパケットが到達
- VPC Bのルートテーブルが、宛先のEC2にパケットを配送
VPCペアリングの特徴
できること
1. 同一アカウント内での接続
最も基本的なパターンです。1つのAWSアカウント内にある複数のVPCを接続できます。
2. 異なるアカウント間での接続(クロスアカウント)
別々のAWSアカウントに存在するVPC同士も接続できます。接続を確立するには、相手アカウントからのリクエスト承認が必要です。
3. 異なるリージョン間での接続(インターリージョン)
東京リージョンのVPCと、バージニアリージョンのVPCを接続することも可能です。グローバルに展開するシステムで活用されます。
| 接続パターン | 可否 | 備考 |
|---|---|---|
| 同一アカウント・同一リージョン | ⭕ | 最もシンプル |
| 同一アカウント・異なるリージョン | ⭕ | インターリージョンペアリング |
| 異なるアカウント・同一リージョン | ⭕ | リクエスト承認が必要 |
| 異なるアカウント・異なるリージョン | ⭕ | 両方の条件を満たす |
できないこと・注意点
1. 非推移的ルーティング(最重要!)
VPCペアリングで最も重要な制約が「非推移的(Non-transitive)」という特性です。
- VPC AとVPC Bがペアリングされている
- VPC BとVPC Cがペアリングされている
- しかし、VPC AからVPC Cには通信できない
VPC AとVPC Cを通信させるには、直接ペアリングを設定する必要があります。
VPCの数が増えると、必要なペアリング接続数が急増します。3つのVPCを全て接続するには3本、5つなら10本、10個なら45本の接続が必要です。これをフルメッシュ構成と呼びます。
2. CIDRブロックの重複禁止
ペアリングするVPCのIPアドレス範囲(CIDRブロック)が重複していると、接続できません。
❌ 接続不可の例
- VPC A: 10.0.0.0/16
- VPC B: 10.0.0.0/16 ← 同じ範囲なのでNG
⭕ 接続可能な例
- VPC A: 10.0.0.0/16
- VPC B: 172.16.0.0/16 ← 異なる範囲なのでOK
VPC設計時には、将来のペアリングを見越して、重複しないCIDRブロックを計画的に割り当てることが重要です。後から変更するのは困難です。
他の接続方法との違い
VPC同士を接続する方法は、VPCペアリングだけではありません。代表的なサービスとして Transit Gateway があります。
Transit Gatewayとの比較
| 項目 | VPCペアリング | Transit Gateway |
|---|---|---|
| 接続構成 | 1対1(ポイントツーポイント) | ハブ&スポーク(中央集約型) |
| 推移的ルーティング | ❌ できない | ⭕ できる |
| 適したVPC数 | 少数(2〜3個程度) | 多数(10個以上) |
| 管理の複雑さ | VPC数が増えると複雑 | 中央管理でシンプル |
| 接続料金 | 無料(データ転送料のみ) | 接続料金 + データ処理料金 |
| レイテンシ | 低い(直接接続) | やや高い(ハブを経由) |
どんなときにVPCペアリングを選ぶ?
VPCペアリングが適しているケース
- 接続するVPCが2〜3個程度
- 特定のVPC間だけを接続したい
- コストを抑えたい
- 低レイテンシが重要
Transit Gatewayが適しているケース
- 多数のVPCを接続する
- オンプレミスとの接続も必要
- 中央集権的なネットワーク管理をしたい
- 将来的な拡張性を重視する
小規模なシステムやPoC(概念実証)では、まずVPCペアリングから始めて、規模が大きくなったらTransit Gatewayへ移行するのも一般的なアプローチです。
まとめ
この記事では、AWS VPCペアリングについて、初心者の方にもわかりやすく解説しました。
要点の振り返り
- VPC は、AWS上の自分専用のネットワーク空間
- VPCペアリング は、2つのVPC間をプライベートに接続する機能
- 通信はAWSバックボーン内で完結し、インターネットを経由しない
- 同一/異なるアカウント、同一/異なるリージョン間での接続が可能
- 非推移的 という特性があり、A→B→Cの中継はできない
- CIDRブロックが重複するVPCは接続できない
- VPC数が多い場合は Transit Gateway も検討する
次のステップ
- AWS公式ドキュメントでVPCペアリングの設定手順を確認する
- 実際にテスト環境でVPCペアリングを試してみる
- Transit Gatewayについても学んでみる
参考リンク