Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- dreamhack
- IAM Federation
- AWS 보안 아키텍처 분석
- 프로그래머스
- AWS 침해 사고 사례 분석
- 드림핵
- AWS 인프라 분석
- AWS 사고 사례 분석
- AWS Active Directory
- python
- C
- 네트워크
- terraform
- AWS 침해사고 사례 분석
- reversing.kr
- TryHackMe
- reversing
- AWS
- AWS 보안 사고 사례 모음
- AWS IAM Role
- AWS 인프라 아키텍처
- 리버싱
- operating system
- Amazon S3
- 운영체제
- network
- programmers
- 침입 차단 시스템(IPS)
- AWS 아키텍처 분석
- AWS 3 Tier Architecture
Archives
- Today
- Total
lhywk 님의 블로그
AWS 3-Tier 및 Data Pipeline 구축 With Terraform (4) 본문
AWS 3 Tier Architecture 구축해보기 2-3
https://github.com/estrellaSia/AWS_3Tier_Infra_Data_Pipeline/tree/main참고 깃허브 Main.tf 작성하기(3) 1. Target Group# TG-Webresource "aws_lb_target_group" "tg-web" {name = "ddong-tg-web"port = 80protocol = "HTTP"vpc_id = aws_vpc.vpc.idhealth_chec
kujung.tistory.com

1. DB SG, DB Subnet Group
# DB-SG
resource "aws_security_group" "db-sg" {
name = "ho-db-sg"
description = "DB Security Group"
vpc_id = aws_vpc.vpc.id
ingress {
from_port = 3306
to_port = 3306
protocol = "tcp"
security_groups = [aws_security_group.asg-sg-was.id]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "ho-db-sg"
}
}
# DB-Subnet-Group
resource "aws_db_subnet_group" "db-sub-grp" {
name = "ho-db-sub-grp"
subnet_ids = [aws_subnet.db-sub1.id, aws_subnet.db-sub2.id]
tags = {
Name = "ho-db-sub-grp"
}
}
resource "aws_security_group" "db-sg"
- ingress (3306): security_groups = [aws_security_group.asg-sg-was.id] 설정을 통해 오직 WAS 서버들만 DB에 접근 가능하도록 제한
- egress: 모든 포트에 대해 외부로 나가는 통신 허용
resource "aws_db_subnet_group" "db-sub-grp"
- RDS 인스턴스가 생성될 보안그룹 정의
- subnet_ids: DB 전용 프라이빗 서브넷 2개를 지정
# RDS 파라미터 그룹
resource "aws_db_parameter_group" "mk-par-grp" {
name = "ho-par-grp"
family = "mysql8.0"
description = "Example parameter group for mysql8.0"
parameter {
name = "character_set_server"
value = "utf8mb4"
}
# MySQL 서버의 기본 문자셋을 utf8mb4로 설정
# (4바이트 UTF-8: 이모지 등도 저장 가능)
parameter {
name = "collation_server"
value = "utf8mb4_unicode_ci"
# 기본 collation (문자 정렬 방식)을 utf8mb4_unicode_ci로 설정
# (문자 비교시 대소문자 구분 없이 유니코드 기준으로 정렬)
}
}
# RDS
data "aws_db_instance" "my_rds" {
db_instance_identifier = aws_db_instance.rds-db.identifier
}
resource "aws_db_instance" "rds-db" {
allocated_storage = 20
db_name = "hodb"
engine = "mysql"
engine_version = "8.0"
storage_type = "gp3" // General Purpose SSD (gp3)
instance_class = "db.t3.micro"
username = "db 유저이름"
password = "db 패스워드"
parameter_group_name = aws_db_parameter_group.mk-par-grp.name
multi_az = false
db_subnet_group_name = aws_db_subnet_group.db-sub-grp.name
vpc_security_group_ids = [aws_security_group.db-sg.id]
skip_final_snapshot = true
identifier = "ho-rds-instance" // RDS 인스턴스의 이름 지정
}
resource "aws_db_parameter_group" "mk-par-grp"
- DB 엔진의 세부 설정을 정의하는 템플릿
- character_set_server (utf8mb4): 한글은 물론 이모지까지 완벽하게 저장할 수 있도록 문자셋 확장
- collation_server (utf8mb4_unicode_ci): 문자를 비교하거나 정렬할 때 유니코드 기준으로 대소문자 구분 없이 처리하도록 설정
resource "aws_db_instance" "rds-db"
- 실제로 데이터가 저장되고 쿼리가 수행되는 핵심 서버 인스턴스
- allocated_storage = 20: 프리티어 최대치인 20GB 할당
- storage_type = "gp3": 최신 범용 SSD 타입. gp2보다 비용 대비 성능(IOPS)이 좋아 요즘 추세에 맞는 선택
- instance_class = "db.t3.micro": 프리티어에서 사용 가능한 가장 가성비 좋은 인스턴스 타입
- multi_az = false: 프리티어라 false로 설정
- vpc_security_group_ids: 앞서 만든 db-sg를 연결해 오직 WAS 서버만 접근 가능하도록 함
- skip_final_snapshot = true: DB 삭제 시 최종 백업본을 만들지 않음
'AWS' 카테고리의 다른 글
| AWS 3-Tier 및 Data Pipeline 구축 With Terraform (6) (0) | 2026.03.15 |
|---|---|
| AWS 3-Tier 및 Data Pipeline 구축 With Terraform (5) (0) | 2026.03.14 |
| AWS 3-Tier 및 Data Pipeline 구축 With Terraform (3) (1) | 2026.03.13 |
| AWS 3-Tier 및 Data Pipeline 구축 With Terraform (2) (0) | 2026.03.13 |
| AWS 3-Tier 및 Data Pipeline 구축 With Terraform (1) (0) | 2026.03.12 |