This module provides a S3 bucket where static content for a website can be uploaded. The content will be cached in CloudFront's edge locations and the provided domain will be pointed to the CloudFront distribution with Route53. For the provided domain a public hosted zone must be present in the deploying account.
Name |
Version |
terraform |
>= 1.0 |
aws |
>= 5.20 |
random |
>= 3.6.0 |
Name |
Description |
Type |
Default |
Required |
identifier |
Unique identifier to differentiate global resources. |
string |
n/a |
yes |
domain |
Custom domain pointed to the CloudFront distribution. |
string |
n/a |
yes |
zone_id |
ID of the public hosted zone for the domain. (When not specified the public hosted zone of the domain will be pulled with a data resource from your account) |
string |
"" |
no |
price_class |
Price class for the CloudFront distribution. Valid values: 'PriceClass_All', 'PriceClass_200' or 'PriceClass_100'. |
string |
"PriceClass_All" |
no |
min_ttl |
Minimum amount of time (in seconds) that you want objects to stay in CloudFront caches before CloudFront queries the origin to see whether the object has been updated. |
number |
0 |
no |
default_ttl |
Default amount of time (in seconds) that an object is in a CloudFront cache before CloudFront forwards another request in the absence of an 'Cache-Control max-age' or 'Expires' header. |
number |
3600 |
no |
max_ttl |
Maximum amount of time (in seconds) that an object is in a CloudFront cache before CloudFront forwards another request to your origin to determine whether the object has been updated. |
number |
86400 |
no |
ip_rate_limit |
Rate limit for traffic from the same IP address over a time period of 5 minutes. |
number |
0 |
no |
tags |
A map of tags to add to all resources. |
map(string) |
{} |
no |
Name |
Description |
id |
The ID of the S3 bucket. |
module "website" {
source = "github.com/custom-terraform-aws-modules/website"
identifier = "example-website-dev"
domain = "example.com"
price_class = "PriceClass_100"
min_ttl = 0
default_ttl = 360
max_ttl = 86400
ip_rate_limit = 100
tags = {
Project = "example-project"
Environment = "dev"
}
}
In order for a seamless CI workflow copy the pre-commit
git hook from .github/hooks
into your local .git/hooks
. The hook formats the terraform code automatically before each commit.
cp ./.github/hooks/pre-commit ./.git/hooks/pre-commit