locals { alb_origin_id = "${var.project_name}-web" } resource "aws_cloudfront_distribution" "web" { origin { origin_id = local.alb_origin_id domain_name = aws_lb.serverpod.dns_name custom_origin_config { http_port = 80 https_port = 443 origin_protocol_policy = "http-only" origin_ssl_protocols = ["SSLv3"] } } enabled = true aliases = ["${var.subdomain_web}.${var.top_domain}", "${var.top_domain}"] default_cache_behavior { allowed_methods = ["HEAD", "DELETE", "POST", "GET", "OPTIONS", "PUT", "PATCH"] cached_methods = ["HEAD", "GET"] target_origin_id = local.alb_origin_id forwarded_values { query_string = true cookies { forward = "all" } headers = ["*"] } viewer_protocol_policy = "redirect-to-https" min_ttl = 0 default_ttl = 0 max_ttl = 0 } price_class = "PriceClass_100" viewer_certificate { acm_certificate_arn = var.cloudfront_certificate_arn ssl_support_method = "sni-only" } restrictions { geo_restriction { restriction_type = "none" } } } resource "aws_route53_record" "web" { zone_id = var.hosted_zone_id name = "${var.subdomain_web}.${var.top_domain}" type = "CNAME" ttl = "300" records = ["${aws_cloudfront_distribution.web.domain_name}"] } resource "aws_route53_record" "web_top_domain" { count = var.use_top_domain_for_web ? 1 : 0 zone_id = var.hosted_zone_id name = var.top_domain type = "A" alias { name = aws_cloudfront_distribution.web.domain_name zone_id = aws_cloudfront_distribution.web.hosted_zone_id evaluate_target_health = false } }