Microsoft.Network frontDoors 2018-08-01

Bicep resource definition

The frontDoors resource type can be deployed to:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.Network/frontDoors resource, add the following Bicep to your template.

resource symbolicname 'Microsoft.Network/frontDoors@2018-08-01' = {
  name: 'string'
  location: 'string'
  tags: {
    tagName1: 'tagValue1'
    tagName2: 'tagValue2'
  }
  properties: {
    backendPools: [
      {
        id: 'string'
        name: 'string'
        properties: {
          backends: [
            {
              address: 'string'
              backendHostHeader: 'string'
              enabledState: 'string'
              httpPort: int
              httpsPort: int
              priority: int
              weight: int
            }
          ]
          healthProbeSettings: {
            id: 'string'
          }
          loadBalancingSettings: {
            id: 'string'
          }
        }
      }
    ]
    enabledState: 'string'
    friendlyName: 'string'
    frontendEndpoints: [
      {
        id: 'string'
        name: 'string'
        properties: {
          hostName: 'string'
          sessionAffinityEnabledState: 'string'
          sessionAffinityTtlSeconds: int
          webApplicationFirewallPolicyLink: {
            id: 'string'
          }
        }
      }
    ]
    healthProbeSettings: [
      {
        id: 'string'
        name: 'string'
        properties: {
          intervalInSeconds: int
          path: 'string'
          protocol: 'string'
        }
      }
    ]
    loadBalancingSettings: [
      {
        id: 'string'
        name: 'string'
        properties: {
          additionalLatencyMilliseconds: int
          sampleSize: int
          successfulSamplesRequired: int
        }
      }
    ]
    routingRules: [
      {
        id: 'string'
        name: 'string'
        properties: {
          acceptedProtocols: [
            'string'
          ]
          backendPool: {
            id: 'string'
          }
          cacheConfiguration: {
            dynamicCompression: 'string'
            queryParameterStripDirective: 'string'
          }
          customForwardingPath: 'string'
          enabledState: 'string'
          forwardingProtocol: 'string'
          frontendEndpoints: [
            {
              id: 'string'
            }
          ]
          patternsToMatch: [
            'string'
          ]
        }
      }
    ]
  }
}

Property values

frontDoors

Name Description Value
name The resource name string (required)

Character limit: 5-64

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric.

Resource name must be unique across Azure.
location Resource location. string
tags Resource tags. Dictionary of tag names and values. See Tags in templates
properties Properties of the Front Door Load Balancer FrontDoorProperties

FrontDoorProperties

Name Description Value
backendPools Backend pools available to routing rules. BackendPool[]
enabledState Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
friendlyName A friendly name for the frontDoor string
frontendEndpoints Frontend endpoints available to routing rules. FrontendEndpoint[]
healthProbeSettings Health probe settings associated with this Front Door instance. HealthProbeSettingsModel[]
loadBalancingSettings Load balancing settings associated with this Front Door instance. LoadBalancingSettingsModel[]
routingRules Routing rules associated with this Front Door. RoutingRule[]

BackendPool

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Backend Pool BackendPoolProperties

BackendPoolProperties

Name Description Value
backends The set of backends for this pool Backend[]
healthProbeSettings L7 health probe settings for a backend pool SubResource
loadBalancingSettings Load balancing settings for a backend pool SubResource

Backend

Name Description Value
address Location of the backend (IP address or FQDN) string
backendHostHeader The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host. string
enabledState Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
httpPort The HTTP TCP port number. Must be between 1 and 65535. int
httpsPort The HTTPS TCP port number. Must be between 1 and 65535. int
priority Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy. int
weight Weight of this endpoint for load balancing purposes. int

SubResource

Name Description Value
id Resource ID. string

FrontendEndpoint

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Frontend endpoint FrontendEndpointProperties

FrontendEndpointProperties

Name Description Value
hostName The host name of the frontendEndpoint. Must be a domain name. string
sessionAffinityEnabledState Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
sessionAffinityTtlSeconds UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable. int
webApplicationFirewallPolicyLink Defines the Web Application Firewall policy for each host (if applicable) FrontendEndpointUpdateParametersWebApplicationFirewa...

FrontendEndpointUpdateParametersWebApplicationFirewa...

Name Description Value
id Resource ID. string

HealthProbeSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the health probe settings HealthProbeSettingsProperties

HealthProbeSettingsProperties

Name Description Value
intervalInSeconds The number of seconds between health probes. int
path The path to use for the health probe. Default is / string
protocol Protocol scheme to use for this probe 'Http'
'Https'

LoadBalancingSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the load balancing settings LoadBalancingSettingsProperties

LoadBalancingSettingsProperties

Name Description Value
additionalLatencyMilliseconds The additional latency in milliseconds for probes to fall into the lowest latency bucket int
sampleSize The number of samples to consider for load balancing decisions int
successfulSamplesRequired The number of samples within the sample period that must succeed int

RoutingRule

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Routing Rule RoutingRuleProperties

RoutingRuleProperties

Name Description Value
acceptedProtocols Protocol schemes to match for this rule String array containing any of:
'Http'
'Https'
backendPool A reference to the BackendPool which this rule routes to. SubResource
cacheConfiguration The caching configuration associated with this rule. CacheConfiguration
customForwardingPath A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path. string
enabledState Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
forwardingProtocol Protocol this rule will use when forwarding traffic to backends. 'HttpOnly'
'HttpsOnly'
'MatchRequest'
frontendEndpoints Frontend endpoints associated with this rule SubResource[]
patternsToMatch The route patterns of the rule. string[]

CacheConfiguration

Name Description Value
dynamicCompression Whether to use dynamic compression for cached content 'Disabled'
'Enabled'
queryParameterStripDirective Treatment of URL query terms when forming the cache key. 'StripAll'
'StripNone'

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Create Azure Front Door in front of Azure API Management

Deploy to Azure
This sample demonstrates how to use Azure Front Door as a global load balancer in front of Azure API Management.
Create a basic Front Door

Deploy to Azure
This template creates a basic Front Door configuration with a single backend.
Create Front Door with caching enabled for certain routes

Deploy to Azure
This template creates a Front Door with caching enabled for the defined routing configuration thus caching any static assets for your workload.
Create a Front Door with multiple backends and backend pools

Deploy to Azure
This template creates a Front Door with load balancing configured for multiple backends in a backend pool and also across backend pools based on URL path.
Create a Front Door with HTTP to HTTPS redirection

Deploy to Azure
This template creates a Front Door configuration for HTTP to HTTPS redirection.
Add custom domain and managed certificate with Front Door

Deploy to Azure
This template onboards and secures a custom domain with Front Door
Add custom domain and custom certificate with Front Door

Deploy to Azure
This template onboards and secures a custom domain with Front Door with a customer-managed certificate
Control Health Probes for your backends on Front Door

Deploy to Azure
This template updates your Front Door to change the health probe settings by setting the probe path and also the intervals in which the probes will be sent.
Create Front Door with Active-Standby config

Deploy to Azure
This template creates a Front Door that demonstrates priority-based routing for Active-Standby application topology.
Configure Session Affinity for your Front Door host names

Deploy to Azure
This template updates a Front Door to enable session affinity for your frontend host, thereby, sending subsequent traffic from the same user session to the same backend.

ARM template resource definition

The frontDoors resource type can be deployed to:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.Network/frontDoors resource, add the following JSON to your template.

{
  "type": "Microsoft.Network/frontDoors",
  "apiVersion": "2018-08-01",
  "name": "string",
  "location": "string",
  "tags": {
    "tagName1": "tagValue1",
    "tagName2": "tagValue2"
  },
  "properties": {
    "backendPools": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "backends": [
            {
              "address": "string",
              "backendHostHeader": "string",
              "enabledState": "string",
              "httpPort": "int",
              "httpsPort": "int",
              "priority": "int",
              "weight": "int"
            }
          ],
          "healthProbeSettings": {
            "id": "string"
          },
          "loadBalancingSettings": {
            "id": "string"
          }
        }
      }
    ],
    "enabledState": "string",
    "friendlyName": "string",
    "frontendEndpoints": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "hostName": "string",
          "sessionAffinityEnabledState": "string",
          "sessionAffinityTtlSeconds": "int",
          "webApplicationFirewallPolicyLink": {
            "id": "string"
          }
        }
      }
    ],
    "healthProbeSettings": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "intervalInSeconds": "int",
          "path": "string",
          "protocol": "string"
        }
      }
    ],
    "loadBalancingSettings": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "additionalLatencyMilliseconds": "int",
          "sampleSize": "int",
          "successfulSamplesRequired": "int"
        }
      }
    ],
    "routingRules": [
      {
        "id": "string",
        "name": "string",
        "properties": {
          "acceptedProtocols": [ "string" ],
          "backendPool": {
            "id": "string"
          },
          "cacheConfiguration": {
            "dynamicCompression": "string",
            "queryParameterStripDirective": "string"
          },
          "customForwardingPath": "string",
          "enabledState": "string",
          "forwardingProtocol": "string",
          "frontendEndpoints": [
            {
              "id": "string"
            }
          ],
          "patternsToMatch": [ "string" ]
        }
      }
    ]
  }
}

