/*
data "aws_acm_certificate" "insights_main_cert" {
  domain = module.domains["${local.env_prefix}_insights"]["website"]
}

resource "aws_s3_bucket" "sma_stream_bucket" {
  bucket        = module.domains["${local.env_prefix}_sma"]["website"]
  force_destroy = true

  logging {
    target_bucket = data.aws_s3_bucket.security_logs.id
    target_prefix = "s3/${local.name_prefix}/sma.stream/"
  }

  website {
    index_document = "index.html"
    error_document = "error.html"
  }

  server_side_encryption_configuration {
    rule {
      bucket_key_enabled = false

      apply_server_side_encryption_by_default {
        sse_algorithm = "AES256"
      }
    }
  }

  tags = merge(
    local.common_tags,
    {
      project                  = "API",
      service                  = "S3",
      plat_env_project_service = "${local.aggregated_tag}_API_S3"
    }
  )
}

resource "aws_s3_bucket_ownership_controls" "sma_stream_bucket" {
  bucket = aws_s3_bucket.sma_stream_bucket.id

  rule {
    object_ownership = "BucketOwnerEnforced"
  }
}

module "sma_stream_bucket_default_policy_document" {
  source              = "../../../modules/s3/bucket_policies/default_policy_template"
  template_bucket_arn = aws_s3_bucket.sma_stream_bucket.arn
}

data "aws_iam_policy_document" "sma_stream_bucket_policy_document" {
  version                 = "2012-10-17"
  policy_id               = "CloudFrontRO"
  source_policy_documents = [module.sma_stream_bucket_default_policy_document.document.json]

  statement {
    sid       = "CloudFrontRO"
    effect    = "Allow"
    actions   = ["s3:GetObject"]
    resources = ["${aws_s3_bucket.sma_stream_bucket.arn}/*"]

    principals {
      identifiers = [aws_cloudfront_origin_access_identity.sma_stream_access_identity.iam_arn]
      type        = "AWS"
    }
  }
}

resource "aws_s3_bucket_policy" "sma_stream_policy" {
  bucket = aws_s3_bucket.sma_stream_bucket.id
  policy = data.aws_iam_policy_document.sma_stream_bucket_policy_document.json
}

resource "aws_cloudfront_origin_access_identity" "sma_stream_access_identity" {
  comment = "Cloudfront access identity for accessing bucket ${aws_s3_bucket.sma_stream_bucket.id}"
}

resource "aws_cloudfront_distribution" "sma_stream_cdn" {
  enabled      = true
  price_class  = "PriceClass_100"
  http_version = "http2"
  web_acl_id   = data.aws_wafv2_web_acl.ioc_web_acl_global.arn
  aliases = [
    module.domains["${local.env_prefix}_sma"]["website"],
  ]

  custom_error_response {
    error_code         = 403
    response_code      = 200
    response_page_path = "/error.html"
  }

  custom_error_response {
    error_code         = 404
    response_code      = 200
    response_page_path = "/error.html"
  }

  logging_config {
    include_cookies = false
    bucket          = data.aws_s3_bucket.security_logs.bucket_domain_name
    prefix          = "cf/sma.stream"
  }

  origin {
    origin_id   = "origin-bucket-${aws_s3_bucket.sma_stream_bucket.id}"
    domain_name = aws_s3_bucket.sma_stream_bucket.bucket_regional_domain_name

    s3_origin_config {
      origin_access_identity = aws_cloudfront_origin_access_identity.sma_stream_access_identity.cloudfront_access_identity_path
    }
  }

  default_root_object = "index.html"

  default_cache_behavior {
    allowed_methods        = ["GET", "HEAD"]
    cached_methods         = ["GET", "HEAD"]
    target_origin_id       = "origin-bucket-${aws_s3_bucket.sma_stream_bucket.id}"
    min_ttl                = "0"
    default_ttl            = "3600"
    max_ttl                = "86400"
    viewer_protocol_policy = "redirect-to-https"
    compress               = true

    forwarded_values {
      query_string = false

      cookies {
        forward = "none"
      }
    }
  }

  restrictions {
    geo_restriction {
      restriction_type = "none"
    }
  }

  viewer_certificate {
    acm_certificate_arn      = data.aws_acm_certificate.insights_main_cert.arn
    ssl_support_method       = "sni-only"
    minimum_protocol_version = "TLSv1.2_2021"
  }

  tags = merge(
    local.common_tags,
    {
      project                  = "API",
      service                  = "Cloudfront",
      plat_env_project_service = "${local.aggregated_tag}_API_CFR"
    }
  )
}

resource "aws_route53_record" "sma_stream_record" {
  zone_id = data.aws_route53_zone.sma_stream_zone.id
  name    = module.domains["${local.env_prefix}_sma"]["website"]
  type    = "A"

  alias {
    name                   = aws_cloudfront_distribution.sma_stream_cdn.domain_name
    zone_id                = aws_cloudfront_distribution.sma_stream_cdn.hosted_zone_id
    evaluate_target_health = true
  }
}
*/
