Microsoft.Web sites 2015-08-01

Bicep resource definition

The sites resource type can be deployed with operations that target:

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

Resource format

To create a Microsoft.Web/sites resource, add the following Bicep to your template.

resource symbolicname 'Microsoft.Web/sites@2015-08-01' = {
  kind: 'string'
  location: 'string'
  name: 'string'
  properties: {
    clientAffinityEnabled: bool
    clientCertEnabled: bool
    cloningInfo: {
      appSettingsOverrides: {
        {customized property}: 'string'
      }
      cloneCustomHostNames: bool
      cloneSourceControl: bool
      configureLoadBalancing: bool
      correlationId: 'string'
      hostingEnvironment: 'string'
      overwrite: bool
      sourceWebAppId: 'string'
      trafficManagerProfileId: 'string'
      trafficManagerProfileName: 'string'
    }
    containerSize: int
    enabled: bool
    gatewaySiteName: 'string'
    hostingEnvironmentProfile: {
      id: 'string'
      name: 'string'
      type: 'string'
    }
    hostNamesDisabled: bool
    hostNameSslStates: [
      {
        name: 'string'
        sslState: 'string'
        thumbprint: 'string'
        toUpdate: bool
        virtualIP: 'string'
      }
    ]
    maxNumberOfWorkers: int
    microService: 'string'
    name: 'string'
    scmSiteAlsoStopped: bool
    serverFarmId: 'string'
    siteConfig: {
      id: 'string'
      kind: 'string'
      location: 'string'
      name: 'string'
      properties: {
        alwaysOn: bool
        apiDefinition: {
          url: 'string'
        }
        appCommandLine: 'string'
        appSettings: [
          {
            name: 'string'
            value: 'string'
          }
        ]
        autoHealEnabled: bool
        autoHealRules: {
          actions: {
            actionType: 'string'
            customAction: {
              exe: 'string'
              parameters: 'string'
            }
            minProcessExecutionTime: 'string'
          }
          triggers: {
            privateBytesInKB: int
            requests: {
              count: int
              timeInterval: 'string'
            }
            slowRequests: {
              count: int
              timeInterval: 'string'
              timeTaken: 'string'
            }
            statusCodes: [
              {
                count: int
                status: int
                subStatus: int
                timeInterval: 'string'
                win32Status: int
              }
            ]
          }
        }
        autoSwapSlotName: 'string'
        connectionStrings: [
          {
            connectionString: 'string'
            name: 'string'
            type: 'string'
          }
        ]
        cors: {
          allowedOrigins: [
            'string'
          ]
        }
        defaultDocuments: [
          'string'
        ]
        detailedErrorLoggingEnabled: bool
        documentRoot: 'string'
        experiments: {
          rampUpRules: [
            {
              actionHostName: 'string'
              changeDecisionCallbackUrl: 'string'
              changeIntervalInMinutes: int
              changeStep: int
              maxReroutePercentage: int
              minReroutePercentage: int
              name: 'string'
              reroutePercentage: int
            }
          ]
        }
        handlerMappings: [
          {
            arguments: 'string'
            extension: 'string'
            scriptProcessor: 'string'
          }
        ]
        httpLoggingEnabled: bool
        ipSecurityRestrictions: [
          {
            ipAddress: 'string'
            subnetMask: 'string'
          }
        ]
        javaContainer: 'string'
        javaContainerVersion: 'string'
        javaVersion: 'string'
        limits: {
          maxDiskSizeInMb: int
          maxMemoryInMb: int
          maxPercentageCpu: int
        }
        loadBalancing: 'string'
        localMySqlEnabled: bool
        logsDirectorySizeLimit: int
        managedPipelineMode: 'string'
        metadata: [
          {
            name: 'string'
            value: 'string'
          }
        ]
        netFrameworkVersion: 'string'
        nodeVersion: 'string'
        numberOfWorkers: int
        phpVersion: 'string'
        publishingPassword: 'string'
        publishingUsername: 'string'
        pythonVersion: 'string'
        remoteDebuggingEnabled: bool
        remoteDebuggingVersion: 'string'
        requestTracingEnabled: bool
        requestTracingExpirationTime: 'string'
        scmType: 'string'
        tracingOptions: 'string'
        use32BitWorkerProcess: bool
        virtualApplications: [
          {
            physicalPath: 'string'
            preloadEnabled: bool
            virtualDirectories: [
              {
                physicalPath: 'string'
                virtualPath: 'string'
              }
            ]
            virtualPath: 'string'
          }
        ]
        vnetName: 'string'
        webSocketsEnabled: bool
      }
      tags: {
        {customized property}: 'string'
      }
      type: 'string'
    }
  }
  tags: {
    {customized property}: 'string'
  }
}

Property values

ApiDefinitionInfo

Name Description Value
url The URL of the API definition. string

AutoHealActions

Name Description Value
actionType ActionType - predefined action to be taken 'CustomAction'
'LogEvent'
'Recycle' (required)
customAction CustomAction - custom action to be taken AutoHealCustomAction
minProcessExecutionTime MinProcessExecutionTime - minimum time the process must execute
before taking the action
string

AutoHealCustomAction

Name Description Value
exe Executable to be run string
parameters Parameters for the executable string

AutoHealRules

Name Description Value
actions Actions - Actions to be executed when a rule is triggered AutoHealActions
triggers Triggers - Conditions that describe when to execute the auto-heal actions AutoHealTriggers

AutoHealTriggers

Name Description Value
privateBytesInKB PrivateBytesInKB - Defines a rule based on private bytes int
requests Requests - Defines a rule based on total requests RequestsBasedTrigger
slowRequests SlowRequests - Defines a rule based on request execution time SlowRequestsBasedTrigger
statusCodes StatusCodes - Defines a rule based on status codes StatusCodesBasedTrigger[]

CloningInfo

Name Description Value
appSettingsOverrides Application settings overrides for cloned web app. If specified these settings will override the settings cloned
from source web app. If not specified, application settings from source web app are retained.
CloningInfoAppSettingsOverrides
cloneCustomHostNames If true, clone custom hostnames from source web app bool
cloneSourceControl Clone source control from source web app bool
configureLoadBalancing If specified configure load balancing for source and clone site bool
correlationId Correlation Id of cloning operation. This id ties multiple cloning operations
together to use the same snapshot
string
hostingEnvironment Hosting environment string
overwrite Overwrite destination web app bool
sourceWebAppId ARM resource id of the source web app. Web app resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots
string
trafficManagerProfileId ARM resource id of the traffic manager profile to use if it exists. Traffic manager resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}
string
trafficManagerProfileName Name of traffic manager profile to create. This is only needed if traffic manager profile does not already exist string

CloningInfoAppSettingsOverrides

Name Description Value

ConnStringInfo

Name Description Value
connectionString Connection string value string
name Name of connection string string
type Type of database 'Custom'
'MySql'
'SQLAzure'
'SQLServer' (required)

CorsSettings

Name Description Value
allowedOrigins Gets or sets the list of origins that should be allowed to make cross-origin
calls (for example: http://example.com:12345). Use "*" to allow all.
string[]

Experiments

Name Description Value
rampUpRules List of {Microsoft.Web.Hosting.Administration.RampUpRule} objects. RampUpRule[]

HandlerMapping

Name Description Value
arguments Command-line arguments to be passed to the script processor. string
extension Requests with this extension will be handled using the specified FastCGI application. string
scriptProcessor The absolute path to the FastCGI application. string

HostingEnvironmentProfile

Name Description Value
id Resource id of the hostingEnvironment (App Service Environment) string
name Name of the hostingEnvironment (App Service Environment) (read only) string
type Resource type of the hostingEnvironment (App Service Environment) (read only) string

HostNameSslState

Name Description Value
name Host name string
sslState SSL type 'Disabled'
'IpBasedEnabled'
'SniEnabled' (required)
thumbprint SSL cert thumbprint string
toUpdate Set this flag to update existing host name bool
virtualIP Virtual IP address assigned to the host name if IP based SSL is enabled string

IpSecurityRestriction

Name Description Value
ipAddress IP address the security restriction is valid for string
subnetMask Subnet mask for the range of IP addresses the restriction is valid for string

Microsoft.Web/sites

Name Description Value
kind Kind of resource string
location Resource Location string (required)
name The resource name string (required)
properties SiteProperties
tags Resource tags Dictionary of tag names and values. See Tags in templates

NameValuePair

Name Description Value
name Pair name string
value Pair value string

RampUpRule

Name Description Value
actionHostName Hostname of a slot to which the traffic will be redirected if decided to. E.g. mysite-stage.azurewebsites.net string
changeDecisionCallbackUrl Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified. See TiPCallback site extension for the scaffold and contracts.
https://www.siteextensions.net/packages/TiPCallback/
string
changeIntervalInMinutes [Optional] Specifies interval in minutes to reevaluate ReroutePercentage int
changeStep [Optional] In auto ramp up scenario this is the step to add/remove from {Microsoft.Web.Hosting.Administration.RampUpRule.ReroutePercentage} until it reaches
{Microsoft.Web.Hosting.Administration.RampUpRule.MinReroutePercentage} or {Microsoft.Web.Hosting.Administration.RampUpRule.MaxReroutePercentage}. Site metrics are checked every N minutes specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeIntervalInMinutes}.
Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeDecisionCallbackUrl}
int
maxReroutePercentage [Optional] Specifies upper boundary below which ReroutePercentage will stay. int
minReroutePercentage [Optional] Specifies lower boundary above which ReroutePercentage will stay. int
name Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment. string
reroutePercentage Percentage of the traffic which will be redirected to {Microsoft.Web.Hosting.Administration.RampUpRule.ActionHostName} int

RequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string

ResourceTags

Name Description Value

ResourceTags

Name Description Value

SiteConfig

Name Description Value
id Resource Id string
kind Kind of resource string
location Resource Location string (required)
name Resource Name string
properties SiteConfigProperties
tags Resource tags ResourceTags
type Resource type string

SiteConfigProperties

Name Description Value
alwaysOn Always On bool
apiDefinition Information about the formal API definition for the web app. ApiDefinitionInfo
appCommandLine App Command Line to launch string
appSettings Application Settings NameValuePair[]
autoHealEnabled Auto heal enabled bool
autoHealRules Auto heal rules AutoHealRules
autoSwapSlotName Auto swap slot name string
connectionStrings Connection strings ConnStringInfo[]
cors Cross-Origin Resource Sharing (CORS) settings. CorsSettings
defaultDocuments Default documents string[]
detailedErrorLoggingEnabled Detailed error logging enabled bool
documentRoot Document root string
experiments This is work around for polymorphic types Experiments
handlerMappings Handler mappings HandlerMapping[]
httpLoggingEnabled HTTP logging Enabled bool
ipSecurityRestrictions Ip Security restrictions IpSecurityRestriction[]
javaContainer Java container string
javaContainerVersion Java container version string
javaVersion Java version string
limits Site limits SiteLimits
loadBalancing Site load balancing 'LeastRequests'
'LeastResponseTime'
'RequestHash'
'WeightedRoundRobin'
'WeightedTotalTraffic'
localMySqlEnabled Local mysql enabled bool
logsDirectorySizeLimit HTTP Logs Directory size limit int
managedPipelineMode Managed pipeline mode 'Classic'
'Integrated'
metadata Site Metadata NameValuePair[]
netFrameworkVersion Net Framework Version string
nodeVersion Version of Node string
numberOfWorkers Number of workers int
phpVersion Version of PHP string
publishingPassword Publishing password string
publishingUsername Publishing user name string
pythonVersion Version of Python string
remoteDebuggingEnabled Remote Debugging Enabled bool
remoteDebuggingVersion Remote Debugging Version string
requestTracingEnabled Enable request tracing bool
requestTracingExpirationTime Request tracing expiration time string
scmType SCM type string
tracingOptions Tracing options string
use32BitWorkerProcess Use 32 bit worker process bool
virtualApplications Virtual applications VirtualApplication[]
vnetName Vnet name string
webSocketsEnabled Web socket enabled. bool

SiteLimits

Name Description Value
maxDiskSizeInMb Maximum allowed disk size usage in MB int
maxMemoryInMb Maximum allowed memory usage in MB int
maxPercentageCpu Maximum allowed CPU usage percentage int

SiteProperties

Name Description Value
clientAffinityEnabled Specifies if the client affinity is enabled when load balancing http request for multiple instances of the web app bool
clientCertEnabled Specifies if the client certificate is enabled for the web app bool
cloningInfo This is only valid for web app creation. If specified, web app is cloned from
a source web app
CloningInfo
containerSize Size of a function container int
enabled True if the site is enabled; otherwise, false. Setting this value to false disables the site (takes the site off line). bool
gatewaySiteName Name of gateway app associated with web app string
hostingEnvironmentProfile Specification for the hosting environment (App Service Environment) to use for the web app HostingEnvironmentProfile
hostNamesDisabled Specifies if the public hostnames are disabled the web app.
If set to true the app is only accessible via API Management process
bool
hostNameSslStates Hostname SSL states are used to manage the SSL bindings for site's hostnames. HostNameSslState[]
maxNumberOfWorkers Maximum number of workers
This only applies to function container
int
microService string
name Name of web app string
scmSiteAlsoStopped If set indicates whether to stop SCM (KUDU) site when the web app is stopped. Default is false. bool
serverFarmId string
siteConfig Configuration of web app SiteConfig

SlowRequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string
timeTaken TimeTaken string

StatusCodesBasedTrigger

Name Description Value
count Count int
status HTTP status code int
subStatus SubStatus int
timeInterval TimeInterval string
win32Status Win32 error code int

VirtualApplication

Name Description Value
physicalPath string
preloadEnabled bool
virtualDirectories VirtualDirectory[]
virtualPath string

VirtualDirectory

Name Description Value
physicalPath string
virtualPath string

Quickstart samples

The following quickstart samples deploy this resource type.

