Instance trong private subnet không có route trực tiếp ra internet. Để nó gọi ra ngoài (tải update, gọi API) mà không nhận kết nối vào, traffic phải đi qua một NAT đặt ở public subnet. Có hai cách:
NAT Gateway — dịch vụ managed của AWS:
- AWS lo scaling (tự co giãn tới hàng chục Gbps), tính sẵn sàng và vá lỗi.
- Có độ dự phòng trong một AZ, nhưng gắn với một AZ duy nhất → muốn chịu lỗi thì tạo NAT Gateway ở mỗi AZ.
- Tính phí theo giờ + theo GB xử lý. Không thể dùng làm bastion, không gắn Security Group.
NAT instance — một EC2 do bạn tự vận hành, bật IP forwarding:
- Bạn tự chịu patch, tự scale, tự lo HA (là single point of failure nếu chỉ có một).
- Rẻ hơn ở lưu lượng nhỏ và linh hoạt hơn: gắn được Security Group, kiêm bastion, tùy biến port forwarding.
Chốt: production gần như luôn chọn NAT Gateway vì đỡ vận hành và bền hơn; NAT instance chỉ hợp cho môi trường dev/lab, chi phí cực thấp, hoặc khi cần một tính năng đặc thù NAT Gateway không có.