resource "random_string" "bucket_random" {
length = 4
upper = false
lower = false
numeric = true
special = false
}
resource "aws_s3_bucket" "source" {
provider = aws.seoul
bucket = "hrdkorea-static-${random_string.bucket_random.result}"
}
resource "aws_s3_object" "static" {
bucket = aws_s3_bucket.source.id
key = "static/index.html"
source = "./src/index.html"
etag = filemd5("./src/index.html")
content_type = "text/html"
}
resource "aws_s3_bucket_policy" "cdn-oac-bucket-policy" {
bucket = aws_s3_bucket.source.id
policy = data.aws_iam_policy_document.static_s3_policy.json
}
data "aws_iam_policy_document" "static_s3_policy" {
statement {
actions = ["s3:GetObject"]
resources = ["${aws_s3_bucket.source.arn}/*"]
principals {
type = "Service"
identifiers = ["cloudfront.amazonaws.com"]
}
condition {
test = "StringEquals"
variable = "AWS:SourceArn"
values = [aws_cloudfront_distribution.cf_dist.arn]
}
}
}
resource "aws_s3_bucket_website_configuration" "source" {
bucket = aws_s3_bucket.source.id
index_document {
suffix = "index.html"
}
}
resource "aws_s3_bucket_versioning" "source" {
provider = aws.seoul
bucket = aws_s3_bucket.source.id
versioning_configuration {
status = "Enabled"
}
}