Bicep File Description
App Service Environment with Hosting Plan and Azure WebApp Creates an App Service Environment v2 with an ILB Address in a existing virtual network that will be privately availible. The App Service Environment will contain a Hosting Plan and a Azure Web App
App Service Quickstart - Linux App This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows app This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows app This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows container app This template is to be used with /azure/app-service/quickstart-arm-template
Application Gateway with internal API Management and Web App Application Gateway routing Internet traffic to a virtual network (internal mode) API Management instance which services a web API hosted in an Azure Web App.
Azure Cosmos DB Account with Web App This template deploys an Azure Cosmos DB account, an App Service Plan, and creates a Web App in the App Service Plan. It also adds two Application settings to the Web App that reference the Azure Cosmos DB account endpoint. This way solutions deployed to the Web App can connect to the Azure Cosmos DB account endpoint using those settings.
Azure Digital Twins with Function and Private Link service This template creates an Azure Digital Twins service configured with a Virtual Network connected Azure Function that can communicate through a Private Link Endpoint to Digital Twins. It also creates a Private DNS Zone to allow seamless hostname resolution of the Digital Twins Endpoint from the Virtual Network to the Private Endpoint internal subnet IP address. The hostname is stored as a setting to the Azure Function with name 'ADT_ENDPOINT'.
Azure Function app and an HTTP-triggered function This example deploys an Azure Function app and an HTTP-triggered function inline in the template. It also deploys a Key Vault and populates a secret with the function app's host key.
Azure Function App Hosted on Linux Consumption Plan This template provisions a function app on a Linux Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment.
Azure Function App with a Deployment Slot This template provisions a function app on a Premium plan with production slot and an additional deployment slot.
Azure Function App with Event Hub and Managed Identity his template provisions an Azure Function app on a Linux Consumption plan, along with an Event Hub, Azure Storage, and Application Insights. The function app is able to use managed identity to connect to the Event Hub and Storage account
Azure Function App with Virtual Network Integration This template provisions a function app on a Premium plan with regional virtual network integration enabled to a newly created virtual network.
Azure Traffic Manager web app example This template shows how to create an Azure Traffic Manager profile for an App Service.
Build a Web App on Linux with Azure database for MySQL This template provides a way to deploy Web Apps on Linux with Azure database for MySQL.
Create a CDN Profile, a CDN Endpoint and a Web App This template creates a CDN Profile and a CDN Endpoint with a Web App as the origin
Create a web app on Azure with Java 13 and Tomcat 9 enabled This template creates a web app on azure with Java 13 and Tomcat 9 enabled allowing you to run Java applications in Azure. Template was authored by Donovan Brown of Microsoft.
Create a Web App plus Redis Cache using a template This template creates an Azure Web App with Redis cache.
Create a Web App, PE and Application Gateway v2 This template creates an Azure Web App with Private endpoint in Azure Virtual Network Subnet , an Application Gateway v2. The Application Gateway is deployed in a vNet (subnet). The Web App restricts access to traffic from the subnet using private endpoint
Create a zero touch Azure Cosmos account and Azure Web App This template creates an Azure Cosmos account, injects the Cosmos DB endpoint and keys into Azure Web App settings, then deploys an ASP MVC web app from GitHub.
Create Function App and private endpoint-secured Storage This template allows you to deploy an Azure Function App that communicates with Azure Storage over private endpoints.
Deploy a basic Linux web app This template allows you to deploy an app service plan and a basic Linux web app
Deploy an app service with regional VNet integration This template allows you to deploy an app service plan and a basic Windows web app, with regional VNet integration enabled to a newly created virtual network
Deploy an AZ enabled Azure Function Premium plan This template allows you to deploy an Azure Function Premium plan with availability zones support, including an availability zones enabled storage account.
Deploy an Azure Function Premium plan with vnet integration This template allows you to deploy an Azure Function Premium plan with regional virtual network integration enabled to a newly created virtual network.
Django app This template allows you to create an App Service for deploying a Django app.
Flask app service This template allows you to create an App Service for deploying a Flask app.
Front Door Premium with App Service origin and Private Link This template creates a Front Door Premium and an App Service, and uses a private endpoint for Front Door to send traffic to the application.
Front Door Standard/Premium with App Service origin This template creates a Front Door Standard/Premium, an App Service, and configures the App Service to validate that traffic has come through the Front Door origin.
Front Door Standard/Premium with Azure Functions origin This template creates a Front Door Standard/Premium, an Azure Functions app, and configures the function app to validate that traffic has come through the Front Door origin.
Function App This template deploy an empty Function App and a hosting plan.
Function App secured by Azure Frontdoor This template allows you to deploy an azure premium function protected and published by Azure Frontdoor premium. The conenction between Azure Frontdoor and Azure Functions is protected by Azure Private Link.
Highly Available Multi-region Web App This template allows you to create a secure, highly available, multi-region end to end solution with two web apps in different regions behind Azure Front Door
Moesif API Analytics and Monetization The template will log API calls from Azure API Management to Moesif API analytics and monetization platform
Private Function App and private endpoint-secured Storage This template provisions a function app on a Premium plan that has private endpoints and communicates with Azure Storage over private endpoints.
Provision a function app on a Consumption plan This template provisions a function app on a Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment. There are other templates available for provisioning on a dedicated hosting plan.
Provision a function app running on an App Service Plan This template provisions a function app on a dedicated hosting plan, meaning it will be run and billed just like any App Service site.
Provision a Web App with a SQL Database This template provisions a Web App, a SQL Database, AutoScale settings, Alert rules, and App Insights. It configures a connection string in the web app for the database.
Provision Consumption plan function with a Deployment Slot This template provisions a function app on a Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment. There are other templates available for provisioning on a dedicated hosting plan.
Secure N-tier Web App This template allows you to create a secure end to end solution with two web apps with staging slots, front end and back end, front end will consume securely the back through VNet injection and Private Endpoint
Sonarqube Docker Web App on Linux with Azure SQL This template deploys Sonarqube in an Azure App Service web app Linux container using the official Sonarqube image and backed by an Azure SQL Server.
Sonarqube Docker Web App on Linux with PostgreSQL This template provides a easy way to deploy a Sonarqube docker image (alpine tag) on a Linux Web App with Azure database for PostgreSQL(Preview)
SonarQube on Web App with PostgreSQL and VNet integration This template provides easy to deploy SonarQube to Web App on Linux with PostgreSQL Flexible Server, VNet integration and private DNS.
Web App Deployment from GitHub This template allows you to create an WebApp linked with a GitHub Repository linked.
Web App w/ Application Insights sending to Log Analytics This template will is to help support the new API versions of microsoft.insights/components. Starting with 2020-02-02-preview WorkspaceID will be required when creating Application Inisghts.This template will deploy the App Service Plan, App Service, Application Insights, Log Analytics Workspace and hook it all together.
Web App with Azure database for MySQL This template provides a easy way to deploy web app on Azure App Service Web Apps with Azure database for MySQL.
Web App with Managed Identity, SQL Server and ΑΙ Simple example to deploy Azure infrastructure for app + data + managed identity + monitoring
Web App with VNet Injection and Private Endpoint This template allows you to create a secure end to end solution with two web apps, front end and back end, front end will consume securely the back through VNet injection and Private Endpoint

ARM template resource definition

The sites resource type can be deployed with operations that target:

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

Resource format

To create a Microsoft.Web/sites resource, add the following JSON to your template.

{
  "type": "Microsoft.Web/sites",
  "apiVersion": "2015-08-01",
  "name": "string",
  "kind": "string",
  "location": "string",
  "properties": {
    "clientAffinityEnabled": "bool",
    "clientCertEnabled": "bool",
    "cloningInfo": {
      "appSettingsOverrides": {
        "{customized property}": "string"
      },
      "cloneCustomHostNames": "bool",
      "cloneSourceControl": "bool",
      "configureLoadBalancing": "bool",
      "correlationId": "string",
      "hostingEnvironment": "string",
      "overwrite": "bool",
      "sourceWebAppId": "string",
      "trafficManagerProfileId": "string",
      "trafficManagerProfileName": "string"
    },
    "containerSize": "int",
    "enabled": "bool",
    "gatewaySiteName": "string",
    "hostingEnvironmentProfile": {
      "id": "string",
      "name": "string",
      "type": "string"
    },
    "hostNamesDisabled": "bool",
    "hostNameSslStates": [
      {
        "name": "string",
        "sslState": "string",
        "thumbprint": "string",
        "toUpdate": "bool",
        "virtualIP": "string"
      }
    ],
    "maxNumberOfWorkers": "int",
    "microService": "string",
    "name": "string",
    "scmSiteAlsoStopped": "bool",
    "serverFarmId": "string",
    "siteConfig": {
      "id": "string",
      "kind": "string",
      "location": "string",
      "name": "string",
      "properties": {
        "alwaysOn": "bool",
        "apiDefinition": {
          "url": "string"
        },
        "appCommandLine": "string",
        "appSettings": [
          {
            "name": "string",
            "value": "string"
          }
        ],
        "autoHealEnabled": "bool",
        "autoHealRules": {
          "actions": {
            "actionType": "string",
            "customAction": {
              "exe": "string",
              "parameters": "string"
            },
            "minProcessExecutionTime": "string"
          },
          "triggers": {
            "privateBytesInKB": "int",
            "requests": {
              "count": "int",
              "timeInterval": "string"
            },
            "slowRequests": {
              "count": "int",
              "timeInterval": "string",
              "timeTaken": "string"
            },
            "statusCodes": [
              {
                "count": "int",
                "status": "int",
                "subStatus": "int",
                "timeInterval": "string",
                "win32Status": "int"
              }
            ]
          }
        },
        "autoSwapSlotName": "string",
        "connectionStrings": [
          {
            "connectionString": "string",
            "name": "string",
            "type": "string"
          }
        ],
        "cors": {
          "allowedOrigins": [ "string" ]
        },
        "defaultDocuments": [ "string" ],
        "detailedErrorLoggingEnabled": "bool",
        "documentRoot": "string",
        "experiments": {
          "rampUpRules": [
            {
              "actionHostName": "string",
              "changeDecisionCallbackUrl": "string",
              "changeIntervalInMinutes": "int",
              "changeStep": "int",
              "maxReroutePercentage": "int",
              "minReroutePercentage": "int",
              "name": "string",
              "reroutePercentage": "int"
            }
          ]
        },
        "handlerMappings": [
          {
            "arguments": "string",
            "extension": "string",
            "scriptProcessor": "string"
          }
        ],
        "httpLoggingEnabled": "bool",
        "ipSecurityRestrictions": [
          {
            "ipAddress": "string",
            "subnetMask": "string"
          }
        ],
        "javaContainer": "string",
        "javaContainerVersion": "string",
        "javaVersion": "string",
        "limits": {
          "maxDiskSizeInMb": "int",
          "maxMemoryInMb": "int",
          "maxPercentageCpu": "int"
        },
        "loadBalancing": "string",
        "localMySqlEnabled": "bool",
        "logsDirectorySizeLimit": "int",
        "managedPipelineMode": "string",
        "metadata": [
          {
            "name": "string",
            "value": "string"
          }
        ],
        "netFrameworkVersion": "string",
        "nodeVersion": "string",
        "numberOfWorkers": "int",
        "phpVersion": "string",
        "publishingPassword": "string",
        "publishingUsername": "string",
        "pythonVersion": "string",
        "remoteDebuggingEnabled": "bool",
        "remoteDebuggingVersion": "string",
        "requestTracingEnabled": "bool",
        "requestTracingExpirationTime": "string",
        "scmType": "string",
        "tracingOptions": "string",
        "use32BitWorkerProcess": "bool",
        "virtualApplications": [
          {
            "physicalPath": "string",
            "preloadEnabled": "bool",
            "virtualDirectories": [
              {
                "physicalPath": "string",
                "virtualPath": "string"
              }
            ],
            "virtualPath": "string"
          }
        ],
        "vnetName": "string",
        "webSocketsEnabled": "bool"
      },
      "tags": {
        "{customized property}": "string"
      },
      "type": "string"
    }
  },
  "tags": {
    "{customized property}": "string"
  }
}

