Web App Args
A web app, a mobile app backend, or an API app. Uses Azure REST API version 2024-04-01. In version 2.x of the Azure Native provider, it used API version 2022-09-01. Other available API versions: 2016-08-01, 2018-02-01, 2018-11-01, 2019-08-01, 2020-06-01, 2020-09-01, 2020-10-01, 2020-12-01, 2021-01-01, 2021-01-15, 2021-02-01, 2021-03-01, 2022-03-01, 2022-09-01, 2023-01-01, 2023-12-01. These can be accessed by generating a local SDK package using the CLI command pulumi package add azure-native web [ApiVersion]
. See the ../../../version-guide/#accessing-any-api-version-via-local-packages for details.
Example Usage
Clone web app
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var webApp = new AzureNative.Web.WebApp("webApp", new()
{
CloningInfo = new AzureNative.Web.Inputs.CloningInfoArgs
{
AppSettingsOverrides =
{
{ "Setting1", "NewValue1" },
{ "Setting3", "NewValue5" },
},
CloneCustomHostNames = true,
CloneSourceControl = true,
ConfigureLoadBalancing = false,
HostingEnvironment = "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/hostingenvironments/aseforsites",
Overwrite = false,
SourceWebAppId = "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/sites/srcsiteg478",
SourceWebAppLocation = "West Europe",
},
Kind = "app",
Location = "East US",
Name = "sitef6141",
ResourceGroupName = "testrg123",
});
});
package main
import (
web "github.com/pulumi/pulumi-azure-native-sdk/web/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := web.NewWebApp(ctx, "webApp", &web.WebAppArgs{
CloningInfo: &web.CloningInfoArgs{
AppSettingsOverrides: pulumi.StringMap{
"Setting1": pulumi.String("NewValue1"),
"Setting3": pulumi.String("NewValue5"),
},
CloneCustomHostNames: pulumi.Bool(true),
CloneSourceControl: pulumi.Bool(true),
ConfigureLoadBalancing: pulumi.Bool(false),
HostingEnvironment: pulumi.String("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/hostingenvironments/aseforsites"),
Overwrite: pulumi.Bool(false),
SourceWebAppId: pulumi.String("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/sites/srcsiteg478"),
SourceWebAppLocation: pulumi.String("West Europe"),
},
Kind: pulumi.String("app"),
Location: pulumi.String("East US"),
Name: pulumi.String("sitef6141"),
ResourceGroupName: pulumi.String("testrg123"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.web.WebApp;
import com.pulumi.azurenative.web.WebAppArgs;
import com.pulumi.azurenative.web.inputs.CloningInfoArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var webApp = new WebApp("webApp", WebAppArgs.builder()
.cloningInfo(CloningInfoArgs.builder()
.appSettingsOverrides(Map.ofEntries(
Map.entry("Setting1", "NewValue1"),
Map.entry("Setting3", "NewValue5")
))
.cloneCustomHostNames(true)
.cloneSourceControl(true)
.configureLoadBalancing(false)
.hostingEnvironment("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/hostingenvironments/aseforsites")
.overwrite(false)
.sourceWebAppId("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg456/providers/Microsoft.Web/sites/srcsiteg478")
.sourceWebAppLocation("West Europe")
.build())
.kind("app")
.location("East US")
.name("sitef6141")
.resourceGroupName("testrg123")
.build());
}
}
Create or Update Flex Consumption function app
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var webApp = new AzureNative.Web.WebApp("webApp", new()
{
FunctionAppConfig = new AzureNative.Web.Inputs.FunctionAppConfigArgs
{
Deployment = new AzureNative.Web.Inputs.FunctionsDeploymentArgs
{
Storage = new AzureNative.Web.Inputs.FunctionsDeploymentStorageArgs
{
Authentication = new AzureNative.Web.Inputs.FunctionsDeploymentAuthenticationArgs
{
StorageAccountConnectionStringName = "TheAppSettingName",
Type = AzureNative.Web.AuthenticationType.StorageAccountConnectionString,
},
Type = AzureNative.Web.FunctionsDeploymentStorageType.BlobContainer,
Value = "https://storageAccountName.blob.core.windows.net/containername",
},
},
Runtime = new AzureNative.Web.Inputs.FunctionsRuntimeArgs
{
Name = AzureNative.Web.RuntimeName.Python,
Version = "3.11",
},
ScaleAndConcurrency = new AzureNative.Web.Inputs.FunctionsScaleAndConcurrencyArgs
{
InstanceMemoryMB = 2048,
MaximumInstanceCount = 100,
},
},
Kind = "functionapp,linux",
Location = "East US",
Name = "sitef6141",
ResourceGroupName = "testrg123",
SiteConfig = new AzureNative.Web.Inputs.SiteConfigArgs
{
AppSettings = new[]
{
new AzureNative.Web.Inputs.NameValuePairArgs
{
Name = "AzureWebJobsStorage",
Value = "DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net",
},
new AzureNative.Web.Inputs.NameValuePairArgs
{
Name = "APPLICATIONINSIGHTS_CONNECTION_STRING",
Value = "InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized",
},
},
},
});
});
package main
import (
web "github.com/pulumi/pulumi-azure-native-sdk/web/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := web.NewWebApp(ctx, "webApp", &web.WebAppArgs{
FunctionAppConfig: &web.FunctionAppConfigArgs{
Deployment: &web.FunctionsDeploymentArgs{
Storage: &web.FunctionsDeploymentStorageArgs{
Authentication: &web.FunctionsDeploymentAuthenticationArgs{
StorageAccountConnectionStringName: pulumi.String("TheAppSettingName"),
Type: pulumi.String(web.AuthenticationTypeStorageAccountConnectionString),
},
Type: pulumi.String(web.FunctionsDeploymentStorageTypeBlobContainer),
Value: pulumi.String("https://storageAccountName.blob.core.windows.net/containername"),
},
},
Runtime: &web.FunctionsRuntimeArgs{
Name: pulumi.String(web.RuntimeNamePython),
Version: pulumi.String("3.11"),
},
ScaleAndConcurrency: &web.FunctionsScaleAndConcurrencyArgs{
InstanceMemoryMB: pulumi.Int(2048),
MaximumInstanceCount: pulumi.Int(100),
},
},
Kind: pulumi.String("functionapp,linux"),
Location: pulumi.String("East US"),
Name: pulumi.String("sitef6141"),
ResourceGroupName: pulumi.String("testrg123"),
SiteConfig: &web.SiteConfigArgs{
AppSettings: web.NameValuePairArray{
&web.NameValuePairArgs{
Name: pulumi.String("AzureWebJobsStorage"),
Value: pulumi.String("DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net"),
},
&web.NameValuePairArgs{
Name: pulumi.String("APPLICATIONINSIGHTS_CONNECTION_STRING"),
Value: pulumi.String("InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.web.WebApp;
import com.pulumi.azurenative.web.WebAppArgs;
import com.pulumi.azurenative.web.inputs.FunctionAppConfigArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentStorageArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentAuthenticationArgs;
import com.pulumi.azurenative.web.inputs.FunctionsRuntimeArgs;
import com.pulumi.azurenative.web.inputs.FunctionsScaleAndConcurrencyArgs;
import com.pulumi.azurenative.web.inputs.SiteConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var webApp = new WebApp("webApp", WebAppArgs.builder()
.functionAppConfig(FunctionAppConfigArgs.builder()
.deployment(FunctionsDeploymentArgs.builder()
.storage(FunctionsDeploymentStorageArgs.builder()
.authentication(FunctionsDeploymentAuthenticationArgs.builder()
.storageAccountConnectionStringName("TheAppSettingName")
.type("StorageAccountConnectionString")
.build())
.type("blobContainer")
.value("https://storageAccountName.blob.core.windows.net/containername")
.build())
.build())
.runtime(FunctionsRuntimeArgs.builder()
.name("python")
.version("3.11")
.build())
.scaleAndConcurrency(FunctionsScaleAndConcurrencyArgs.builder()
.instanceMemoryMB(2048)
.maximumInstanceCount(100)
.build())
.build())
.kind("functionapp,linux")
.location("East US")
.name("sitef6141")
.resourceGroupName("testrg123")
.siteConfig(SiteConfigArgs.builder()
.appSettings(
NameValuePairArgs.builder()
.name("AzureWebJobsStorage")
.value("DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net")
.build(),
NameValuePairArgs.builder()
.name("APPLICATIONINSIGHTS_CONNECTION_STRING")
.value("InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized")
.build())
.build())
.build());
}
}
Create or Update Flex Consumption function app with details
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var webApp = new AzureNative.Web.WebApp("webApp", new()
{
FunctionAppConfig = new AzureNative.Web.Inputs.FunctionAppConfigArgs
{
Deployment = new AzureNative.Web.Inputs.FunctionsDeploymentArgs
{
Storage = new AzureNative.Web.Inputs.FunctionsDeploymentStorageArgs
{
Authentication = new AzureNative.Web.Inputs.FunctionsDeploymentAuthenticationArgs
{
StorageAccountConnectionStringName = "TheAppSettingName",
Type = AzureNative.Web.AuthenticationType.StorageAccountConnectionString,
},
Type = AzureNative.Web.FunctionsDeploymentStorageType.BlobContainer,
Value = "https://storageAccountName.blob.core.windows.net/containername",
},
},
Runtime = new AzureNative.Web.Inputs.FunctionsRuntimeArgs
{
Name = AzureNative.Web.RuntimeName.Python,
Version = "3.11",
},
ScaleAndConcurrency = new AzureNative.Web.Inputs.FunctionsScaleAndConcurrencyArgs
{
AlwaysReady = new[]
{
new AzureNative.Web.Inputs.FunctionsAlwaysReadyConfigArgs
{
InstanceCount = 2,
Name = "http",
},
},
InstanceMemoryMB = 2048,
MaximumInstanceCount = 100,
Triggers = new AzureNative.Web.Inputs.FunctionsScaleAndConcurrencyTriggersArgs
{
Http = new AzureNative.Web.Inputs.FunctionsScaleAndConcurrencyHttpArgs
{
PerInstanceConcurrency = 16,
},
},
},
},
Kind = "functionapp,linux",
Location = "East US",
Name = "sitef6141",
ResourceGroupName = "testrg123",
SiteConfig = new AzureNative.Web.Inputs.SiteConfigArgs
{
AppSettings = new[]
{
new AzureNative.Web.Inputs.NameValuePairArgs
{
Name = "AzureWebJobsStorage",
Value = "DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net",
},
new AzureNative.Web.Inputs.NameValuePairArgs
{
Name = "APPLICATIONINSIGHTS_CONNECTION_STRING",
Value = "InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized",
},
},
},
});
});
package main
import (
web "github.com/pulumi/pulumi-azure-native-sdk/web/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := web.NewWebApp(ctx, "webApp", &web.WebAppArgs{
FunctionAppConfig: &web.FunctionAppConfigArgs{
Deployment: &web.FunctionsDeploymentArgs{
Storage: &web.FunctionsDeploymentStorageArgs{
Authentication: &web.FunctionsDeploymentAuthenticationArgs{
StorageAccountConnectionStringName: pulumi.String("TheAppSettingName"),
Type: pulumi.String(web.AuthenticationTypeStorageAccountConnectionString),
},
Type: pulumi.String(web.FunctionsDeploymentStorageTypeBlobContainer),
Value: pulumi.String("https://storageAccountName.blob.core.windows.net/containername"),
},
},
Runtime: &web.FunctionsRuntimeArgs{
Name: pulumi.String(web.RuntimeNamePython),
Version: pulumi.String("3.11"),
},
ScaleAndConcurrency: &web.FunctionsScaleAndConcurrencyArgs{
AlwaysReady: web.FunctionsAlwaysReadyConfigArray{
&web.FunctionsAlwaysReadyConfigArgs{
InstanceCount: pulumi.Int(2),
Name: pulumi.String("http"),
},
},
InstanceMemoryMB: pulumi.Int(2048),
MaximumInstanceCount: pulumi.Int(100),
Triggers: &web.FunctionsScaleAndConcurrencyTriggersArgs{
Http: &web.FunctionsScaleAndConcurrencyHttpArgs{
PerInstanceConcurrency: pulumi.Int(16),
},
},
},
},
Kind: pulumi.String("functionapp,linux"),
Location: pulumi.String("East US"),
Name: pulumi.String("sitef6141"),
ResourceGroupName: pulumi.String("testrg123"),
SiteConfig: &web.SiteConfigArgs{
AppSettings: web.NameValuePairArray{
&web.NameValuePairArgs{
Name: pulumi.String("AzureWebJobsStorage"),
Value: pulumi.String("DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net"),
},
&web.NameValuePairArgs{
Name: pulumi.String("APPLICATIONINSIGHTS_CONNECTION_STRING"),
Value: pulumi.String("InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.web.WebApp;
import com.pulumi.azurenative.web.WebAppArgs;
import com.pulumi.azurenative.web.inputs.FunctionAppConfigArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentStorageArgs;
import com.pulumi.azurenative.web.inputs.FunctionsDeploymentAuthenticationArgs;
import com.pulumi.azurenative.web.inputs.FunctionsRuntimeArgs;
import com.pulumi.azurenative.web.inputs.FunctionsScaleAndConcurrencyArgs;
import com.pulumi.azurenative.web.inputs.FunctionsScaleAndConcurrencyTriggersArgs;
import com.pulumi.azurenative.web.inputs.FunctionsScaleAndConcurrencyHttpArgs;
import com.pulumi.azurenative.web.inputs.SiteConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var webApp = new WebApp("webApp", WebAppArgs.builder()
.functionAppConfig(FunctionAppConfigArgs.builder()
.deployment(FunctionsDeploymentArgs.builder()
.storage(FunctionsDeploymentStorageArgs.builder()
.authentication(FunctionsDeploymentAuthenticationArgs.builder()
.storageAccountConnectionStringName("TheAppSettingName")
.type("StorageAccountConnectionString")
.build())
.type("blobContainer")
.value("https://storageAccountName.blob.core.windows.net/containername")
.build())
.build())
.runtime(FunctionsRuntimeArgs.builder()
.name("python")
.version("3.11")
.build())
.scaleAndConcurrency(FunctionsScaleAndConcurrencyArgs.builder()
.alwaysReady(FunctionsAlwaysReadyConfigArgs.builder()
.instanceCount(2)
.name("http")
.build())
.instanceMemoryMB(2048)
.maximumInstanceCount(100)
.triggers(FunctionsScaleAndConcurrencyTriggersArgs.builder()
.http(FunctionsScaleAndConcurrencyHttpArgs.builder()
.perInstanceConcurrency(16)
.build())
.build())
.build())
.build())
.kind("functionapp,linux")
.location("East US")
.name("sitef6141")
.resourceGroupName("testrg123")
.siteConfig(SiteConfigArgs.builder()
.appSettings(
NameValuePairArgs.builder()
.name("AzureWebJobsStorage")
.value("DefaultEndpointsProtocol=https;AccountName=StorageAccountName;AccountKey=Sanitized;EndpointSuffix=core.windows.net")
.build(),
NameValuePairArgs.builder()
.name("APPLICATIONINSIGHTS_CONNECTION_STRING")
.value("InstrumentationKey=Sanitized;IngestionEndpoint=Sanitized;LiveEndpoint=Sanitized")
.build())
.build())
.build());
}
}
Create or Update web app
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var webApp = new AzureNative.Web.WebApp("webApp", new()
{
Kind = "app",
Location = "East US",
Name = "sitef6141",
ResourceGroupName = "testrg123",
ServerFarmId = "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp",
});
});
package main
import (
web "github.com/pulumi/pulumi-azure-native-sdk/web/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := web.NewWebApp(ctx, "webApp", &web.WebAppArgs{
Kind: pulumi.String("app"),
Location: pulumi.String("East US"),
Name: pulumi.String("sitef6141"),
ResourceGroupName: pulumi.String("testrg123"),
ServerFarmId: pulumi.String("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.web.WebApp;
import com.pulumi.azurenative.web.WebAppArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var webApp = new WebApp("webApp", WebAppArgs.builder()
.kind("app")
.location("East US")
.name("sitef6141")
.resourceGroupName("testrg123")
.serverFarmId("/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Web/serverfarms/DefaultAsp")
.build());
}
}
Import
An existing resource can be imported using its type token, name, and identifier, e.g.
$ pulumi import azure-native:web:WebApp sitef6141 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}
Constructors
Properties
Specifies the scope of uniqueness for the default hostname during resource creation
true
to enable client affinity; false
to stop sending session affinity cookies, which route client requests in the same session to the same instance. Default is true
.
true
to enable client certificate authentication (TLS mutual authentication); otherwise, false
. Default is false
.
client certificate authentication comma-separated exclusion paths
This composes with ClientCertEnabled setting.
If specified during app creation, the app is cloned from a source app.
Size of the function container.
Unique identifier that verifies the custom domains assigned to the app. Customer will add this id to a txt record for verification.
Maximum allowed daily memory-time quota (applicable on dynamic apps only).
Dapr configuration of the app.
Property to configure various DNS related settings for a site.
Whether to use end to end encryption between the FrontEnd and the Worker
Extended Location.
Configuration specific of the Azure Function app.
App Service Environment to use for the app.
true
to disable the public hostnames of the app; otherwise, false
. If true
, the app is only accessible via API management process.
Hostname SSL states are used to manage the SSL bindings for app's hostnames.
Managed service identity.
Identity to use for Key Vault Reference authentication.
Azure Resource Manager ID of the customer's selected Managed Environment on which to host this app. This must be of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{managedEnvironmentName}
Property to allow or block all public traffic. Allowed Values: 'Enabled', 'Disabled' or an empty string.
Site redundancy mode
Function app resource requirements.
Name of the resource group to which the resource belongs.
true
to stop SCM (KUDU) site when the app is stopped; otherwise, false
. The default is false
.
Resource ID of the associated App Service plan, formatted as: "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}".
Configuration of the app.
Checks if Customer provided storage account is required
Azure Resource Manager ID of the Virtual network and subnet to be joined by Regional VNET Integration. This must be of the form /subscriptions/{subscriptionName}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}
To enable Backup and Restore operations over virtual network
To enable accessing content over virtual network
To enable pulling image over Virtual Network
Virtual Network Route All enabled. This causes all outbound traffic to have Virtual Network Security Groups and User Defined Routes applied.
Workload profile name for function app to execute on.