NAT ゲートウェイ
プライベートサブネットのリソースがインターネットにアクセスするためのアドレス変換ゲートウェイ
AWSネットワーク
NAT ゲートウェイとは
NAT ゲートウェイ (Network Address Translation Gateway) は、VPC のプライベートサブネットに配置されたリソース (Lambda, EC2) がインターネットにアクセスする際に、プライベート IP をパブリック IP に変換するゲートウェイである。アウトバウンド通信のみを許可し、インバウンド通信はブロックする。
なぜ必要か
プライベートサブネットのリソースはパブリック IP を持たないため、直接インターネットにアクセスできない。外部 API の呼び出し、npm パッケージのダウンロード、外部サービスとの通信に NAT ゲートウェイが必要だ。
[Lambda (プライベートサブネット)]
→ [NAT ゲートウェイ (パブリックサブネット)]
→ [インターネットゲートウェイ]
→ [インターネット]
コスト
NAT ゲートウェイは AWS で最もコストが見落とされやすいサービスの 1 つだ。
| 項目 | 料金 (東京リージョン) |
|---|---|
| 時間料金 | $0.062/時間 (~$45/月) |
| データ処理 | $0.062/GB |
AZ ごとに NAT ゲートウェイが必要なため、2 AZ 構成で月 $90 + データ処理料金がかかる。
VPC エンドポイントでコスト削減
S3 や DynamoDB へのアクセスは、NAT ゲートウェイではなく VPC エンドポイント (ゲートウェイ型、無料) を使う。
❌ Lambda → NAT GW → インターネット → S3 (有料)
✅ Lambda → VPC エンドポイント → S3 (無料)
| アクセス先 | 推奨方式 | コスト |
|---|---|---|
| S3 | ゲートウェイエンドポイント | 無料 |
| DynamoDB | ゲートウェイエンドポイント | 無料 |
| SQS, SNS | インターフェースエンドポイント | $0.014/時間 |
| 外部 API | NAT ゲートウェイ | $0.062/時間 |
Lambda を VPC に入れるべきか
Lambda を VPC に入れると NAT ゲートウェイのコストが発生する。VPC に入れる必要があるのは:
- RDS/ElastiCache にアクセスする場合
- VPC 内の他のリソースにアクセスする場合
外部 API や AWS サービスだけにアクセスする Lambda は、VPC に入れない方がシンプルでコストが低い。
NAT ゲートウェイの理解を深めるには関連書籍が参考になる。