Đặt NAT Gateway để ứng dụng trong private subnet giao tiếp ra ngoài sẽ phát sinh phí theo giờ và phí xử lý dữ liệu. Với môi trường ít traffic, phí cố định theo thời gian chạy thường lớn hơn cả phí theo dung lượng.
Lựa chọn fck-nat
fck-nat là AMI dành cho NAT instance, chạy được trên các EC2 Graviton cỡ nhỏ. Với môi trường quy mô nhỏ, có thể giảm đáng kể phí cố định so với NAT Gateway.
Giữ IP nguồn cố định khi vận hành
Nếu API của đối tác giới hạn kết nối theo địa chỉ IP thì không thể đổi IP nguồn khi thay NAT. Giải pháp là cố định network interface có gắn Elastic IP, và khi instance bị thay thế thì gắn lại đúng interface đó.
module "fck_nat" {
source = "RaJiska/fck-nat/aws"
name = "app-nat"
vpc_id = aws_vpc.main.id
subnet_id = aws_subnet.public_a.id
instance_type = "t4g.nano"
ha_mode = true # tự khôi phục bằng auto scaling group
eip_allocation_ids = [aws_eip.nat.allocation_id]
update_route_tables = true
route_tables_ids = { private = aws_route_table.private.id }
}Cần kiểm tra trước khi áp dụng
- Vì chỉ có một instance, khi gặp sự cố kết nối ra ngoài sẽ gián đoạn vài phút cho đến khi tự khôi phục
- Với môi trường xử lý nhiều dữ liệu, kiểm tra băng thông mạng của instance có thành giới hạn không
- Phải tự lên kế hoạch cập nhật OS và các gói phần mềm
Cũng có thể dùng kết hợp theo môi trường: giữ NAT Gateway cho các kết nối quan trọng ở production, thay trước ở môi trường phát triển và kiểm thử.