공식문서를 참고한는 것이 제일 좋다!
resource "aws_security_group" "nat_instance" {
name = "nat_instance"
description = "Allow private subnet outbound traffic"
vpc_id = aws_vpc.main.id
ingress {
description = "nat"
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = [aws_subnet.private_subnet_a.cidr_block]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "nat-instance"
}
}
ingress {...}: 인바운드 룰을 위한 블록egress {...}: 아웃바운드 룰을 위한 블록protocol: 어떤 프로토콜을 사용할지를 결정한다. → -1은 모든 프로토콜을 의미한다.resource "aws_instance" "nat_instance" {
ami = "ami-00295862c013bede0"
instance_type = "t2.micro"
key_name = "bastion"
associate_public_ip_address = true
source_dest_check = false
subnet_id = aws_subnet.public_subnet_a.id
vpc_security_group_ids = [
aws_security_group.ssh.id,
aws_security_group.nat_instance.id,
]
tags = {
Name = "prod-nat-instance"
}
}
key_name: <key_name>.pem이 등록된다.
source_dest_check: nat 인스턴스를 위한 설정으로 트래픽의 추적을 하지 않겠다는 설정
vpc_security_group_ids vs security_group_ids:
특정 vpc에 안에 설정을 하기위해선 vpc_를 설정을 해야한다. security_groups을 설정하게될 경우, 기본 설정된 VPC에 할당이 된다.
→ security_group_ids를 설정할 경우, 매번 plan시에 SG가 업데이트되면서 새롭게 EC2가 생성된다.
→ 특성 VPC에 만들경우, vpc_security_group_ids를 설정한다.