hashicorp / terraform-provider-aws

The AWS Provider enables Terraform to manage AWS resources.
https://registry.terraform.io/providers/hashicorp/aws
Mozilla Public License 2.0
9.8k stars 9.15k forks source link

aws_cloudfront_distribution query_string_cache_keys reorder on every run #10860

Open davideagle opened 4 years ago

davideagle commented 4 years ago

Community Note

Terraform Version

Terraform v0.11.14

Terraform Configuration Files

resource "aws_cloudfront_distribution" "distribution" {
  aliases = "${concat(list(var.domain), var.aliases)}"

  web_acl_id = "${var.web_acl_id}"

  default_cache_behavior {
    allowed_methods = ["HEAD", "GET"]
    cached_methods  = ["HEAD", "GET"]

    forwarded_values {
      cookies {
        forward = "none"
      }

      headers                 = ["Accept", "Accept-Charset", "Accept-Datetime", "Accept-Language", "Authorization", "Host", "Origin"]
      query_string            = true
      query_string_cache_keys = ["languageId", "locationId", "range", "beltArea", "category", "bookingId", "cardCategory", "keys", "optimizely_force_tracking", "optimizely_x"]
    }

    compress               = true
    default_ttl            = "${var.cache_default_ttl}"
    max_ttl                = "${var.cache_max_ttl}"
    min_ttl                = "${var.cache_min_ttl}"
    smooth_streaming       = true
    target_origin_id       = "${var.domain}"
    viewer_protocol_policy = "redirect-to-https"
  }
...
}

Debug Output

Panic Output

Expected Behavior

Plan should be empty

Actual Behavior

On each run terraform wants to reorder query_string_cache_keys, this is time consuming since cloudfront takes up to 15 minutes to complete propagation of this "new" config, however ordered_cache_behavior seems to be unaffected

      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.0:  "beltArea" => "languageId"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.1:  "bookingId" => "locationId"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.2:  "cardCategory" => "range"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.3:  "category" => "beltArea"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.4:  "keys" => "category"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.5:  "languageId" => "bookingId"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.6:  "locationId" => "cardCategory"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.7:  "optimizely_force_tracking" => "keys"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.8:  "optimizely_x" => "optimizely_force_tracking"
      default_cache_behavior.0.forwarded_values.0.query_string_cache_keys.9:  "range" => "optimizely_x"
      ordered_cache_behavior.10.forwarded_values.0.query_string_cache_keys.0: "languageId" => "latitude"
      ordered_cache_behavior.10.forwarded_values.0.query_string_cache_keys.1: "latitude" => "longitude"
      ordered_cache_behavior.10.forwarded_values.0.query_string_cache_keys.3: "longitude" => "languageId"
      ordered_cache_behavior.2.forwarded_values.0.query_string_cache_keys.0:  "cnt_language" => "limit"
      ordered_cache_behavior.2.forwarded_values.0.query_string_cache_keys.2:  "limit" => "cnt_language"
      ordered_cache_behavior.25.forwarded_values.0.query_string_cache_keys.0: "ice_uuid" => "redirectURL"
      ordered_cache_behavior.25.forwarded_values.0.query_string_cache_keys.1: "redirectURL" => "ice_uuid"

Steps to Reproduce

  1. terraform apply

Important Factoids

References