hashicorp / terraform

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
https://www.terraform.io/
Other
42.41k stars 9.5k forks source link

aws_wafv2_web_acl - attempting the create a "custom_response_body" causes an error #32210

Closed elbazon closed 1 year ago

elbazon commented 1 year ago

Terraform Version

Terraform v1.3.4
on darwin_arm64
+ provider registry.terraform.io/hashicorp/archive v2.2.0
+ provider registry.terraform.io/hashicorp/aws v4.31.0
+ provider registry.terraform.io/hashicorp/null v3.2.0

Terraform Configuration Files

resource "aws_wafv2_web_acl" "waf_acl" {
  name  = "${var.name}-Webv2ACL"
  scope = var.scope

  custom_response_body {
    content      = <<EOF
<!DOCTYPE html>
<html>
<head>
<title>Access Denied</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
</head>
<body>
<div class="w3-display-middle">
<h1 class="w3-jumbo w3-animate-top w3-center"><code>Access Denied</code></h1>
<hr class="w3-border-white w3-animate-left" style="margin:auto;width:50%">
<h3 class="w3-center w3-animate-right">You dont have permission to view this site.</h3>
<h3 class="w3-center w3-animate-zoom">🚫🚫🚫🚫</h3>
<h6 class="w3-center w3-animate-zoom">error code:403 forbidden</h6>
</div>
</body>
</html>
EOF
    content_type = "TEXT_HTML"
    key          = "AccessDenied"
  }

  default_action {
    dynamic "allow" {
      for_each = var.default_action_block ? [] : [1]

      content {}
    }

    dynamic "block" {
      for_each = var.default_action_block ? [1] : []

      content {
        custom_response {
          custom_response_body_key = "AccessDenied"
          response_code = 503
        }
      }
    }
  }

  visibility_config {
    cloudwatch_metrics_enabled = true
    metric_name                = "${var.name}-Webv2ACL-Metric"
    sampled_requests_enabled   = false
  }

  tags = merge(var.tags, {
    Name = "${var.name}-Webv2ACL"
  })
  rule {
    name     = "ip-rate-limit"
    priority = 1

    action {
      count {}
    }

    statement {
      rate_based_statement {
        aggregate_key_type = "IP"
        limit              = 200
      }
    }

    visibility_config {
      cloudwatch_metrics_enabled = true
      metric_name                = "ip-rate-limit"
      sampled_requests_enabled   = true
    }
  }

  dynamic "rule" {
    for_each = var.dev_access_only ? [1] : []
    content {
      name     = "development-access-only"
      priority = 0

      override_action {
        none {}
      }
      statement {
        rule_group_reference_statement {
          arn = var.dev_access_rule_group_arn
        }
      }

      visibility_config {
        cloudwatch_metrics_enabled = var.dev_logging
        metric_name                = "${var.name}-dev-access-waf-rule"
        sampled_requests_enabled   = var.dev_logging_samples
      }
    }
  }

  dynamic "rule" {
    for_each = var.managed_rules
    content {
      name     = rule.value.name
      priority = rule.value.priority

      override_action {
        dynamic "none" {
          for_each = rule.value.override_action == "none" ? [1] : []
          content {}
        }

        dynamic "count" {
          for_each = rule.value.override_action == "count" ? [1] : []
          content {}
        }
      }

      statement {
        managed_rule_group_statement {
          name        = rule.value.name
          vendor_name = "AWS"

          dynamic "excluded_rule" {
            for_each = rule.value.excluded_rules
            content {
              name = excluded_rule.value
            }
          }
        }
      }

      visibility_config {
        cloudwatch_metrics_enabled = true
        metric_name                = rule.value.name
        sampled_requests_enabled   = true
      }
    }
  }

}

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}

Outputs

output "id" { value = aws_wafv2_web_acl.waf_acl.id }
output "arn" { value = aws_wafv2_web_acl.waf_acl.arn }

Debug Output