Property values

ApiDefinitionInfo

Name Description Value
url The URL of the API definition. string

AutoHealActions

Name Description Value
actionType ActionType - predefined action to be taken 'CustomAction'
'LogEvent'
'Recycle' (required)
customAction CustomAction - custom action to be taken AutoHealCustomAction
minProcessExecutionTime MinProcessExecutionTime - minimum time the process must execute
before taking the action
string

AutoHealCustomAction

Name Description Value
exe Executable to be run string
parameters Parameters for the executable string

AutoHealRules

Name Description Value
actions Actions - Actions to be executed when a rule is triggered AutoHealActions
triggers Triggers - Conditions that describe when to execute the auto-heal actions AutoHealTriggers

AutoHealTriggers

Name Description Value
privateBytesInKB PrivateBytesInKB - Defines a rule based on private bytes int
requests Requests - Defines a rule based on total requests RequestsBasedTrigger
slowRequests SlowRequests - Defines a rule based on request execution time SlowRequestsBasedTrigger
statusCodes StatusCodes - Defines a rule based on status codes StatusCodesBasedTrigger[]

CloningInfo

Name Description Value
appSettingsOverrides Application settings overrides for cloned web app. If specified these settings will override the settings cloned
from source web app. If not specified, application settings from source web app are retained.
CloningInfoAppSettingsOverrides
cloneCustomHostNames If true, clone custom hostnames from source web app bool
cloneSourceControl Clone source control from source web app bool
configureLoadBalancing If specified configure load balancing for source and clone site bool
correlationId Correlation Id of cloning operation. This id ties multiple cloning operations
together to use the same snapshot
string
hostingEnvironment Hosting environment string
overwrite Overwrite destination web app bool
sourceWebAppId ARM resource id of the source web app. Web app resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots
string
trafficManagerProfileId ARM resource id of the traffic manager profile to use if it exists. Traffic manager resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}
string
trafficManagerProfileName Name of traffic manager profile to create. This is only needed if traffic manager profile does not already exist string

CloningInfoAppSettingsOverrides

Name Description Value

ConnStringInfo

Name Description Value
connectionString Connection string value string
name Name of connection string string
type Type of database 'Custom'
'MySql'
'SQLAzure'
'SQLServer' (required)

CorsSettings

Name Description Value
allowedOrigins Gets or sets the list of origins that should be allowed to make cross-origin
calls (for example: http://example.com:12345). Use "*" to allow all.
string[]

Experiments

Name Description Value
rampUpRules List of {Microsoft.Web.Hosting.Administration.RampUpRule} objects. RampUpRule[]

HandlerMapping

Name Description Value
arguments Command-line arguments to be passed to the script processor. string
extension Requests with this extension will be handled using the specified FastCGI application. string
scriptProcessor The absolute path to the FastCGI application. string

HostingEnvironmentProfile

Name Description Value
id Resource id of the hostingEnvironment (App Service Environment) string
name Name of the hostingEnvironment (App Service Environment) (read only) string
type Resource type of the hostingEnvironment (App Service Environment) (read only) string

HostNameSslState

Name Description Value
name Host name string
sslState SSL type 'Disabled'
'IpBasedEnabled'
'SniEnabled' (required)
thumbprint SSL cert thumbprint string
toUpdate Set this flag to update existing host name bool
virtualIP Virtual IP address assigned to the host name if IP based SSL is enabled string

IpSecurityRestriction

Name Description Value
ipAddress IP address the security restriction is valid for string
subnetMask Subnet mask for the range of IP addresses the restriction is valid for string

Microsoft.Web/sites

Name Description Value
apiVersion The api version '2015-08-01'
kind Kind of resource string
location Resource Location string (required)
name The resource name string (required)
properties SiteProperties
tags Resource tags Dictionary of tag names and values. See Tags in templates
type The resource type 'Microsoft.Web/sites'

NameValuePair

Name Description Value
name Pair name string
value Pair value string

RampUpRule

Name Description Value
actionHostName Hostname of a slot to which the traffic will be redirected if decided to. E.g. mysite-stage.azurewebsites.net string
changeDecisionCallbackUrl Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified. See TiPCallback site extension for the scaffold and contracts.
https://www.siteextensions.net/packages/TiPCallback/
string
changeIntervalInMinutes [Optional] Specifies interval in minutes to reevaluate ReroutePercentage int
changeStep [Optional] In auto ramp up scenario this is the step to add/remove from {Microsoft.Web.Hosting.Administration.RampUpRule.ReroutePercentage} until it reaches
{Microsoft.Web.Hosting.Administration.RampUpRule.MinReroutePercentage} or {Microsoft.Web.Hosting.Administration.RampUpRule.MaxReroutePercentage}. Site metrics are checked every N minutes specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeIntervalInMinutes}.
Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeDecisionCallbackUrl}
int
maxReroutePercentage [Optional] Specifies upper boundary below which ReroutePercentage will stay. int
minReroutePercentage [Optional] Specifies lower boundary above which ReroutePercentage will stay. int
name Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment. string
reroutePercentage Percentage of the traffic which will be redirected to {Microsoft.Web.Hosting.Administration.RampUpRule.ActionHostName} int

RequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string

ResourceTags

Name Description Value

ResourceTags

Name Description Value

SiteConfig

Name Description Value
id Resource Id string
kind Kind of resource string
location Resource Location string (required)
name Resource Name string
properties SiteConfigProperties
tags Resource tags ResourceTags
type Resource type string

SiteConfigProperties

Name Description Value
alwaysOn Always On bool
apiDefinition Information about the formal API definition for the web app. ApiDefinitionInfo
appCommandLine App Command Line to launch string
appSettings Application Settings NameValuePair[]
autoHealEnabled Auto heal enabled bool
autoHealRules Auto heal rules AutoHealRules
autoSwapSlotName Auto swap slot name string
connectionStrings Connection strings ConnStringInfo[]
cors Cross-Origin Resource Sharing (CORS) settings. CorsSettings
defaultDocuments Default documents string[]
detailedErrorLoggingEnabled Detailed error logging enabled bool
documentRoot Document root string
experiments This is work around for polymorphic types Experiments
handlerMappings Handler mappings HandlerMapping[]
httpLoggingEnabled HTTP logging Enabled bool
ipSecurityRestrictions Ip Security restrictions IpSecurityRestriction[]
javaContainer Java container string
javaContainerVersion Java container version string
javaVersion Java version string
limits Site limits SiteLimits
loadBalancing Site load balancing 'LeastRequests'
'LeastResponseTime'
'RequestHash'
'WeightedRoundRobin'
'WeightedTotalTraffic'
localMySqlEnabled Local mysql enabled bool
logsDirectorySizeLimit HTTP Logs Directory size limit int
managedPipelineMode Managed pipeline mode 'Classic'
'Integrated'
metadata Site Metadata NameValuePair[]
netFrameworkVersion Net Framework Version string
nodeVersion Version of Node string
numberOfWorkers Number of workers int
phpVersion Version of PHP string
publishingPassword Publishing password string
publishingUsername Publishing user name string
pythonVersion Version of Python string
remoteDebuggingEnabled Remote Debugging Enabled bool
remoteDebuggingVersion Remote Debugging Version string
requestTracingEnabled Enable request tracing bool
requestTracingExpirationTime Request tracing expiration time string
scmType SCM type string
tracingOptions Tracing options string
use32BitWorkerProcess Use 32 bit worker process bool
virtualApplications Virtual applications VirtualApplication[]
vnetName Vnet name string
webSocketsEnabled Web socket enabled. bool

