Cloud egress: AWS NAT Gateway vs Internet Gateway triple-charge
Private-subnet Internet access via NAT Gateway can stack hourly + processing + Internet DT-out (the triple-charge pattern); an Internet Gateway avoids NAT fees but not necessarily Internet DT-out. Model stacks separately — Unknown until verified.
Updated
Private-subnet Internet access via NAT can stack hourly + processing + egress — the triple-charge pattern FinOps teams miss.
Path matrix: AWS NAT Gateway vs Internet Gateway cost layers (educational)
Public subnet → IGW → Internet — no NAT processing; harden security groups and still meter Internet DT-out.
Cross-AZ hairpin to a single NAT — adds cross-AZ data transfer on top of NAT stack.
Common traps
Egress-only compare — Comparing only Internet egress $/GB hides NAT hourly and processing. Stack the triple-charge before any Mode A Internet cell.
Multi-AZ hours without bytes — Placing a NAT “for HA” in every AZ can triple Gateway hours even when most GB still hairpin through one AZ. Hours multiply independently of processing GB.
Cliff after NAT ignored — Free-tier cliffs on Internet DT-out still apply after NAT processing. Processing does not erase the complimentary DT-out allotment cliff.
Endpoint magic zero — VPC endpoints / PrivateLink shift AWS-bound chatter off NAT; they do not magically zero every bill line (hours, ENI, private GB remain).
Hairpin called free HA — A single-AZ NAT with a cross-AZ hairpin from other zones is a fourth meter, not “free HA.”
IGW = free Internet — Public subnet + IGW avoids NAT fees but not Internet DT-out from instances/ELB. Threat-model constraints still apply — no architecture here is a guaranteed savings claim.
FinOps checklist
Export NAT Gateway bytes and hours by AZ for the last 30–90 days.
Separate AWS-bound API traffic (endpoint candidates) from true Internet destinations.
Model hourly×hours + processing×GB + egress×GB as three lines — use calculator Mode B.
Re-price after endpoint or IGW redesign; keep Unknown until rates are dated.
Document threat-model constraints so “move to public subnet” is not a blind cost-only change.
Third educational stack (multi-AZ NAT hours): same 2,000 GB Internet DT-out, but HA places a NAT in three AZs → ≈ 2,190 Gateway hours (3 × 730) even when most bytes still hairpin through one AZ. Re-run Mode B (?path=nat) with hours×3; keep processing/egress GB on the measured path; add cross-AZ GB if private subnets reach a remote NAT. Hours multiply independently of GB — that is the HA tax FinOps misses. Synthetic only — Unknown rates until dated; no savings guarantee.
Worked-estimate sensitivity (educational)
Hold the 2,000 GB Internet DT-out baseline and walk three NAT / IGW runs. Hourly, processing, and Internet $/GB cells stay Unknown until dated VPC / EC2 cites — literacy arithmetic, not a quote.
Run A — Single-AZ NAT triple-charge: 730 Gateway hours + 2,000 GB processing + 2,000 GB Internet DT-out. Open Mode B (?path=nat). Keep cross-AZ at zero when NAT is local to the private subnet AZ.
Run B — Multi-AZ NAT hours twin: same 2,000 GB processing/egress, but HA places NAT in three AZs → ≈ 2,190 Gateway hours (3 × 730). Re-run Mode B with hours×3; add cross-AZ GB if private subnets reach a remote NAT.
Run C — IGW / endpoint sibling: move AWS-bound chatter to VPC endpoints / PrivateLink and true Internet via public subnet + IGW (or keep residual NAT only for non-AWS destinations). Model endpoint hours/ENI separately; Internet DT-out still cliffs — sibling AWS free-tier cliff and VPC endpoints vs NAT.
Educationally: (1) NAT Gateway hourly charge, (2) per-GB NAT processing, (3) Internet data-transfer-out — plus optional cross-AZ if the NAT sits in another AZ. Always verify current SKUs.
Does an Internet Gateway remove all egress cost?
No. IGW avoids NAT hourly/processing, but Internet data-transfer-out from public instances or load balancers can still apply. Path matters.
Should I always add per-AZ NAT?
Only when AZ-isolated failure domains require it. Extra NAT hours multiply cost; measure bytes and availability needs first. Model multi-AZ hours in Mode B (?path=nat).
Trademarks: Amazon Web Services, AWS, Microsoft Azure, Google Cloud Platform, GCP, and Cloudflare are trademarks of their respective owners. PipeToll (Ameti One LLC) is not affiliated with, endorsed by, or sponsored by those companies. Educational comparisons may be outdated — verify current rates with each provider.