엔드 포인트 생성
- VPC 안의 S3와의 원활한 통신을 위하여 생성
...
# 기존 코드
# 인터넷 게이트웨이
resource "aws_internet_gateway" "igw_1" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-1"
}
}
# 추가
resource "aws_vpc_endpoint" "s3_endpoint" {
vpc_id = aws_vpc.vpc_1.id
service_name = "com.amazonaws.${var.region}.s3"
route_table_ids = [aws_route_table.rt_1.id]
}
...
서브넷 추가
- RDS 사용을 위해선 최소 2개의 서브넷이 필요하다. => 다른 가용영역을 써야 함
기존 코드
resource "aws_subnet" "sub_1" {
vpc_id = aws_vpc.vpc_1.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}a"
map_public_ip_on_launch = true
tags = {
Name = "${var.prefix}-sub-1"
}
}
서브넷을 추가한 코드
...
# 서브넷1
resource "aws_subnet" "sub_1" {
vpc_id = aws_vpc.vpc_1.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}a"
map_public_ip_on_launch = true
tags = {
Name = "${var.prefix}-sub-1"
}
}
# 서브넷2
resource "aws_subnet" "sub_2" {
vpc_id = aws_vpc.vpc_1.id
cidr_block = "10.0.2.0/24"
availability_zone = "${var.region}b"
map_public_ip_on_launch = true
tags = {
Name = "${var.prefix}-sub-2"
}
}
# 기존 코드
# 인터넷 게이트웨이
resource "aws_internet_gateway" "igw_1" {
vpc_id = aws_vpc.vpc_1.id
tags = {
Name = "${var.prefix}-igw-1"
}
}
# 인터넷 게이트웨이 추가
resource "aws_vpc_endpoint" "s3_endpoint" {
vpc_id = aws_vpc.vpc_1.id
service_name = "com.amazonaws.${var.region}.s3"
route_table_ids = [aws_route_table.rt_1.id]
}
MariaDB RDS 띄우기
# 서브넷 그룹
resource "aws_db_subnet_group" "db_subnet_group_1" {
name = "${var.prefix}-db-subnet-group-1"
subnet_ids = [aws_subnet.sub_1.id, aws_subnet.sub_2.id]
tags = {
Name = "${var.prefix}-db-subnet-group-1"
}
}
resource "aws_db_parameter_group" "mariadb_parameter_group_1" {
name = "${var.prefix}-mariadb-parameter-group-1"
family = "mariadb10.6"
parameter {
name = "character_set_client"
value = "utf8mb4"
}
parameter {
name = "character_set_connection"
value = "utf8mb4"
}
parameter {
name = "character_set_database"
value = "utf8mb4"
}
parameter {
name = "character_set_filesystem"
value = "utf8mb4"
}
parameter {
name = "character_set_results"
value = "utf8mb4"
}
parameter {
name = "character_set_server"
value = "utf8mb4"
}
parameter {
name = "collation_connection"
value = "utf8mb4_general_ci"
}
parameter {
name = "collation_server"
value = "utf8mb4_general_ci"
}
tags = {
Name = "${var.prefix}-mariadb-parameter-group"
}
}
resource "aws_db_instance" "db_1" {
identifier = "${var.prefix}-db-1"
allocated_storage = 20
max_allocated_storage = 1000
engine = "mariadb"
engine_version = "10.6.10"
instance_class = "db.t3.micro"
publicly_accessible = true
username = "admin"
password = "password"
parameter_group_name = aws_db_parameter_group.mariadb_parameter_group_1.name
backup_retention_period = 0 # 백업을 끔
skip_final_snapshot = true
vpc_security_group_ids = [aws_security_group.sg_1.id]
db_subnet_group_name = aws_db_subnet_group.db_subnet_group_1.name
availability_zone = "${var.region}a"
tags = {
Name = "${var.prefix}-db-1"
}
}
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
94일차 - Hashicorp Vault (0) | 2023.07.07 |
---|---|
93일차 - 테라폼과 AWS Route 53, DB 리플리케이션 (0) | 2023.07.05 |
91일차 - 테라폼과 AWS 클라우드 프론트 (0) | 2023.07.03 |
90일차 - 테라폼의 리소스 생성 순서, AWS 엘라스틱 IP, Virtual Domain (0) | 2023.06.30 |
89일차 - 테라폼, AWS EC2, IAM Role, 인스턴스 프로파일, S3와 버킷 (0) | 2023.06.29 |