SiteLimits

Name Description Value
maxDiskSizeInMb Maximum allowed disk size usage in MB int
maxMemoryInMb Maximum allowed memory usage in MB int
maxPercentageCpu Maximum allowed CPU usage percentage int

SiteProperties

Name Description Value
clientAffinityEnabled Specifies if the client affinity is enabled when load balancing http request for multiple instances of the web app bool
clientCertEnabled Specifies if the client certificate is enabled for the web app bool
cloningInfo This is only valid for web app creation. If specified, web app is cloned from
a source web app
CloningInfo
containerSize Size of a function container int
enabled True if the site is enabled; otherwise, false. Setting this value to false disables the site (takes the site off line). bool
gatewaySiteName Name of gateway app associated with web app string
hostingEnvironmentProfile Specification for the hosting environment (App Service Environment) to use for the web app HostingEnvironmentProfile
hostNamesDisabled Specifies if the public hostnames are disabled the web app.
If set to true the app is only accessible via API Management process
bool
hostNameSslStates Hostname SSL states are used to manage the SSL bindings for site's hostnames. HostNameSslState[]
maxNumberOfWorkers Maximum number of workers
This only applies to function container
int
microService string
name Name of web app string
scmSiteAlsoStopped If set indicates whether to stop SCM (KUDU) site when the web app is stopped. Default is false. bool
serverFarmId string
siteConfig Configuration of web app SiteConfig

SlowRequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string
timeTaken TimeTaken string

StatusCodesBasedTrigger

Name Description Value
count Count int
status HTTP status code int
subStatus SubStatus int
timeInterval TimeInterval string
win32Status Win32 error code int

VirtualApplication

Name Description Value
physicalPath string
preloadEnabled bool
virtualDirectories VirtualDirectory[]
virtualPath string

VirtualDirectory

Name Description Value
physicalPath string
virtualPath string

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Airflow Docker Web App on Linux with PostgreSQL

Deploy to Azure
This template provides a easy way to deploy a puckel/docker-airflow image (latest tag) on a Linux Web App with Azure database for PostgreSQL
Airflow Web App with PostgreSQL database on App Services

Deploy to Azure
A template for deploying Airflow Web App with PostgreSQL database on App Services
App Service Environment with Azure SQL backend

Deploy to Azure
This template creates an App Service Environment with an Azure SQL backend along with private endpoints along with associated resources typically used in an private/isolated environment.
App Service Environment with Hosting Plan and Azure WebApp

Deploy to Azure
Creates an App Service Environment v2 with an ILB Address in a existing virtual network that will be privately availible. The App Service Environment will contain a Hosting Plan and a Azure Web App
App Service Quickstart - Linux App

Deploy to Azure
This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows app

Deploy to Azure
This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows app

Deploy to Azure
This template is to be used with /azure/app-service/quickstart-arm-template
App Service Quickstart - Windows container app

Deploy to Azure
This template is to be used with /azure/app-service/quickstart-arm-template
Application Gateway for a Web App with IP Restriction

Deploy to Azure
This template creates an application gateway in front of an Azure Web App with IP restriction enabled on the Web App.
Application Gateway with internal API Management and Web App

Deploy to Azure
Application Gateway routing Internet traffic to a virtual network (internal mode) API Management instance which services a web API hosted in an Azure Web App.
ASP.NET app

Deploy to Azure
This template allows you to create an App Service for deploying a ASP.NET app.
Azure Cosmos DB Account with Web App

Deploy to Azure
This template deploys an Azure Cosmos DB account, an App Service Plan, and creates a Web App in the App Service Plan. It also adds two Application settings to the Web App that reference the Azure Cosmos DB account endpoint. This way solutions deployed to the Web App can connect to the Azure Cosmos DB account endpoint using those settings.
Azure Digital Twins with Function and Private Link service

Deploy to Azure
This template creates an Azure Digital Twins service configured with a Virtual Network connected Azure Function that can communicate through a Private Link Endpoint to Digital Twins. It also creates a Private DNS Zone to allow seamless hostname resolution of the Digital Twins Endpoint from the Virtual Network to the Private Endpoint internal subnet IP address. The hostname is stored as a setting to the Azure Function with name 'ADT_ENDPOINT'.
Azure Function app and an HTTP-triggered function

Deploy to Azure
This example deploys an Azure Function app and an HTTP-triggered function inline in the template. It also deploys a Key Vault and populates a secret with the function app's host key.
Azure Function App Hosted on Dedicated Plan

Deploy to Azure
This template provisions a function app on a dedicated hosting plan, meaning it will be run and billed just like any App Service site.
Azure Function App Hosted on Linux Consumption Plan

Deploy to Azure
This template provisions a function app on a Linux Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment.
Azure Function App Hosted on Premium Plan

Deploy to Azure
This template provisions a function app on a Premium plan.
Azure Function App Hosted on Windows Consumption Plan

Deploy to Azure
This template provisions a function app on a Windows Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment.
Azure Function App with a Deployment Slot

Deploy to Azure
This template provisions a function app on a Premium plan with production slot and an additional deployment slot.
Azure Function App with Event Hub and Managed Identity

Deploy to Azure
his template provisions an Azure Function app on a Linux Consumption plan, along with an Event Hub, Azure Storage, and Application Insights. The function app is able to use managed identity to connect to the Event Hub and Storage account
Azure Function App with Virtual Network Integration

Deploy to Azure
This template provisions a function app on a Premium plan with regional virtual network integration enabled to a newly created virtual network.
Azure Logic App with Function

Deploy to Azure
This template creates a Serverless app in Azure with Logic Apps and Functions. The Logic App triggers on an HTTP POST, calls the Azure Function, and returns the response.
Azure Traffic Manager web app example

Deploy to Azure
This template shows how to create an Azure Traffic Manager profile for an App Service.
Buffalo Web App

Deploy to Azure
Start running your Golang Buffalo Application on Azure quickly and cheaply.
Build a Web App on Linux with Azure database for MySQL

Deploy to Azure
This template provides a way to deploy Web Apps on Linux with Azure database for MySQL.
Call custom APIs from Azure Logic Apps

Deploy to Azure
Although Logic Apps provides hundreds of connectors for various services, you might want to call APIs that run your own code. One of the easiest and most scalable ways to host your own web APIs is by using Azure App Service. This template deploys a Web app for your custom API and secures that API by using Azure Active Directory authentication.
Create a CDN Profile, a CDN Endpoint and a Web App

Deploy to Azure
This template creates a CDN Profile and a CDN Endpoint with a Web App as the origin
Create a function app and call it using a Custom Resource

Deploy to Azure
This template creates function app used as the workload for a custom resource provider in a template deployment.
Create a Web App + Redis Cache + SQL DB with a template

Deploy to Azure
This template creates an Azure Web App with Redis cache and a SQL Database.
Create a web app on Azure with Java 13 and Tomcat 9 enabled

Deploy to Azure
This template creates a web app on azure with Java 13 and Tomcat 9 enabled allowing you to run Java applications in Azure. Template was authored by Donovan Brown of Microsoft.
Create a web app on Azure with Python enabled

Deploy to Azure
This template creates a web app on azure with Python enabled allowing you to run Python applications in Azure. Template was authored by Donovan Brown of Microsoft.
Create a Web App plus Redis Cache using a template

Deploy to Azure
This template creates an Azure Web App with Redis cache.
Create a Web App protected by Application Gateway v2

Deploy to Azure
This template creates an Azure Web App with Access Restriction for an Application Gateway v2. The Application Gateway is deployed in a vNet (subnet) which has a 'Microsoft.Web' Service Endpoint enabled. The Web App restricts access to traffic from the subnet.
Create a Web App, PE and Application Gateway v2

