Rules builder
akamai_property_rules_builder
Build your property rules, includes, behaviors, and criteria into a single set of rules or a rules file. A list of all behaviors and criteria can be found in the reference section.
// Your default rule information
data "akamai_property_rules_builder" "my_default_rule" {
  rules_v2023_01_05 {
    name      = "default"
    is_secure = false
    comments  = <<-EOT
      The behaviors in the default rule apply to all requests for the property hostnames unless another rule overrides these settings.
    EOT
    behavior {
      origin {
        origin_type                   = "CUSTOMER"
        hostname                      = "httpbin.org"
        forward_host_header           = "ORIGIN_HOSTNAME"
        cache_key_hostname            = "REQUEST_HOST_HEADER"
        compress                      = true
        enable_true_client_ip         = false
        http_port                     = 80
      }
    }
    behavior {
      cp_code {
        value {
          id   = 12345
          name = "main site"
        }
      }
    }
    children = [
      data.akamai_property_rules_builder.compress_text_content.json
    ]
  }
}
// Your child rule information
data "akamai_property_rules_builder" "compress_text_content" {
  rules_v2023_01_05 {
    name = "Compress Text Content"
    behavior {
      gzipResponse {
          behavior = "ALWAYS"
      }
    }
    criterion {
      contentType {
        matchOperator      = "IS_ONE_OF"
        matchWildcard      = true
        matchCaseSensitive = false
        values             = ["text/html*", "text/css*", "application/x-javascript*"]
      }
    }
  }
}
output "my_default_rule" {
  value = data.akamai_property_rules_builder.my_default_rule
} 
Changes to Outputs:
  + my_default_rule = jsonencode(
        {
          + rules = {
              + behaviors = [
                  + {
                      + name    = "origin"
                      + options = {
                          + cacheKeyHostname   = "REQUEST_HOST_HEADER"
                          + compress           = true
                          + enableTrueClientIp = false
                          + forwardHostHeader  = "ORIGIN_HOSTNAME"
                          + hostname           = "example.org"
                          + httpPort           = 80
                          + originType         = "CUSTOMER"
                        }
                    },
                  + {
                      + name    = "cpCode"
                      + options = {
                          + value = {
                              + id   = 12345
                              + name = "main site"
                            }
                        }
                    },
                ]
              + children  = [
                  + {
                      + behaviors = [
                          + {
                              + name    = "gzipResponse"
                              + options = {
                                  + behavior = "ALWAYS"
                                }
                            },
                        ]
                      + criteria  = [
                          + {
                              + name    = "contentType"
                              + options = {
                                  + matchCaseSensitive = false
                                  + matchOperator      = "IS_ONE_OF"
                                  + matchWildcard      = true
                                  + values             = [
                                      + "text/html*",
                                      + "text/css*",
                                      + "application/x-javascript*",
                                    ]
                                }
                            },
                        ]
                      + name      = "Compress Text Content"
                      + options   = {}
                    },
                ]
              + comments  = <<-EOT
                    The behaviors in the default rule apply to all requests for the property hostname(s) unless another rule overrides theses settings.
                EOT
              + name      = "default"
              + options   = {}
            }
        }
    )
// Uses Terraform resource local_file
resource "local_file" "rules" {
    content  = data.akamai_property_rules_builder.my_default_rule.json
    filename = "./property-snippets/main.json"
} 
// local
rules = data.akamai_property_rules_builder.my_default_rule
// reference file directly
rules = file("${path.root}/property-snippets/main.json")
Arguments
Send your rule's name, rule format version, and any of the optional arguments that build out your rule's business case.
| Argument | Required | Description | 
|---|---|---|
name | ✔️ | The name of your rule. If you're sending the entire tree, this value is default. | 
rule_format | ✔️ | The versioned schema that represents a valid rule tree. | 
is_secure | Whether the default rule is secure.Not applicable for child rules.  | |
behavior | A behavior for a rule. | |
variable | A list of variables for a rule.
  | |
criterion | A match target for a rule. Not applicable for the default rule. | |
criteria_must_satisfy | Whether all criteria need to match or any.Not applicable for the default rule. | |
advanced_override | XML metadata of the rule. Not applicable for child rules.  | |
custom_override | A rule's XML metadata.
 Not applicable for child rules.  | |
comments | Any comments for a rule. | |
uuid | The rule's UUID. | |
template_uuid | The rule template's UUID. | |
criteria_locked | Whether changes to criterion objects are prohibited.Not applicable for the default rule. | |
template_link | The rule's template link. | 
Attributes
For any output method you chose, returned to you is your full set of rules in the rule format you passed in the request.
Updated 9 months ago
