Difference between revisions of "Template:Official aws cloudfront distribution example"

From wikieduonline
Jump to navigation Jump to search
Line 16: Line 16:
 
   s3_origin_id = "myS3Origin"
 
   s3_origin_id = "myS3Origin"
 
  }
 
  }
 +
 +
resource "aws_cloudfront_distribution" "s3_distribution" {
 +
  origin {
 +
    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name
 +
    origin_access_control_id = aws_cloudfront_origin_access_control.default.id
 +
    origin_id                = local.s3_origin_id
 +
  }
 +
 +
  enabled            = true
 +
  is_ipv6_enabled    = true
 +
  comment            = "Some comment"
 +
  default_root_object = "index.html"
 +
 +
  logging_config {
 +
    include_cookies = false
 +
    bucket          = "mylogs.s3.amazonaws.com"
 +
    prefix          = "myprefix"
 +
  }
 +
 +
  aliases = ["mysite.example.com", "yoursite.example.com"]
 +
 +
  default_cache_behavior {
 +
    allowed_methods  = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
 +
    cached_methods  = ["GET", "HEAD"]
 +
    target_origin_id = local.s3_origin_id
 +
 +
    forwarded_values {
 +
      query_string = false
 +
 +
      cookies {
 +
        forward = "none"
 +
      }
 +
    }
 +
 +
    viewer_protocol_policy = "allow-all"
 +
    min_ttl                = 0
 +
    default_ttl            = 3600
 +
    max_ttl                = 86400
 +
  }
 
<pre>
 
<pre>
resource "aws_cloudfront_distribution" "s3_distribution" {
 
  origin {
 
    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name
 
    origin_access_control_id = aws_cloudfront_origin_access_control.default.id
 
    origin_id                = local.s3_origin_id
 
  }
 
 
  enabled            = true
 
  is_ipv6_enabled    = true
 
  comment            = "Some comment"
 
  default_root_object = "index.html"
 
 
  logging_config {
 
    include_cookies = false
 
    bucket          = "mylogs.s3.amazonaws.com"
 
    prefix          = "myprefix"
 
  }
 
 
  aliases = ["mysite.example.com", "yoursite.example.com"]
 
 
  default_cache_behavior {
 
    allowed_methods  = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
 
    cached_methods  = ["GET", "HEAD"]
 
    target_origin_id = local.s3_origin_id
 
 
    forwarded_values {
 
      query_string = false
 
 
      cookies {
 
        forward = "none"
 
      }
 
    }
 
 
    viewer_protocol_policy = "allow-all"
 
    min_ttl                = 0
 
    default_ttl            = 3600
 
    max_ttl                = 86400
 
  }
 
 
 
   # Cache behavior with precedence 0
 
   # Cache behavior with precedence 0
 
   ordered_cache_behavior {
 
   ordered_cache_behavior {

Revision as of 14:11, 8 June 2023

resource "aws_s3_bucket" "b" {
  bucket = "mybucket"

  tags = {
    Name = "My bucket"
  }
}

resource "aws_s3_bucket_acl" "b_acl" {
  bucket = aws_s3_bucket.b.id
  acl    = "private"
}

locals {
  s3_origin_id = "myS3Origin"
}

resource "aws_cloudfront_distribution" "s3_distribution" {
  origin {
    domain_name              = aws_s3_bucket.b.bucket_regional_domain_name
    origin_access_control_id = aws_cloudfront_origin_access_control.default.id
    origin_id                = local.s3_origin_id
  }

  enabled             = true
  is_ipv6_enabled     = true
  comment             = "Some comment"
  default_root_object = "index.html" 

  logging_config {
    include_cookies = false
    bucket          = "mylogs.s3.amazonaws.com"
    prefix          = "myprefix"
  }

  aliases = ["mysite.example.com", "yoursite.example.com"]

  default_cache_behavior {
    allowed_methods  = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = local.s3_origin_id

    forwarded_values {
      query_string = false 

      cookies {
        forward = "none"
      }
    }

    viewer_protocol_policy = "allow-all"
    min_ttl                = 0
    default_ttl            = 3600
    max_ttl                = 86400
  }
  # Cache behavior with precedence 0
  ordered_cache_behavior {
    path_pattern     = "/content/immutable/*"
    allowed_methods  = ["GET", "HEAD", "OPTIONS"]
    cached_methods   = ["GET", "HEAD", "OPTIONS"]
    target_origin_id = local.s3_origin_id

    forwarded_values {
      query_string = false
      headers      = ["Origin"]

      cookies {
        forward = "none"
      }
    }

    min_ttl                = 0
    default_ttl            = 86400
    max_ttl                = 31536000
    compress               = true
    viewer_protocol_policy = "redirect-to-https"
  }

  # Cache behavior with precedence 1
  ordered_cache_behavior {
    path_pattern     = "/content/*"
    allowed_methods  = ["GET", "HEAD", "OPTIONS"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = local.s3_origin_id

    forwarded_values {
      query_string = false

      cookies {
        forward = "none"
      }
    }

    min_ttl                = 0
    default_ttl            = 3600
    max_ttl                = 86400
    compress               = true
    viewer_protocol_policy = "redirect-to-https"
  }

  price_class = "PriceClass_200"

  restrictions {
    geo_restriction {
      restriction_type = "whitelist"
      locations        = ["US", "CA", "GB", "DE"]
    }
  }

  tags = {
    Environment = "production"
  }

  viewer_certificate {
    cloudfront_default_certificate = true
  }
}

Advertising: