Route 53
호스팅 영역 > 호스팅 영역 생성 > 도메인 이름 작성한 후 퍼블릭 호스팅 영역 선택, 호스팅 영역 생성 클릭 => 관리 준비 완료(관리 중인 것이 아님!) > 값/트래픽 라우팅 대상을 도메인의 네임 서버에 붙여넣기
EC2, RDS 인스턴스에 도메인 부여
variables.tf
variable "domain_1_zone_id" {
description = "domain_1_zone_id"
default = "" # 호스팅 영역 ID
}
variable "domain_1" {
description = "domain1"
default = "" # 내 도메인
}
main.tf
# For EC2 Instance
resource "aws_route53_record" "domain_1_ec2_1" {
zone_id = var.domain_1_zone_id
name = "ec2-1.${var.domain_1}"
type = "A"
ttl = "300"
records = [aws_instance.ec2_1.public_ip]
}
# For RDS Instance
resource "aws_route53_record" "domain_1_db_1" {
zone_id = var.domain_1_zone_id
name = "db-1.${var.domain_1}"
type = "CNAME" # IP는 A, 도메인은 CNAME
ttl = "300"
records = [aws_db_instance.db_1.address]
}
비밀번호 숨기기
깃에 올라가지 않도록 비밀번호를 다른 파일에 따로 저장한다.
main.tf
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 = var.db_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"
}
}
secret.tf
variable "db_password" {
description = "db_password"
default = "password" # 비밀번호 입력
}
DB 리플리케이션 구성
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 = var.db_password
parameter_group_name = aws_db_parameter_group.mariadb_parameter_group_1.name
backup_retention_period = 1 # 하루 동안 백업본을 유지
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"
}
}
# DB2 생성
resource "aws_db_instance" "db_2" {
identifier = "${var.prefix}-db-2"
engine = "mariadb"
engine_version = "10.6.10"
instance_class = "db.t3.micro"
publicly_accessible = true
parameter_group_name = aws_db_parameter_group.mariadb_parameter_group_1.name
skip_final_snapshot = true
vpc_security_group_ids = [aws_security_group.sg_1.id]
availability_zone = "${var.region}b"
replicate_source_db = aws_db_instance.db_1.identifier
tags = {
Name = "${var.prefix}-db-2"
}
}
# Route53 record for db-2
resource "aws_route53_record" "record_db-2_vpc-1_com" {
zone_id = aws_route53_zone.vpc_1_zone.zone_id
name = "db-2.vpc-1.com"
type = "CNAME"
ttl = "300"
records = [aws_db_instance.db_2.address]
}
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
95일차 - 다이나모 DB (0) | 2023.07.07 |
---|---|
94일차 - Hashicorp Vault (0) | 2023.07.07 |
92일차 - 테라폼과 AWS 엔드 포인트, RDS 생성 (0) | 2023.07.04 |
91일차 - 테라폼과 AWS 클라우드 프론트 (0) | 2023.07.03 |
90일차 - 테라폼의 리소스 생성 순서, AWS 엘라스틱 IP, Virtual Domain (0) | 2023.06.30 |