테라폼으로 버킷 생성 시 리소스 생성 순서
테라폼은 종속성 그래프(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 도메인이 작동하도록 허용한다.
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
92일차 - 테라폼과 AWS 엔드 포인트, RDS 생성 (0) | 2023.07.04 |
---|---|
91일차 - 테라폼과 AWS 클라우드 프론트 (0) | 2023.07.03 |
89일차 - 테라폼, AWS EC2, IAM Role, 인스턴스 프로파일, S3와 버킷 (0) | 2023.06.29 |
88일차 - 테라폼, 인터넷 게이트웨이와 라우팅 테이블 (0) | 2023.06.28 |
87일차 - AWS, Git과 테라폼 연결하기, 테라폼 명령어 (0) | 2023.06.27 |