Property values

frontDoors

Name Description Value
type The resource type 'Microsoft.Network/frontDoors'
apiVersion The resource api version '2018-08-01'
name The resource name string (required)

Character limit: 5-64

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric.

Resource name must be unique across Azure.
location Resource location. string
tags Resource tags. Dictionary of tag names and values. See Tags in templates
properties Properties of the Front Door Load Balancer FrontDoorProperties

FrontDoorProperties

Name Description Value
backendPools Backend pools available to routing rules. BackendPool[]
enabledState Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
friendlyName A friendly name for the frontDoor string
frontendEndpoints Frontend endpoints available to routing rules. FrontendEndpoint[]
healthProbeSettings Health probe settings associated with this Front Door instance. HealthProbeSettingsModel[]
loadBalancingSettings Load balancing settings associated with this Front Door instance. LoadBalancingSettingsModel[]
routingRules Routing rules associated with this Front Door. RoutingRule[]

BackendPool

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Backend Pool BackendPoolProperties

BackendPoolProperties

Name Description Value
backends The set of backends for this pool Backend[]
healthProbeSettings L7 health probe settings for a backend pool SubResource
loadBalancingSettings Load balancing settings for a backend pool SubResource

Backend

Name Description Value
address Location of the backend (IP address or FQDN) string
backendHostHeader The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host. string
enabledState Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
httpPort The HTTP TCP port number. Must be between 1 and 65535. int
httpsPort The HTTPS TCP port number. Must be between 1 and 65535. int
priority Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy. int
weight Weight of this endpoint for load balancing purposes. int

SubResource

Name Description Value
id Resource ID. string

FrontendEndpoint

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Frontend endpoint FrontendEndpointProperties

FrontendEndpointProperties

Name Description Value
hostName The host name of the frontendEndpoint. Must be a domain name. string
sessionAffinityEnabledState Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
sessionAffinityTtlSeconds UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable. int
webApplicationFirewallPolicyLink Defines the Web Application Firewall policy for each host (if applicable) FrontendEndpointUpdateParametersWebApplicationFirewa...

FrontendEndpointUpdateParametersWebApplicationFirewa...

Name Description Value
id Resource ID. string

HealthProbeSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the health probe settings HealthProbeSettingsProperties

HealthProbeSettingsProperties

Name Description Value
intervalInSeconds The number of seconds between health probes. int
path The path to use for the health probe. Default is / string
protocol Protocol scheme to use for this probe 'Http'
'Https'

LoadBalancingSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the load balancing settings LoadBalancingSettingsProperties

LoadBalancingSettingsProperties

Name Description Value
additionalLatencyMilliseconds The additional latency in milliseconds for probes to fall into the lowest latency bucket int
sampleSize The number of samples to consider for load balancing decisions int
successfulSamplesRequired The number of samples within the sample period that must succeed int

RoutingRule

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Routing Rule RoutingRuleProperties

RoutingRuleProperties

Name Description Value
acceptedProtocols Protocol schemes to match for this rule String array containing any of:
'Http'
'Https'
backendPool A reference to the BackendPool which this rule routes to. SubResource
cacheConfiguration The caching configuration associated with this rule. CacheConfiguration
customForwardingPath A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path. string
enabledState Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled' 'Disabled'
'Enabled'
forwardingProtocol Protocol this rule will use when forwarding traffic to backends. 'HttpOnly'
'HttpsOnly'
'MatchRequest'
frontendEndpoints Frontend endpoints associated with this rule SubResource[]
patternsToMatch The route patterns of the rule. string[]