Deploy to Azure
This template creates an Azure Web App with Private endpoint in Azure Virtual Network Subnet , an Application Gateway v2. The Application Gateway is deployed in a vNet (subnet). The Web App restricts access to traffic from the subnet using private endpoint
Create a zero touch Azure Cosmos account and Azure Web App

Deploy to Azure
This template creates an Azure Cosmos account, injects the Cosmos DB endpoint and keys into Azure Web App settings, then deploys an ASP MVC web app from GitHub.
Create an AppServicePlan and App in an App. Service Env. v2

Deploy to Azure
Create an AppServicePlan and App in an App Service Environment v2
Create an AppServicePlan and App in an ASE

Deploy to Azure
Create an AppServicePlan and App in an ASE
Create and assign a standard App Service Certificate

Deploy to Azure
Creates a standard App Service Certificate, verifies it using an App service App and creates SSL bindings once the certificate is ready
Create and assign a wildcard App Service Certificate

Deploy to Azure
Creates a wildcard App Service Certificate, verifies it using an App service Domain and creates SSL bindings on an App Service App once the certificate is ready
Create Azure App Service Environment With An Web App Added

Deploy to Azure
Creates an Azure App Service Environment inside A Virtual Network Subnet. This template also adds a Azure Web App inside the App Service Environment. Template originally authored by Callum Brankin of PixelPin
Create Azure Web app with Blob Storage connection string

Deploy to Azure
Creates an Azure Web app with Blob Storage connection string, Template originally authored by Jeff Bowles of Microsoft
Create Function App and private endpoint-secured Storage

Deploy to Azure
This template allows you to deploy an Azure Function App that communicates with Azure Storage over private endpoints.
Creates a function app with managed service identity

Deploy to Azure
Creates a function app with managed service identity enabled with Application Insights set up for logs and metrics.
Deploy a basic Linux web app

Deploy to Azure
This template allows you to deploy an app service plan and a basic Linux web app
Deploy an app service with regional VNet integration

Deploy to Azure
This template allows you to deploy an app service plan and a basic Windows web app, with regional VNet integration enabled to a newly created virtual network
Deploy an AZ enabled Azure Function Premium plan

Deploy to Azure
This template allows you to deploy an Azure Function Premium plan with availability zones support, including an availability zones enabled storage account.
Deploy an Azure Function Premium plan with vnet integration

Deploy to Azure
This template allows you to deploy an Azure Function Premium plan with regional virtual network integration enabled to a newly created virtual network.
Django app

Deploy to Azure
This template allows you to create an App Service for deploying a Django app.
Enterprise Governance-AppService, SQL DB, AD, OMS, Runbooks

Deploy to Azure
Cloud adoption for an Enterprise, small or large, require responsible and efficient governance models to derive value from their cloud deployments. CloudWise (a code-name for the solution), is a composite solution available from Azure Partner QuickStarts, is an adoption enabler for Customers, System Integrators and Partners alike, that delivers a self-serviceable, automated governance and operations solution, focused on Optimizing Your Costs, Improve Your Application(s) Reliability, Reducing Business Risk. The solution highlights the core governance pillars of Visibility and Control.
EPiserverCMS in Azure

Deploy to Azure
This template allows you to create resources required for EpiServerCMS deployment in Azure
eShop Website with ILB ASE

Deploy to Azure
An App Service Environment is a Premium service plan option of Azure App Service that provides a fully isolated and dedicated environment for securely running Azure App Service apps at high scale, including Web Apps, Mobile Apps, and API Apps.
Flask app service

Deploy to Azure
This template allows you to create an App Service for deploying a Flask app.
Front Door Premium with App Service origin and Private Link

Deploy to Azure
This template creates a Front Door Premium and an App Service, and uses a private endpoint for Front Door to send traffic to the application.
Front Door Standard/Premium with App Service origin

Deploy to Azure
This template creates a Front Door Standard/Premium, an App Service, and configures the App Service to validate that traffic has come through the Front Door origin.
Front Door Standard/Premium with Azure Functions origin

Deploy to Azure
This template creates a Front Door Standard/Premium, an Azure Functions app, and configures the function app to validate that traffic has come through the Front Door origin.
Function App

Deploy to Azure
This template deploy an empty Function App and a hosting plan.
Function App on Linux Consumption Plan with Remote Build

Deploy to Azure
This template provisions a function app on a Linux Consumption plan and perform remote build during code deployment. The app runs on demand and you're billed per execution, with no standing resource committment.
Function App secured by Azure Frontdoor

Deploy to Azure
This template allows you to deploy an azure premium function protected and published by Azure Frontdoor premium. The conenction between Azure Frontdoor and Azure Functions is protected by Azure Private Link.
Highly Available Multi-region Web App

Deploy to Azure
This template allows you to create a secure, highly available, multi-region end to end solution with two web apps in different regions behind Azure Front Door
ILB App Service Environment with Azure Firewall

Deploy to Azure
Resource Manager templates and parameters demonstrating how to deploy App Service environment with Azure Firewall integration
Java CI/CD using Jenkins and Azure Web Apps

Deploy to Azure
This is a sample for Java CI/CD using Jenkins and Azure Web Apps.
Kentico Xperience

Deploy to Azure
This template facilitates the deployment of resources required to host Kentico Xperience environments in Microsoft Azure.
Moesif API Analytics and Monetization

Deploy to Azure
The template will log API calls from Azure API Management to Moesif API analytics and monetization platform
Node App Service

Deploy to Azure
This template allows you to create an App Service for deploying a Node app.
Orchard CMS Video Portal Web App

Deploy to Azure
This template provides a easy way to deploy Orchard CMS on Azure App Service Web Apps with the Azure Media Services module enabled and configured.
Private Function App and private endpoint-secured Storage

Deploy to Azure
This template provisions a function app on a Premium plan that has private endpoints and communicates with Azure Storage over private endpoints.
Provision a function app on a Consumption plan

Deploy to Azure
This template provisions a function app on a Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment. There are other templates available for provisioning on a dedicated hosting plan.
Provision a function app running on an App Service Plan

Deploy to Azure
This template provisions a function app on a dedicated hosting plan, meaning it will be run and billed just like any App Service site.
Provision a function app with source deployed from GitHub

Deploy to Azure
This template deploys a Function App hosted in a new dedicated App Service Plan. The Function App has a child resource that enables continous integration and deploys the function code from a GitHub repository.
Provision a Mobile App with a SQL Database

Deploy to Azure
This template provisions a Mobile App, SQL Database, and Notification Hub. It configures a connection string in the mobile app for the database and notification hub.
Provision a Web App with a SQL Database

Deploy to Azure
This template provisions a Web App, a SQL Database, AutoScale settings, Alert rules, and App Insights. It configures a connection string in the web app for the database.
Provision Consumption plan function with a Deployment Slot

Deploy to Azure
This template provisions a function app on a Consumption plan, which is a dynamic hosting plan. The app runs on demand and you're billed per execution, with no standing resource committment. There are other templates available for provisioning on a dedicated hosting plan.
PubNub Realtime Gateway for Azure Event Hubs

Deploy to Azure
The PubNub Realtime Gateway for Azure provides a realtime data stream bridge between the PubNub Data Stream Network and Azure Event Hubs. -- consider it a bi-directional bridge between PubNub and Azure!
Scalable Umbraco CMS Web App

Deploy to Azure
This template provides a easy way to deploy umbraco CMS web app on Azure App Service Web Apps.
Secure N-tier Web App

Deploy to Azure
This template allows you to create a secure end to end solution with two web apps with staging slots, front end and back end, front end will consume securely the back through VNet injection and Private Endpoint
Simple Umbraco CMS Web App

Deploy to Azure
This template provides a easy way to deploy umbraco CMS web app on Azure App Service Web Apps.
Sonarqube Docker Web App on Linux with Azure SQL

Deploy to Azure
This template deploys Sonarqube in an Azure App Service web app Linux container using the official Sonarqube image and backed by an Azure SQL Server.
Sonarqube Docker Web App on Linux with MySQL

Deploy to Azure
This template provides a easy way to deploy a Sonarqube docker image (alpine tag) on a Linux Web App with Azure database for MySQL
Sonarqube Docker Web App on Linux with PostgreSQL

Deploy to Azure
This template provides a easy way to deploy a Sonarqube docker image (alpine tag) on a Linux Web App with Azure database for PostgreSQL(Preview)
SonarQube on Web App with PostgreSQL and VNet integration

