70 lines
1.8 KiB
HCL
70 lines
1.8 KiB
HCL
resource "aws_cloudfront_distribution" "api-by-becki" {
|
|
origin {
|
|
domain_name = "couch.artbybecki.com"
|
|
origin_id = "couch.artbybecki.com"
|
|
custom_origin_config {
|
|
http_port = 80
|
|
https_port = 443
|
|
origin_protocol_policy = "https-only"
|
|
origin_ssl_protocols = ["TLSv1.2"]
|
|
}
|
|
}
|
|
|
|
default_cache_behavior {
|
|
allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
|
|
cached_methods = ["GET", "HEAD"]
|
|
target_origin_id = "couch.artbybecki.com"
|
|
compress = true
|
|
viewer_protocol_policy = "redirect-to-https"
|
|
cache_policy_id = aws_cloudfront_cache_policy.api.id
|
|
response_headers_policy_id = "eaab4381-ed33-4a86-88ca-d9558dc6cd63"
|
|
}
|
|
|
|
|
|
http_version = "http2and3"
|
|
|
|
enabled = true
|
|
is_ipv6_enabled = true
|
|
|
|
aliases = ["api.artbybecki.com"]
|
|
viewer_certificate {
|
|
acm_certificate_arn = aws_acm_certificate.api-artbybecki-com.arn
|
|
ssl_support_method = "sni-only"
|
|
}
|
|
|
|
|
|
restrictions {
|
|
geo_restriction {
|
|
restriction_type = "none"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_cloudfront_cache_policy" "api" {
|
|
name = "APIs"
|
|
default_ttl = 300
|
|
max_ttl = 604800
|
|
min_ttl = 1
|
|
parameters_in_cache_key_and_forwarded_to_origin {
|
|
enable_accept_encoding_brotli = true
|
|
enable_accept_encoding_gzip = true
|
|
cookies_config {
|
|
cookie_behavior = "none"
|
|
}
|
|
headers_config {
|
|
header_behavior = "none"
|
|
}
|
|
query_strings_config {
|
|
query_string_behavior = "all"
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
resource "aws_acm_certificate" "api-artbybecki-com" {
|
|
domain_name = "api.artbybecki.com"
|
|
validation_method = "DNS"
|
|
provider = aws.virginia
|
|
subject_alternative_names = ["art-by-becki.gmem.ca"]
|
|
}
|