CacheConfiguration

Name Description Value
dynamicCompression Whether to use dynamic compression for cached content 'Disabled'
'Enabled'
queryParameterStripDirective Treatment of URL query terms when forming the cache key. 'StripAll'
'StripNone'

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Create Azure Front Door in front of Azure API Management

Deploy to Azure
This sample demonstrates how to use Azure Front Door as a global load balancer in front of Azure API Management.
Create a basic Front Door

Deploy to Azure
This template creates a basic Front Door configuration with a single backend.
Create Front Door with caching enabled for certain routes

Deploy to Azure
This template creates a Front Door with caching enabled for the defined routing configuration thus caching any static assets for your workload.
Create a Front Door with multiple backends and backend pools

Deploy to Azure
This template creates a Front Door with load balancing configured for multiple backends in a backend pool and also across backend pools based on URL path.
Create a Front Door with HTTP to HTTPS redirection

Deploy to Azure
This template creates a Front Door configuration for HTTP to HTTPS redirection.
Add custom domain and managed certificate with Front Door

Deploy to Azure
This template onboards and secures a custom domain with Front Door
Add custom domain and custom certificate with Front Door

Deploy to Azure
This template onboards and secures a custom domain with Front Door with a customer-managed certificate
Control Health Probes for your backends on Front Door

Deploy to Azure
This template updates your Front Door to change the health probe settings by setting the probe path and also the intervals in which the probes will be sent.
Create Front Door with Active-Standby config

Deploy to Azure
This template creates a Front Door that demonstrates priority-based routing for Active-Standby application topology.
Configure Session Affinity for your Front Door host names

Deploy to Azure
This template updates a Front Door to enable session affinity for your frontend host, thereby, sending subsequent traffic from the same user session to the same backend.

Terraform (AzAPI provider) resource definition

The frontDoors resource type can be deployed to:

  • Resource groups

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.Network/frontDoors resource, add the following Terraform to your template.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Network/frontDoors@2018-08-01"
  name = "string"
  location = "string"
  parent_id = "string"
  tags = {
    tagName1 = "tagValue1"
    tagName2 = "tagValue2"
  }
  body = jsonencode({
    properties = {
      backendPools = [
        {
          id = "string"
          name = "string"
          properties = {
            backends = [
              {
                address = "string"
                backendHostHeader = "string"
                enabledState = "string"
                httpPort = int
                httpsPort = int
                priority = int
                weight = int
              }
            ]
            healthProbeSettings = {
              id = "string"
            }
            loadBalancingSettings = {
              id = "string"
            }
          }
        }
      ]
      enabledState = "string"
      friendlyName = "string"
      frontendEndpoints = [
        {
          id = "string"
          name = "string"
          properties = {
            hostName = "string"
            sessionAffinityEnabledState = "string"
            sessionAffinityTtlSeconds = int
            webApplicationFirewallPolicyLink = {
              id = "string"
            }
          }
        }
      ]
      healthProbeSettings = [
        {
          id = "string"
          name = "string"
          properties = {
            intervalInSeconds = int
            path = "string"
            protocol = "string"
          }
        }
      ]
      loadBalancingSettings = [
        {
          id = "string"
          name = "string"
          properties = {
            additionalLatencyMilliseconds = int
            sampleSize = int
            successfulSamplesRequired = int
          }
        }
      ]
      routingRules = [
        {
          id = "string"
          name = "string"
          properties = {
            acceptedProtocols = [
              "string"
            ]
            backendPool = {
              id = "string"
            }
            cacheConfiguration = {
              dynamicCompression = "string"
              queryParameterStripDirective = "string"
            }
            customForwardingPath = "string"
            enabledState = "string"
            forwardingProtocol = "string"
            frontendEndpoints = [
              {
                id = "string"
              }
            ]
            patternsToMatch = [
              "string"
            ]
          }
        }
      ]
    }
  })
}

Property values

frontDoors

Name Description Value
type The resource type "Microsoft.Network/frontDoors@2018-08-01"
name The resource name string (required)

Character limit: 5-64

Valid characters:
Alphanumerics and hyphens.

Start and end with alphanumeric.

