AWS の VPC エンドポイント: Gateway 型と Interface 型は「コストを下げたいか/閉じた経路で使いたいか」で選ぶ
S3 と DynamoDB だけは無料の Gateway 型が使え、それ以外のサービスは有料の Interface 型(PrivateLink)になる。設計で迷ったら、目的がコスト削減なのかプライベート通信なのかで決める。
どんなときに使う?
- プライベートサブネットのサーバーや Lambda から S3 / DynamoDB を大量に読み書きしていて、NAT Gateway の処理料金がかさんでいるとき
- 機密データを扱うので、AWS のサービスへの通信をインターネット経由にしたくないとき
- AWS 認定試験の設計問題(どちらのエンドポイントを選ぶか)
2 つの違い
| Gateway 型 | Interface 型 | |
|---|---|---|
| 対象サービス | S3 と DynamoDB のみ | それ以外の多くの AWS サービス(S3 も可)、他社の PrivateLink サービス |
| 仕組み | ルートテーブルに宛先のプレフィックスリストを追加して経路を曲げる | サブネットに ENI(プライベート IP)を置き、DNS でそこへ向ける |
| 料金 | 無料 | 時間料金 + データ処理料金がかかる |
選び方
- コストを下げたい → S3 / DynamoDB なら Gateway 型。NAT Gateway を通っていた S3 通信を Gateway 型に逃がすだけで、NAT のデータ処理料金が減る
- プライベートな経路で使いたい、または S3 / DynamoDB 以外のサービス → Interface 型
- オンプレや別リージョンから Direct Connect / VPN 経由でつなぐ場合は、VPC 内のルートテーブルに依存しない Interface 型が必要になる(Gateway 型は VPC の外からは使えない)
やり方(Gateway 型で S3 の NAT 代を減らす)
- VPC コンソールの「エンドポイント」で、サービスに
com.amazonaws.<リージョン>.s3の Gateway タイプを選ぶ - プライベートサブネットが使っているルートテーブルを関連付ける
- 必要ならエンドポイントポリシーで、アクセスできるバケットを絞る
注意点
- Gateway 型は同じリージョンのサービスだけが対象
- Interface 型は AZ ごとに ENI を置くので、冗長化のために複数 AZ に作るとその分料金がかかる
- 料金や対象サービスは変わることがあるので、AWS の公式ドキュメントで確認すること
関連
- AWS 設計の定石メモ: 人は Identity Center・システムは IAM ロール/VPC エンドポイント/Route 53 Resolver
- AWS Lambda Web Functions のネットワーク: VPC へは Network Connector、外へ出るには NAT、入口は閉じられない