β”‚ Error: Provider produced inconsistent final plan
β”‚ 
β”‚ When expanding the plan for
β”‚ module.env-cf-wafv2-dev-access[0].aws_wafv2_web_acl.waf_acl to include new
β”‚ values learned so far during apply, provider
β”‚ "registry.terraform.io/hashicorp/aws" produced an invalid new value for
β”‚ .rule: planned set element
β”‚ cty.ObjectVal(map[string]cty.Value{"action":cty.ListValEmpty(cty.Object(map[string]cty.Type{"allow":cty.List(cty.Object(map[string]cty.Type{"custom_request_handling":cty.List(cty.Object(map[string]cty.Type{"insert_header":cty.Set(cty.Object(map[string]cty.Type{"name":cty.String,
β”‚ "value":cty.String}))}))})),
β”‚ "block":cty.List(cty.Object(map[string]cty.Type{"custom_response":cty.List(cty.Object(map[string]cty.Type{"custom_response_body_key":cty.String,
β”‚ "response_code":cty.Number,
β”‚ "response_header":cty.Set(cty.Object(map[string]cty.Type{"name":cty.String,
β”‚ "value":cty.String}))}))})),
β”‚ "captcha":cty.List(cty.Object(map[string]cty.Type{"custom_request_handling":cty.List(cty.Object(map[string]cty.Type{"insert_header":cty.Set(cty.Object(map[string]cty.Type{"name":cty.String,
β”‚ "value":cty.String}))}))})),
β”‚ "count":cty.List(cty.Object(map[string]cty.Type{"custom_request_handling":cty.List(cty.Object(map[string]cty.Type{"insert_header":cty.Set(cty.Object(map[string]cty.Type{"name":cty.String,
β”‚ "value":cty.String}))}))}))})),
β”‚ "name":cty.StringVal("AWSManagedRulesAmazonIpReputationList"),
β”‚ "override_action":cty.ListVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"count":cty.ListValEmpty(cty.EmptyObject),
β”‚ "none":cty.ListVal([]cty.Value{cty.EmptyObjectVal})})}),
β”‚ "priority":cty.NumberIntVal(2),
β”‚ "rule_label":cty.SetValEmpty(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "statement":cty.ListVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"and_statement":cty.ListValEmpty(cty.Object(map[string]cty.Type{"statement":cty.List(cty.Object(map[string]cty.Type{"and_statement":cty.List(cty.Object(map[string]cty.Type{"statement":cty.List(cty.Object(map[string]cty.Type{"and_statement":cty.List(cty.Object(map[string]cty.Type{"statement":cty.List(cty.Object(map[string]cty.Type{"byte_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "positional_constraint":cty.String, "search_string":cty.String,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "geo_match_statement":cty.List(cty.Object(map[string]cty.Type{"country_codes":cty.List(cty.String),
β”‚ "forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String}))})),
β”‚ "ip_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "ip_set_forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String, "position":cty.String}))})),
β”‚ "label_match_statement":cty.List(cty.Object(map[string]cty.Type{"key":cty.String,
β”‚ "scope":cty.String})),
β”‚ "regex_pattern_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "size_constraint_statement":cty.List(cty.Object(map[string]cty.Type{"comparison_operator":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})), "size":cty.Number,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "sqli_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "xss_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))}))}))})),
β”‚ "byte_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "positional_constraint":cty.String, "search_string":cty.String,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "geo_match_statement":cty.List(cty.Object(map[string]cty.Type{"country_codes":cty.List(cty.String),
β”‚ "forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String}))})),
β”‚ "ip_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "ip_set_forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String, "position":cty.String}))})),
β”‚ "label_match_statement":cty.List(cty.Object(map[string]cty.Type{"key":cty.String,
β”‚ "scope":cty.String})),
β”‚ "not_statement":cty.List(cty.Object(map[string]cty.Type{"statement":cty.List(cty.Object(map[string]cty.Type{"byte_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "positional_constraint":cty.String, "search_string":cty.String,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "geo_match_statement":cty.List(cty.Object(map[string]cty.Type{"country_codes":cty.List(cty.String),
β”‚ "forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String}))})),
β”‚ "ip_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "ip_set_forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String, "position":cty.String}))})),
β”‚ "label_match_statement":cty.List(cty.Object(map[string]cty.Type{"key":cty.String,
β”‚ "scope":cty.String})),
β”‚ "regex_pattern_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "size_constraint_statement":cty.List(cty.Object(map[string]cty.Type{"comparison_operator":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})), "size":cty.Number,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "sqli_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "xss_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))}))}))})),
β”‚ "or_statement":cty.List(cty.Object(map[string]cty.Type{"statement":cty.List(cty.Object(map[string]cty.Type{"byte_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "positional_constraint":cty.String, "search_string":cty.String,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "geo_match_statement":cty.List(cty.Object(map[string]cty.Type{"country_codes":cty.List(cty.String),
β”‚ "forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String}))})),
β”‚ "ip_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "ip_set_forwarded_ip_config":cty.List(cty.Object(map[string]cty.Type{"fallback_behavior":cty.String,
β”‚ "header_name":cty.String, "position":cty.String}))})),
β”‚ "label_match_statement":cty.List(cty.Object(map[string]cty.Type{"key":cty.String,
β”‚ "scope":cty.String})),
β”‚ "regex_pattern_set_reference_statement":cty.List(cty.Object(map[string]cty.Type{"arn":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "size_constraint_statement":cty.List(cty.Object(map[string]cty.Type{"comparison_operator":cty.String,
β”‚ "field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})), "size":cty.Number,
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "sqli_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_paths":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})), "method":cty.List(cty.EmptyObject),
β”‚ "query_string":cty.List(cty.EmptyObject),
β”‚ "single_header":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "single_query_argument":cty.List(cty.Object(map[string]cty.Type{"name":cty.String})),
β”‚ "uri_path":cty.List(cty.EmptyObject)})),
β”‚ "text_transformation":cty.Set(cty.Object(map[string]cty.Type{"priority":cty.Number,
β”‚ "type":cty.String}))})),
β”‚ "xss_match_statement":cty.List(cty.Object(map[string]cty.Type{"field_to_match":cty.List(cty.Object(map[string]cty.Type{"all_query_arguments":cty.List(cty.EmptyObject),
β”‚ "body":cty.List(cty.EmptyObject),
β”‚ "cookies":cty.List(cty.Object(map[string]cty.Type{"match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "excluded_cookies":cty.List(cty.String),
β”‚ "included_cookies":cty.List(cty.String)})), "match_scope":cty.String,
β”‚ "oversize_handling":cty.String})),
β”‚ "json_body":cty.List(cty.Object(map[string]cty.Type{"invalid_fallback_behavior":cty.String,
β”‚ "match_pattern":cty.List(cty.Object(map[string]cty.Type{"all":cty.List(cty.EmptyObject),
β”‚ "included_pa
.
.
.
.
.
.
.
.
.
.
( this keeps on for around 8000 lines).
...

β”‚ "sampled_requests_enabled":cty.True})})}) does not correlate with any
β”‚ element in actual.
β”‚ 
β”‚ This is a bug in the provider, which should be reported in the provider's
β”‚ own issue tracker.
β•΅
ERRO[0019] Terraform invocation failed in /Users/elbaz/Documents/IaC/aws-infrastructure/regions/eu-west-1/morning/services/_common 
ERRO[0019] 1 error occurred:
    * exit status 1

Expected Behavior

Resource should be created...

Actual Behavior

The resource is not created, and the described error is presented.

Steps to Reproduce

  1. terraform init
  2. terraform apply -> YES

Additional Context

  1. I've tried with several terraform versions and terraform/aws providers - the same errors.
  2. I'm using terragrunt, and I tried with and without the overlay - the same result.

References

No response

jbardin commented 1 year ago

Hello,

This appears to be an issue or question with the AWS provider, not with Terraform itself. You can see existing issues and file a new one in their repository here: https://github.com/hashicorp/terraform-provider-aws/issues. If you have questions about Terraform or the AWS provider, it's better to use the community forum where there are more people ready to help. The GitHub issues here are monitored only by a few core maintainers.

Thanks!

github-actions[bot] commented 1 year ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.