Resource name must be unique across Azure.
location Resource location. string
parent_id To deploy to a resource group, use the ID of that resource group. string (required)
tags Resource tags. Dictionary of tag names and values.
properties Properties of the Front Door Load Balancer FrontDoorProperties

FrontDoorProperties

Name Description Value
backendPools Backend pools available to routing rules. BackendPool[]
enabledState Operational status of the Front Door load balancer. Permitted values are 'Enabled' or 'Disabled' "Disabled"
"Enabled"
friendlyName A friendly name for the frontDoor string
frontendEndpoints Frontend endpoints available to routing rules. FrontendEndpoint[]
healthProbeSettings Health probe settings associated with this Front Door instance. HealthProbeSettingsModel[]
loadBalancingSettings Load balancing settings associated with this Front Door instance. LoadBalancingSettingsModel[]
routingRules Routing rules associated with this Front Door. RoutingRule[]

BackendPool

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Backend Pool BackendPoolProperties

BackendPoolProperties

Name Description Value
backends The set of backends for this pool Backend[]
healthProbeSettings L7 health probe settings for a backend pool SubResource
loadBalancingSettings Load balancing settings for a backend pool SubResource

Backend

Name Description Value
address Location of the backend (IP address or FQDN) string
backendHostHeader The value to use as the host header sent to the backend. If blank or unspecified, this defaults to the incoming host. string
enabledState Whether to enable use of this backend. Permitted values are 'Enabled' or 'Disabled' "Disabled"
"Enabled"
httpPort The HTTP TCP port number. Must be between 1 and 65535. int
httpsPort The HTTPS TCP port number. Must be between 1 and 65535. int
priority Priority to use for load balancing. Higher priorities will not be used for load balancing if any lower priority backend is healthy. int
weight Weight of this endpoint for load balancing purposes. int

SubResource

Name Description Value
id Resource ID. string

FrontendEndpoint

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Frontend endpoint FrontendEndpointProperties

FrontendEndpointProperties

Name Description Value
hostName The host name of the frontendEndpoint. Must be a domain name. string
sessionAffinityEnabledState Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled' "Disabled"
"Enabled"
sessionAffinityTtlSeconds UNUSED. This field will be ignored. The TTL to use in seconds for session affinity, if applicable. int
webApplicationFirewallPolicyLink Defines the Web Application Firewall policy for each host (if applicable) FrontendEndpointUpdateParametersWebApplicationFirewa...

FrontendEndpointUpdateParametersWebApplicationFirewa...

Name Description Value
id Resource ID. string

HealthProbeSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the health probe settings HealthProbeSettingsProperties

HealthProbeSettingsProperties

Name Description Value
intervalInSeconds The number of seconds between health probes. int
path The path to use for the health probe. Default is / string
protocol Protocol scheme to use for this probe "Http"
"Https"

LoadBalancingSettingsModel

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the load balancing settings LoadBalancingSettingsProperties

LoadBalancingSettingsProperties

Name Description Value
additionalLatencyMilliseconds The additional latency in milliseconds for probes to fall into the lowest latency bucket int
sampleSize The number of samples to consider for load balancing decisions int
successfulSamplesRequired The number of samples within the sample period that must succeed int

RoutingRule

Name Description Value
id Resource ID. string
name Resource name. string
properties Properties of the Front Door Routing Rule RoutingRuleProperties

RoutingRuleProperties

Name Description Value
acceptedProtocols Protocol schemes to match for this rule String array containing any of:
"Http"
"Https"
backendPool A reference to the BackendPool which this rule routes to. SubResource
cacheConfiguration The caching configuration associated with this rule. CacheConfiguration
customForwardingPath A custom path used to rewrite resource paths matched by this rule. Leave empty to use incoming path. string
enabledState Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled' "Disabled"
"Enabled"
forwardingProtocol Protocol this rule will use when forwarding traffic to backends. "HttpOnly"
"HttpsOnly"
"MatchRequest"
frontendEndpoints Frontend endpoints associated with this rule SubResource[]
patternsToMatch The route patterns of the rule. string[]

CacheConfiguration

Name Description Value
dynamicCompression Whether to use dynamic compression for cached content "Disabled"
"Enabled"
queryParameterStripDirective Treatment of URL query terms when forming the cache key. "StripAll"
"StripNone"