Deploy to Azure
This template provides easy to deploy SonarQube to Web App on Linux with PostgreSQL Flexible Server, VNet integration and private DNS.
Web App Deployment from GitHub

Deploy to Azure
This template allows you to create an WebApp linked with a GitHub Repository linked.
Web App integration with Key Vault

Deploy to Azure
Deploy a Web App certificate from Key Vault secret and use it for creating SSL binding
Web App on Linux with PostgreSQL

Deploy to Azure
This template provides a easy way to deploy Web App on Linux with Azure database for PostgreSQL(Preview).
Web App on Linux with PostgreSQL

Deploy to Azure
This template provides a easy way to deploy Web App on Linux with Azure database for PostgreSQL.
Web App w/ Application Insights sending to Log Analytics

Deploy to Azure
This template will is to help support the new API versions of microsoft.insights/components. Starting with 2020-02-02-preview WorkspaceID will be required when creating Application Inisghts.This template will deploy the App Service Plan, App Service, Application Insights, Log Analytics Workspace and hook it all together.
Web App with a custom domain and optional SSL binding

Deploy to Azure
Create a web app and with a custom domain and optionally add SSL certificate for https encryption.
Web App with a SQL Database, Azure Cosmos DB, Azure Search

Deploy to Azure
This template provisions a Web App, a SQL Database, Azure Cosmos DB, Azure Search and Application Insights.
Web App with Azure database for MySQL

Deploy to Azure
This template provides a easy way to deploy web app on Azure App Service Web Apps with Azure database for MySQL.
Web App with custom Deployment slots

Deploy to Azure
This template provides an easy way to deploy a web app with custom deployment slots on Azure Web Apps.
Web App with diagnostics logging to Blob Container

Deploy to Azure
Deploy a Web App with diagnostics logging to Storage Account Blob Container enabled.
Web App with Managed Identity, SQL Server and ΑΙ

Deploy to Azure
Simple example to deploy Azure infrastructure for app + data + managed identity + monitoring
Web App with Private Endpoint

Deploy to Azure
This template allows you to create a Web App and expose it through Private Endpoint
Web App with VNet Injection and Private Endpoint

Deploy to Azure
This template allows you to create a secure end to end solution with two web apps, front end and back end, front end will consume securely the back through VNet injection and Private Endpoint
WebApp consuming a Azure SQL Private Endpoint

Deploy to Azure
This template shows how to create a Web app that consumes a private endpoint pointing to Azure SQL Server
WordPress on App Service with MySQL In App

Deploy to Azure
This template deploys a WordPress Web App on a Windows App Service with MySQL in app

Terraform (AzAPI provider) resource definition

The sites resource type can be deployed with operations that target:

  • Resource groups

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

Resource format

To create a Microsoft.Web/sites resource, add the following Terraform to your template.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Web/sites@2015-08-01"
  name = "string"
  kind = "string"
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = jsonencode({
    properties = {
      clientAffinityEnabled = bool
      clientCertEnabled = bool
      cloningInfo = {
        appSettingsOverrides = {
          {customized property} = "string"
        }
        cloneCustomHostNames = bool
        cloneSourceControl = bool
        configureLoadBalancing = bool
        correlationId = "string"
        hostingEnvironment = "string"
        overwrite = bool
        sourceWebAppId = "string"
        trafficManagerProfileId = "string"
        trafficManagerProfileName = "string"
      }
      containerSize = int
      enabled = bool
      gatewaySiteName = "string"
      hostingEnvironmentProfile = {
        id = "string"
        name = "string"
        type = "string"
      }
      hostNamesDisabled = bool
      hostNameSslStates = [
        {
          name = "string"
          sslState = "string"
          thumbprint = "string"
          toUpdate = bool
          virtualIP = "string"
        }
      ]
      maxNumberOfWorkers = int
      microService = "string"
      name = "string"
      scmSiteAlsoStopped = bool
      serverFarmId = "string"
      siteConfig = {
        id = "string"
        kind = "string"
        location = "string"
        name = "string"
        properties = {
          alwaysOn = bool
          apiDefinition = {
            url = "string"
          }
          appCommandLine = "string"
          appSettings = [
            {
              name = "string"
              value = "string"
            }
          ]
          autoHealEnabled = bool
          autoHealRules = {
            actions = {
              actionType = "string"
              customAction = {
                exe = "string"
                parameters = "string"
              }
              minProcessExecutionTime = "string"
            }
            triggers = {
              privateBytesInKB = int
              requests = {
                count = int
                timeInterval = "string"
              }
              slowRequests = {
                count = int
                timeInterval = "string"
                timeTaken = "string"
              }
              statusCodes = [
                {
                  count = int
                  status = int
                  subStatus = int
                  timeInterval = "string"
                  win32Status = int
                }
              ]
            }
          }
          autoSwapSlotName = "string"
          connectionStrings = [
            {
              connectionString = "string"
              name = "string"
              type = "string"
            }
          ]
          cors = {
            allowedOrigins = [
              "string"
            ]
          }
          defaultDocuments = [
            "string"
          ]
          detailedErrorLoggingEnabled = bool
          documentRoot = "string"
          experiments = {
            rampUpRules = [
              {
                actionHostName = "string"
                changeDecisionCallbackUrl = "string"
                changeIntervalInMinutes = int
                changeStep = int
                maxReroutePercentage = int
                minReroutePercentage = int
                name = "string"
                reroutePercentage = int
              }
            ]
          }
          handlerMappings = [
            {
              arguments = "string"
              extension = "string"
              scriptProcessor = "string"
            }
          ]
          httpLoggingEnabled = bool
          ipSecurityRestrictions = [
            {
              ipAddress = "string"
              subnetMask = "string"
            }
          ]
          javaContainer = "string"
          javaContainerVersion = "string"
          javaVersion = "string"
          limits = {
            maxDiskSizeInMb = int
            maxMemoryInMb = int
            maxPercentageCpu = int
          }
          loadBalancing = "string"
          localMySqlEnabled = bool
          logsDirectorySizeLimit = int
          managedPipelineMode = "string"
          metadata = [
            {
              name = "string"
              value = "string"
            }
          ]
          netFrameworkVersion = "string"
          nodeVersion = "string"
          numberOfWorkers = int
          phpVersion = "string"
          publishingPassword = "string"
          publishingUsername = "string"
          pythonVersion = "string"
          remoteDebuggingEnabled = bool
          remoteDebuggingVersion = "string"
          requestTracingEnabled = bool
          requestTracingExpirationTime = "string"
          scmType = "string"
          tracingOptions = "string"
          use32BitWorkerProcess = bool
          virtualApplications = [
            {
              physicalPath = "string"
              preloadEnabled = bool
              virtualDirectories = [
                {
                  physicalPath = "string"
                  virtualPath = "string"
                }
              ]
              virtualPath = "string"
            }
          ]
          vnetName = "string"
          webSocketsEnabled = bool
        }
        tags = {
          {customized property} = "string"
        }
        type = "string"
      }
    }
  })
}

Property values

ApiDefinitionInfo

Name Description Value
url The URL of the API definition. string

AutoHealActions

Name Description Value
actionType ActionType - predefined action to be taken 'CustomAction'
'LogEvent'
'Recycle' (required)
customAction CustomAction - custom action to be taken AutoHealCustomAction
minProcessExecutionTime MinProcessExecutionTime - minimum time the process must execute
before taking the action
string

AutoHealCustomAction

Name Description Value
exe Executable to be run string
parameters Parameters for the executable string

AutoHealRules

Name Description Value
actions Actions - Actions to be executed when a rule is triggered AutoHealActions
triggers Triggers - Conditions that describe when to execute the auto-heal actions AutoHealTriggers

AutoHealTriggers

Name Description Value
privateBytesInKB PrivateBytesInKB - Defines a rule based on private bytes int
requests Requests - Defines a rule based on total requests RequestsBasedTrigger
slowRequests SlowRequests - Defines a rule based on request execution time SlowRequestsBasedTrigger
statusCodes StatusCodes - Defines a rule based on status codes StatusCodesBasedTrigger[]

CloningInfo

