AWS

S3에서 IaC로 폴더 만들기

devfinger 2024. 10. 22. 20:31

Terraform 구성 파일

1. main.tf

# AWS 제공자 설정
provider "aws" {
  region = "ap-northeast-2"  # 사용할 AWS 리전
}

# S3 버킷 생성
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-unique-bucket-name"  # S3 버킷의 이름 (유일해야 함)
  acl    = "private"                 # 버킷 접근 제어 목록 (ACL)
  
  # 버킷에 태그 추가
  tags = {
    Name        = "MyS3Bucket"
    Environment = "Dev"
  }
}

# 첫 번째 단계 폴더 생성
resource "aws_s3_bucket_object" "first_folder" {
  bucket = aws_s3_bucket.my_bucket.bucket
  key    = "first-folder/"  # 첫 번째 단계 폴더 (슬래시로 끝남)
}

# 두 번째 단계 폴더 생성
resource "aws_s3_bucket_object" "second_folder" {
  bucket = aws_s3_bucket.my_bucket.bucket
  key    = "first-folder/second-folder/"  # 두 번째 단계 폴더 (슬래시로 끝남)
}

# 두 번째 단계 폴더에 객체 업로드
resource "aws_s3_bucket_object" "example_file" {
  bucket = aws_s3_bucket.my_bucket.bucket
  key    = "first-folder/second-folder/example.txt"  # 객체 경로
  content = "This is an example file in the second folder."  # 파일 내용
}

 

2. variables.tf (필요 시)

이 예제에서는 특별한 변수를 사용하지 않지만, 필요에 따라 사용할 수 있는 파일입니다.

# 필요한 경우 사용할 변수 정의
variable "bucket_name" {
  description = "S3 버킷 이름"
  type        = string
}

 

3. outputs.tf (필요 시)

버킷 정보를 출력하기 위한 파일입니다.

output "bucket_name" {
  description = "S3 Bucket Name"
  value       = aws_s3_bucket.my_bucket.bucket
}

output "first_folder" {
  description = "First Folder Key"
  value       = aws_s3_bucket_object.first_folder.key
}

output "second_folder" {
  description = "Second Folder Key"
  value       = aws_s3_bucket_object.second_folder.key
}

 

구성 설명

  • AWS Provider: AWS 리전과 제공자를 설정
  • S3 Bucket: aws_s3_bucket 리소스를 사용하여 S3 버킷을 생성합니다. 버킷 이름은 반드시 고유해야 하며, ACL을 설정
  • First Folder: aws_s3_bucket_object 리소스를 사용하여 첫 번째 단계 폴더를 생성합니다. 폴더 이름은 슬래시(/)로 끝나야 S3에서 폴더로 인식
  • Second Folder: 두 번째 단계 폴더를 생성하고, 객체를 업로드
  • Example File: 두 번째 폴더에 예시 텍스트 파일을 업로드

 

Terraform 실행

# Terraform 초기화
terraform init

# Terraform 계획 보기
terraform plan

# Terraform 적용
terraform apply