This module creates the infrastructure for a static website hosted on AWS S3 behind a Cloudfront distribution with HTTPS and HTTP-to-HTTPS redirection. All routing is through Cloudfront, and as such this does not use the S3 Static Website configuration.
Input variables are documented in variables.tf.
This module will create these AWS resources:
aws_route53_record.aliases
aws_s3_bucket.bucketThis is required to host the site.aws_s3_bucket_policy.bucket_policyThis defines the access policy for the Cloudfront distribution.aws_cloudfront_distribution.distributionThis is required to enable HTTPS.aws_cloudfront_origin_access_control.access_controlThis defines the routing rules for the origin on the distibution.aws_cloudfront_function.functionThis enables serving anindex.htmlfile at the root of a directory URL as that URL (e.g. https://www.example.com/users/index.html is served as https://www.example.com/users/), as well as subdomain redirection.aws_route53_record.recordsThis enables DNS lookup of the site.aws_route53_record.aliases(optional, ifvar.domainscontains the TLD of the site) This enables apex redirection to another subdomain if desired, e.g. https://example.com/ -> https://www.example.com/
This module depends on these AWS resources existing:
- An AWS account (
data.aws_caller_identity.account). - A validated AWS ACM certificate (
data.aws_acm_certificate.certificate) This is required for HTTPS. - A domain in an AWS Route53 hosted zone for each top-level domain you intend to use (
data.aws_route53_zone.zones). 
In previous versions of this, there was a local variable tags that created 3 tags:
tags = {
  Executor = "Terraform"
  ApplicationType = "S3 static website"
  ApplicationHost = "AWS"
}These were added to the aws_s3_bucket.bucket and aws_cloudfront_distribution.distribution resources, and merged with the var.application tag.
The local variable is now gone. The var.application tag remains and will continue to tag these resources.
To replace the tags previously supplied with local, simply provide a default_tags configuration with your aws provider.