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 ゲートウェイの理解を深めるには関連書籍が参考になる。

関連用語