인터넷 게이트웨이와 라우팅 테이블
resource "aws_subnet" "sub_1" {
vpc_id = aws_vpc.vpc_1.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}a"
tags = {
Name = "${var.prefix}-sub-1"
}
}
resource "aws_internet_gateway" "igw_1" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-1"
}
}
resource "aws_route_table" "rt_1" {
vpc_id = aws_vpc.vpc_1.id
route {
cidr_block = "0.0.0.0/0" # 목적지가 어디든 간에 인터넷 게이트웨이로 보낸다.
gateway_id = aws_internet_gateway.igw_1.id
}
tags = {
Name = "${var.prefix}-rt-1"
}
}
- cidr_block => 범위가 클수록 우선순위가 낮다.(더 범위가 좁은(구체적인) 라우팅 룰이 우선순위가 더 높다.)
===> 즉, 내부 네트워크 통신에 우선권이 있다.
- 서브넷은 여러 라우팅 테이블과 연결될 수 있다.
- 위의 코드만으로는, 서브넷은 직접 만든 라우팅 테이블이 아닌 기본 라우팅 테이블과 연결된다. => 명시적으로 연결시켜줘야 한다.
서브넷과 라우팅 테이블의 연결
기본 라우팅 테이블이 아닌 테이블과 서브넷을 연결시키는 방법은 두 가지가 있다.
1. 서브넷과 연결되어 있는 기본 라우팅 테이블을 없애서 원하는 라우팅 테이블과 연결되도록 한다.
2. 서브넷과 원하는 라우팅 테이블을 명시적으로 연결시켜준다.
resource "aws_route_table_association" "association_1" {
subnet_id = aws_subnet.sub_1.id
route_table_id = aws_route_table.rt_1.id
}
리소스 개수 늘리기
- id와 Name 태그는 유니크해야 한다.
- 리소스의 스펙이 같다면 복사/붙여넣기를 하고 id와 Name 태그를 변경해준다.
resource "aws_internet_gateway" "igw_1" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-1"
}
}
resource "aws_internet_gateway" "igw_2" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-2"
}
}
보안 그룹
- 기본적으로 생성된 네트워크 ACL 은 모든 인바운드, 아웃바운드 패킷을 허용한다.
- 네트워크 ACL보다 보안 그룹을 사용하는 것이 좋다.
- 모든 종류의 인바운드, 아웃바운드 통신을 허용하는 보안그룹
resource "aws_security_group" "sg_1" {
ingress {
from_port = 0
to_port = 0
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
}
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-sg-1"
}
}
작성 완료된 코드
# 기존 코드
...
resource "aws_internet_gateway" "igw_1" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-1"
}
}
resource "aws_route_table" "rt_1" {
vpc_id = aws_vpc.vpc_1.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.igw_1.id
}
tags = {
Name = "${var.prefix}-rt-1"
}
}
resource "aws_route_table_association" "association_1" {
subnet_id = aws_subnet.sub_1.id
route_table_id = aws_route_table.rt_1.id
}
resource "aws_security_group" "sg_1" {
ingress {
from_port = 0
to_port = 0
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
}
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-sg-1"
}
}
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
90일차 - 테라폼의 리소스 생성 순서, AWS 엘라스틱 IP, Virtual Domain (0) | 2023.06.30 |
---|---|
89일차 - 테라폼, AWS EC2, IAM Role, 인스턴스 프로파일, S3와 버킷 (0) | 2023.06.29 |
87일차 - AWS, Git과 테라폼 연결하기, 테라폼 명령어 (0) | 2023.06.27 |
86일차 - AWS, 테라폼 (0) | 2023.06.26 |
85일차 - MongoDB Replica Set vs Sharded Cluster, Strorage Engine (0) | 2023.06.23 |