├── output.tf ├── variables.tf ├── main.tf ├── iam_policy.tf ├── route53.tf ├── staticSite └── index.html └── README.md /output.tf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /variables.tf: -------------------------------------------------------------------------------- 1 | variable "domain_name" { 2 | type = string 3 | } -------------------------------------------------------------------------------- /main.tf: -------------------------------------------------------------------------------- 1 | 2 | #//////////////////////////////// 3 | # aws_s3_bucket 4 | #//////////////////////////////// 5 | resource "aws_s3_bucket" "website_bucket" { 6 | bucket = var.domain_name 7 | acl = "public-read" 8 | policy = data.aws_iam_policy_document.website_policy.json 9 | website { 10 | index_document = "index.html" 11 | error_document = "index.html" 12 | } 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /iam_policy.tf: -------------------------------------------------------------------------------- 1 | 2 | #//////////////////////////////// 3 | # IAM policy for S3 4 | #//////////////////////////////// 5 | data "aws_iam_policy_document" "website_policy" { 6 | statement { 7 | actions = [ 8 | "s3:GetObject" 9 | ] 10 | principals { 11 | identifiers = ["*"] 12 | type = "AWS" 13 | } 14 | resources = [ 15 | "arn:aws:s3:::${var.domain_name}/*" 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /route53.tf: -------------------------------------------------------------------------------- 1 | 2 | #//////////////////////////////// 3 | # Route 53 4 | #//////////////////////////////// 5 | resource "aws_route53_zone" "primary" { 6 | name = var.domain_name 7 | } 8 | 9 | resource "aws_route53_record" "www" { 10 | zone_id = aws_route53_zone.primary.zone_id 11 | name = var.domain_name 12 | type = "A" 13 | alias { 14 | name = aws_s3_bucket.website_bucket.website_domain 15 | zone_id = aws_s3_bucket.website_bucket.hosted_zone_id 16 | evaluate_target_health = false 17 | } 18 | } -------------------------------------------------------------------------------- /staticSite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |