본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

90일차 - 테라폼의 리소스 생성 순서, AWS 엘라스틱 IP, Virtual Domain

테라폼으로 버킷 생성 시 리소스 생성 순서

테라폼은 종속성 그래프(DAG)를 만들고 그것을 통해 리소스 생성 순서를 결정한다. 따라서 코드 상에서 리소스를 기술한 순서는 기본적으로 리소스 생성 순서에 직접적인 영향을 미치지 않는다. 그러나 테라폼이 인식하지 못하는 의존성에 대해서는 직접 depends_on으로 설정해주어야 한다.

# 기존 코드

...

# 버킷 생성
resource "aws_s3_bucket" "bucket_yuri_1" {
  bucket = "${var.prefix}-bucket-yuri-1"

  tags = {
    Name = "${var.prefix}-bucket-yuri-1"
  }
}

# 정책 설정
resource "aws_s3_bucket_policy" "bucket_yuri_1_policy_1" {
  bucket = aws_s3_bucket.bucket_yuri_1.id

  policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "${aws_s3_bucket.bucket_yuri_1.arn}"
        }
    ]
}
EOF

  depends_on = [aws_s3_bucket_public_access_block.bucket_yuri_1_public_access_block_1]
}

# 퍼블릭 엑세스 제한
resource "aws_s3_bucket_public_access_block" "bucket_yuri_1_public_access_block_1" {
  bucket = aws_s3_bucket.bucket_yuri_1.id

  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

AWS 엘라스틱 IP

- EC2를 재부팅하면 public IP가 교체된다. 종료 후에 다시 생성하면 private IP도 교체된다.

===> 엘라스틱 IP(탄력적 IP)를 할당받는다.(NCP의 공인 IP 할당과 비슷한 개념)

- 엘라스틱 IP는 여러 개 할당받아서 가지고 있어도 되지만, 사용하지 않는 IP에 대해서는 상대적으로 높은 요금을 부과한다.


Virtual Domain

# 기존 코드

...

resource "aws_route53_zone" "vpc_1_zone" {
  vpc {
    vpc_id = aws_vpc.vpc_1.id
  }

  name = "vpc-1.com"
}

resource "aws_route53_record" "record_ec2-1_vpc-1_com" {
  zone_id = aws_route53_zone.vpc_1_zone.zone_id
  name    = "ec2-1.vpc-1.com"
  type    = "A"
  ttl     = "300"
  records = [aws_instance.ec2_1.private_ip] # EC2의 private IP를 가리킨다.
}

- ec2-1.vpc-1.com 이 내부적으로 EC2의 private IP를 가리키게 된다.

- VPC에서 enable DNS support, enable DNS hostnames를 켠다. => private 도메인이 작동하도록 허용한다.