Name Description Value
appSettingsOverrides Application settings overrides for cloned web app. If specified these settings will override the settings cloned
from source web app. If not specified, application settings from source web app are retained.
CloningInfoAppSettingsOverrides
cloneCustomHostNames If true, clone custom hostnames from source web app bool
cloneSourceControl Clone source control from source web app bool
configureLoadBalancing If specified configure load balancing for source and clone site bool
correlationId Correlation Id of cloning operation. This id ties multiple cloning operations
together to use the same snapshot
string
hostingEnvironment Hosting environment string
overwrite Overwrite destination web app bool
sourceWebAppId ARM resource id of the source web app. Web app resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} for production slots and
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} for other slots
string
trafficManagerProfileId ARM resource id of the traffic manager profile to use if it exists. Traffic manager resource id is of the form
/subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}
string
trafficManagerProfileName Name of traffic manager profile to create. This is only needed if traffic manager profile does not already exist string

CloningInfoAppSettingsOverrides

Name Description Value

ConnStringInfo

Name Description Value
connectionString Connection string value string
name Name of connection string string
type Type of database 'Custom'
'MySql'
'SQLAzure'
'SQLServer' (required)

CorsSettings

Name Description Value
allowedOrigins Gets or sets the list of origins that should be allowed to make cross-origin
calls (for example: http://example.com:12345). Use "*" to allow all.
string[]

Experiments

Name Description Value
rampUpRules List of {Microsoft.Web.Hosting.Administration.RampUpRule} objects. RampUpRule[]

HandlerMapping

Name Description Value
arguments Command-line arguments to be passed to the script processor. string
extension Requests with this extension will be handled using the specified FastCGI application. string
scriptProcessor The absolute path to the FastCGI application. string

HostingEnvironmentProfile

Name Description Value
id Resource id of the hostingEnvironment (App Service Environment) string
name Name of the hostingEnvironment (App Service Environment) (read only) string
type Resource type of the hostingEnvironment (App Service Environment) (read only) string

HostNameSslState

Name Description Value
name Host name string
sslState SSL type 'Disabled'
'IpBasedEnabled'
'SniEnabled' (required)
thumbprint SSL cert thumbprint string
toUpdate Set this flag to update existing host name bool
virtualIP Virtual IP address assigned to the host name if IP based SSL is enabled string

IpSecurityRestriction

Name Description Value
ipAddress IP address the security restriction is valid for string
subnetMask Subnet mask for the range of IP addresses the restriction is valid for string

Microsoft.Web/sites

Name Description Value
kind Kind of resource string
location Resource Location string (required)
name The resource name string (required)
properties SiteProperties
tags Resource tags Dictionary of tag names and values.
type The resource type "Microsoft.Web/sites@2015-08-01"

NameValuePair

Name Description Value
name Pair name string
value Pair value string

RampUpRule

Name Description Value
actionHostName Hostname of a slot to which the traffic will be redirected if decided to. E.g. mysite-stage.azurewebsites.net string
changeDecisionCallbackUrl Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified. See TiPCallback site extension for the scaffold and contracts.
https://www.siteextensions.net/packages/TiPCallback/
string
changeIntervalInMinutes [Optional] Specifies interval in minutes to reevaluate ReroutePercentage int
changeStep [Optional] In auto ramp up scenario this is the step to add/remove from {Microsoft.Web.Hosting.Administration.RampUpRule.ReroutePercentage} until it reaches
{Microsoft.Web.Hosting.Administration.RampUpRule.MinReroutePercentage} or {Microsoft.Web.Hosting.Administration.RampUpRule.MaxReroutePercentage}. Site metrics are checked every N minutes specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeIntervalInMinutes}.
Custom decision algorithm can be provided in TiPCallback site extension which Url can be specified in {Microsoft.Web.Hosting.Administration.RampUpRule.ChangeDecisionCallbackUrl}
int
maxReroutePercentage [Optional] Specifies upper boundary below which ReroutePercentage will stay. int
minReroutePercentage [Optional] Specifies lower boundary above which ReroutePercentage will stay. int
name Name of the routing rule. The recommended name would be to point to the slot which will receive the traffic in the experiment. string
reroutePercentage Percentage of the traffic which will be redirected to {Microsoft.Web.Hosting.Administration.RampUpRule.ActionHostName} int

RequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string

ResourceTags

Name Description Value

ResourceTags

Name Description Value

SiteConfig

Name Description Value
id Resource Id string
kind Kind of resource string
location Resource Location string (required)
name Resource Name string
properties SiteConfigProperties
tags Resource tags ResourceTags
type Resource type string

SiteConfigProperties

Name Description Value
alwaysOn Always On bool
apiDefinition Information about the formal API definition for the web app. ApiDefinitionInfo
appCommandLine App Command Line to launch string
appSettings Application Settings NameValuePair[]
autoHealEnabled Auto heal enabled bool
autoHealRules Auto heal rules AutoHealRules
autoSwapSlotName Auto swap slot name string
connectionStrings Connection strings ConnStringInfo[]
cors Cross-Origin Resource Sharing (CORS) settings. CorsSettings
defaultDocuments Default documents string[]
detailedErrorLoggingEnabled Detailed error logging enabled bool
documentRoot Document root string
experiments This is work around for polymorphic types Experiments
handlerMappings Handler mappings HandlerMapping[]
httpLoggingEnabled HTTP logging Enabled bool
ipSecurityRestrictions Ip Security restrictions IpSecurityRestriction[]
javaContainer Java container string
javaContainerVersion Java container version string
javaVersion Java version string
limits Site limits SiteLimits
loadBalancing Site load balancing 'LeastRequests'
'LeastResponseTime'
'RequestHash'
'WeightedRoundRobin'
'WeightedTotalTraffic'
localMySqlEnabled Local mysql enabled bool
logsDirectorySizeLimit HTTP Logs Directory size limit int
managedPipelineMode Managed pipeline mode 'Classic'
'Integrated'
metadata Site Metadata NameValuePair[]
netFrameworkVersion Net Framework Version string
nodeVersion Version of Node string
numberOfWorkers Number of workers int
phpVersion Version of PHP string
publishingPassword Publishing password string
publishingUsername Publishing user name string
pythonVersion Version of Python string
remoteDebuggingEnabled Remote Debugging Enabled bool
remoteDebuggingVersion Remote Debugging Version string
requestTracingEnabled Enable request tracing bool
requestTracingExpirationTime Request tracing expiration time string
scmType SCM type string
tracingOptions Tracing options string
use32BitWorkerProcess Use 32 bit worker process bool
virtualApplications Virtual applications VirtualApplication[]
vnetName Vnet name string
webSocketsEnabled Web socket enabled. bool

SiteLimits

Name Description Value
maxDiskSizeInMb Maximum allowed disk size usage in MB int
maxMemoryInMb Maximum allowed memory usage in MB int
maxPercentageCpu Maximum allowed CPU usage percentage int

SiteProperties

Name Description Value
clientAffinityEnabled Specifies if the client affinity is enabled when load balancing http request for multiple instances of the web app bool
clientCertEnabled Specifies if the client certificate is enabled for the web app bool
cloningInfo This is only valid for web app creation. If specified, web app is cloned from
a source web app
CloningInfo
containerSize Size of a function container int
enabled True if the site is enabled; otherwise, false. Setting this value to false disables the site (takes the site off line). bool
gatewaySiteName Name of gateway app associated with web app string
hostingEnvironmentProfile Specification for the hosting environment (App Service Environment) to use for the web app HostingEnvironmentProfile
hostNamesDisabled Specifies if the public hostnames are disabled the web app.
If set to true the app is only accessible via API Management process
bool
hostNameSslStates Hostname SSL states are used to manage the SSL bindings for site's hostnames. HostNameSslState[]
maxNumberOfWorkers Maximum number of workers
This only applies to function container
int
microService string
name Name of web app string
scmSiteAlsoStopped If set indicates whether to stop SCM (KUDU) site when the web app is stopped. Default is false. bool
serverFarmId string
siteConfig Configuration of web app SiteConfig

SlowRequestsBasedTrigger

Name Description Value
count Count int
timeInterval TimeInterval string
timeTaken TimeTaken string

StatusCodesBasedTrigger

Name Description Value
count Count int
status HTTP status code int
subStatus SubStatus int
timeInterval TimeInterval string
win32Status Win32 error code int

VirtualApplication

Name Description Value
physicalPath string
preloadEnabled bool
virtualDirectories VirtualDirectory[]
virtualPath string

VirtualDirectory

Name Description Value
physicalPath string
virtualPath string