1. 結論
CloudFrontのVPCオリジンは、オリジン側のVPCにインターネットゲートウェイ(IGW)が必須となる点に注意する必要がある。
AWS公式ドキュメントより:
インターネットゲートウェイ – VPC オリジンリソースを持つ VPC にインターネットゲートウェイを追加する必要があります。インターネットゲートウェイは、VPC がインターネットからのトラフィックを受信できることを示すために必要です。
参考: CloudFront VPC オリジンの使用 - Amazon CloudFront
つまり、Transit Gateway経由で別VPCのIGWを共有する構成では CloudFront VPCオリジンは利用できない ということになる。
2. 背景
2.1. 複数VPC構成で、アウトバウンド通信をTransit Gatewayを用いて集約したい
複数VPCを運用する環境では、各VPCに個別にNATGW/IGWを設置するのではなく、Transit Gateway(TGW)経由でアウトバウンド通信を1つのVPCに集約する設計方法がある。
メリット:
- 時間課金のNATGWを集約することでコスト削減
- アウトバウンド経路の監視ポイントを一元化
コスト観点: IGWとNATGWの違い
NATGW集約の効果を理解する上で、IGWとNATGWの課金体系の違いを押さえておきたい。
| 項目 | IGW | NATGW |
|---|---|---|
| 時間課金 | なし(無料) | あり (東京リージョン 約 $0.045/時間 ≒ 月$32〜/台) |
| データ処理料 | なし | あり (約 $0.062/GB) |
| データ転送料(outbound) | あり | あり |
- IGWはゲートウェイ自体の料金は無料 — VPCにいくつアタッチしても固定費は増えない (流れるデータ転送料のみ)
- NATGWは時間課金 + データ処理料 — トラフィックが少なくても1台あたり月 $32 程度が発生し、AZ冗長で各VPCに2台ずつ置くと一気に効いてくる
つまりNATGWの台数を減らすことがそのまま固定費削減になるため、TGWでアウトバウンドを集約する設計はコスト面でメリットがある。
集約前と集約後の比較
2.2. CloudFrontのオリジンをVPCのPrivate Subnetに配置してセキュアにしたい
かつてはCloudFrontのオリジンは、Public ELB等をPublic Subnetに配置する必要があった。
そのため、オリジン自体がPublicからアクセスされないように以下の様な工夫が必要だった。
- CloudFront側でカスタムヘッダ(api key)を付加し、オリジン側(ALB等)で検証する
- セキュリティグループでCloudFrontのManaged Prefix List(IPレンジ)に絞る
2024年11月にリリースされた CloudFront VPCオリジン によって、CloudFrontのオリジンをPrivate Subnetに直接配置できるようになり、上記のような迂回的な対策が不要になった。
Public ELBオリジンとVPC Private ELBオリジンの比較
3. 課題: 2つの設計が両立しない
「TGWでアウトバウンド集約」 + 「CloudFront VPCオリジン」 を組み合わせようとしたところ、Terraform applyで以下のエラーが発生した。
Error: creating CloudFront VPC Origin
InvalidArgument: does not have an internet gateway in its VPC
冒頭の通り、CloudFront VPCオリジンを置くVPCには IGWが直接アタッチされている必要がある。
TGW経由で別VPCのIGWを共有する構成では要件を満たせない。
4. 設計変更対応内容
4.1. 方針
- CloudFront VPCオリジンを配置するVPCに、IGWをアタッチする
- ただし、当該VPCのアウトバウンド経路は引き続きTGW経由(集約VPC)を使う
- IGWはインバウンドトラフィック(CloudFront → ALB)専用として機能させる
- ルートテーブルで明示的に経路を分ける:
-
0.0.0.0/0→ TGW (アウトバウンド) - インバウンドはIGW経由で受信(ルート追記不要)
-
4.2. 構成図
- IGWはゲートウェイ自体の時間課金がないため、各サービスVPCにIGWを追加してもコスト的なインパクトは無い。また、NATGW集約によるコストメリットはそのまま維持できる。
5. まとめ
- CloudFront VPCオリジンは、オリジン配置VPCに直接IGWが必要
- TGW経由で別VPCのIGWを共有する構成は不可
- 「TGWでアウトバウンド集約」と「CloudFront VPCオリジン」を両立させるには、アウトバウンドはTGW、インバウンドはIGWとルートを使い分ける必要がある。


