NAT Gateway 料金の削減 — 時間単価ではなくデータ処理料金が本体です
NAT Gateway は料金急増の原因 1 位としても、常時点検リストの構造的固定費としても扱いましたが、請求書を分解して削減の順序を整理する単独の記事がありませんでした。結論を先に書くと、NAT Gateway 料金の本体は時間あたりの料金ではなく GB あたりのデータ処理料金で、削減の第一手は NAT のチューニングではなく、トラフィックを NAT の外に逃がすことです。 S3・DynamoDB 用のゲートウェイエンドポイントは無料なのに、使っていないアカウントがいまだに多いのです。料金は us-east-1 基準です。
課金構造 — 3 層で重なります #
NAT Gateway を通るトラフィックには、最大 3 種類の料金が重なります。
| 層 | 料金 | 発生条件 |
|---|---|---|
| 時間あたり | 約 $0.045 (月およそ $33) | ゲートウェイが存在する限り、AZ ごとの個数分 |
| データ処理 | 約 $0.045/GB | 方向を問わず、通過するすべてのバイト |
| インターネット転送 | 約 $0.09/GB (アウトバウンド) | インターネットへ出るトラフィックに別途 |
見落とされやすいことが 2 つあります。第一に、ダウンロードにも処理料金がかかります。 インターネットから受け取るトラフィックに転送料金はありませんが、NAT の処理料金 $0.045/GB はそのまま課金されるため、プライベートサブネットでコンテナイメージ、パッケージ、データセットを大量に取得するだけで請求書が育ちます。第二に、アウトバウンドは処理+転送が重なって GB あたり約 $0.135 になり、パブリックサブネットのインスタンスが直接出る場合($0.09)の 1.5 倍です。同じバイトが、経由が 1 つ挟まるだけで 5 割高くなります。
時間あたりの料金は少額に見えますが、掛け算になります。可用性の原則どおり AZ ごとに 1 つずつ置くと、3AZ 構成ではトラフィックが 0 でも月およそ $100 が出ていきます。逆に NAT 1 つを複数の AZ で共有すると時間あたりの料金は節約できますが、AZ 間のデータ転送料金が付き、その AZ の障害が全体のアウトバウンド障害になるため、プロダクションは AZ ごとの配置が基本です。
削減の第 1 優先 — 無料の迂回ルートから開けます #
- ゲートウェイエンドポイント (S3、DynamoDB): 時間あたりも GB あたりも無料です。ルートテーブルにエンドポイントを追加するだけで、S3・DynamoDB 行きのトラフィックが NAT を迂回します。プライベートサブネットから S3 へバックアップ・ログ・データを移しているアカウントなら、この設定 1 つで処理料金の項目が丸ごと消えることも珍しくありません。設定しない理由がない、文字どおりのタダ飯です。
- インターフェイスエンドポイント (ECR、CloudWatch、SQS などほとんどの AWS サービス): AZ あたり時間あたり約 $0.01 + 処理 GB あたり約 $0.01 です。NAT の処理($0.045/GB)の 2 割ほどなので、トラフィックの多いサービスほど得が大きくなります。代表例が ECR です。頻繁にデプロイするクラスターのイメージプルは、インターフェイスエンドポイントに移すのが定石です。ただし時間あたりの固定費があるため、トラフィックがわずかなサービスまで全部エンドポイント化すると、かえって固定費だけが増えます。月のトラフィックが数十 GB を超えるサービスから移します。
削減の第 2 優先 — 構造を変える選択肢 #
- IPv6 + Egress-only インターネットゲートウェイ: IPv6 トラフィックのアウトバウンド専用ゲートウェイは、時間あたり・処理料金がありません。宛先のサービスが IPv6 に対応している必要があり、デュアルスタック構成も要るので、新規の VPC 設計で検討する項目です。
- NAT インスタンス: 小さな EC2 インスタンスで NAT を自前で動かせば、処理料金なしでインスタンス料金だけで済みます。帯域の上限、パッチ、障害対応がすべて自分持ちになるため、プロダクションでの推奨ではなく、開発 VPC の月 $33+α を節約する場面に合います。開発環境なら、NAT なしでパブリックサブネット構成にする選択肢も合わせて検討します。
- Regional NAT Gateway: 2025 年末に追加されたリージョン単位のモードで、AZ ごとにゲートウェイの個数を管理していた負担を減らしてくれます。新規設計なら標準モードと料金構造を比べる価値があり、高スループットのワークロード向けの課金オプションも合わせて確認します。
診断 — どのトラフィックがどれだけ通っているかから #
削減の対象を決めるには、NAT を通るトラフィックの内訳が必要です。
- Cost Explorer: Usage Type の
NatGateway-Bytesで処理量の推移を見ます。急増の診断手順は専用記事の手順そのままです。 - VPC フローログ: NAT の ENI を基準に宛先別のバイトを集計すると、上位のトラフィックの主犯が出てきます。たいてい S3、ECR、外部 API、ログ収集の順に並び、前の 2 つはエンドポイントですぐに外せます。
- 繰り返しの確認: エンドポイントを追加した後、
NatGateway-Bytesが実際に下がったかを確認します。ルートテーブルの漏れで一部のサブネットが相変わらず NAT を通っている、というのがよくある見落としです。
削減の手順 #
- ゲートウェイエンドポイントをまず掛けます: S3・DynamoDB 行きのトラフィックがあるすべての VPC で無条件です。無料なので計算は要りません。
- フローログで上位の主犯を見つけます: 残ったトラフィックの宛先を集計し、月に数十 GB 以上の AWS サービスをインターフェイスエンドポイントに移します。
- 外部 API のトラフィックは総額で判断します: インターネットに出るしかないトラフィックは NAT に残ります。この部分が大きければ、アーキテクチャ側(キャッシュ、バッチ転送、リージョン内の代替サービス)を検討します。
- 開発環境は NAT 自体をなくします: NAT インスタンスかパブリックサブネット構成で、月の固定費を消します。
- マルチ AZ 配置を見直します: プロダクションは AZ ごとの NAT が基本ですが、トラフィックが集中する AZ とゲートウェイの配置がずれて AZ 間の料金が漏れていないかを見ます。
まとめ #
- NAT Gateway 料金の本体は処理料金($0.045/GB)です。ダウンロードにもかかり、アウトバウンドは転送料金と重なって直結の 1.5 倍になります。
- S3・DynamoDB のゲートウェイエンドポイントは無料です。設定 1 回で項目ごと消える、最も利回りの高い削減です。
- トラフィックの多い AWS サービス(ECR など)はインターフェイスエンドポイント($0.01/GB)に移します。ただし時間あたりの固定費があるため、少量トラフィックまで移すと逆効果です。
- 削減は測定から始まります。
NatGateway-Bytesとフローログで主犯を見つけ、対処後に実際に下がったかを確認します。 - 開発 VPC の NAT はなくすことまで検討し、プロダクションは AZ ごとの配置を保ちつつ、配置とトラフィックの整合を見ます。