스스로 구축하는 AWS 클라우드 인프라 - 기본편을 수강하며 AWS 인프라를 Terraform으로 작성한 내용입니다.
html
, 이미지 파일 등 콘텐츠를 업로드하고 정적 웹사이트 호스팅 기능을 설정하면 웹사이트처럼 작동backend.tf
파일을 아래와 같이 작성terraform {
backend "s3" {
bucket = "aws-cloud-infra-practice-tfstate"
key = "workspace/serverless-web-hosting/terraform.tfstate"
region = "ap-northeast-2"
encrypt = true
dynamodb_table = "terraform-lock"
}
}
provider.tf
파일을 아래와 같이 작성provider "aws" {
region = "us-east-1"
}
s3.tf
파일을 아래와 같이 작성resource "aws_s3_bucket" "main" {
bucket = "s3-web-hosting-chori"
tags = {
Name = "s3-web-hosting-chori"
}
}
terraform init
, terraform plan -parallelism=30
, terraform apply -parallelism=30
명령어를 순서대로 실행html
파일과 jpg
파일 업로드objects
파일을 만들고 아래와 같이 작성resource "aws_s3_object" "index_html" {
bucket = aws_s3_bucket.main.id
key = "mycar.html"
source = "./mycar.html"
}
resource "aws_s3_object" "car_image" {
bucket = aws_s3_bucket.main.id
key = "car.jpg"
source = "./car.jpg"
}
s3.tf
파일 하단에 아래 내용을 추가resource "aws_s3_bucket_website_configuration" "web_hosting" {
bucket = aws_s3_bucket.main.id
index_document {
suffix = "mycar.html"
}
}
index_document
과 suffix = "mycar.html"
은 기본적으로 보여줄 html
파일을 정의, 즉 기본 웹 페이지로 "mycar.html" 파일을 표시terraform plan -parallelism=30
, terraform apply -parallelism=30
명령어 실행s3.tf
파일에 아래 내용을 추가resource "aws_s3_bucket_public_access_block" "public_access_block" {
bucket = aws_s3_bucket.main.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
resource "aws_s3_bucket_policy" "public_read_policy" {
bucket = aws_s3_bucket.main.id
policy = jsonencode({
Version = "2012-10-17",
Statement = [
{
Sid = "PublicReadGetObject",
Effect = "Allow",
Principal = "*",
Action = "s3:GetObject",
Resource = "${aws_s3_bucket.main.arn}/*"
}
]
})
}