#
## nfconsole.io
#
resource aws_cloudfront_origin_access_identity "nfconsole_access_nfconsole_io" {
  comment = "Access ID nfconsole CloudFront distribution"
}

resource aws_cloudfront_distribution "nfconsole_distribution_nfconsole_io" {
  origin {
    domain_name = aws_s3_bucket.nfconsole_io_static.bucket_domain_name
    origin_id   = "S3-nfconsole-io-${local.deploy_environment}"

    s3_origin_config {
      origin_access_identity = aws_cloudfront_origin_access_identity.nfconsole_access_nfconsole_io.cloudfront_access_identity_path
    }
  }

  enabled = true

  is_ipv6_enabled = true

  default_root_object = "index.html"

  logging_config {
    include_cookies = false
    bucket          = aws_s3_bucket.nfconsole_io_logs.bucket_domain_name
    prefix          = "nfconsole"
  }

  aliases = ["*.${local.console_domain}", local.console_domain]

  default_cache_behavior {
    allowed_methods  = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods   = ["GET", "HEAD", "OPTIONS"]
    target_origin_id = "S3-nfconsole-io-${local.deploy_environment}"

    forwarded_values {
      query_string = false

      cookies {
        forward = "none"
      }
    }

    viewer_protocol_policy = "redirect-to-https"
    min_ttl                = 0
    default_ttl            = 120
    max_ttl                = 86400

    lambda_function_association {
      event_type = "origin-response"
      lambda_arn = replace(module.http_headers_lambda.lambda_function_arn, local.region, "us-east-1")
    }

    lambda_function_association {
      event_type = "viewer-response"
      lambda_arn = replace(module.http_headers_lambda.lambda_function_arn, local.region, "us-east-1")
    }
  }

  restrictions {
    geo_restriction {
      restriction_type = "none"
    }
  }

  tags = {
    Environment = local.deploy_environment
  }

  viewer_certificate {
    acm_certificate_arn      = module.route53_nfconsole.arn
    ssl_support_method       = "sni-only"
    minimum_protocol_version = "TLSv1.2_2018"
  }

  custom_error_response {
    error_caching_min_ttl = 300
    error_code            = 404
    response_code         = 200
    response_page_path    = "/index.html"
  }
}

