param appName string param location string = resourceGroup().location var storageAccountName = '${substring(appName,0,10)}${uniqueString(resourceGroup().id)}' var hostingPlanName = '${appName}${uniqueString(resourceGroup().id)}' var appInsightsName = '${appName}${uniqueString(resourceGroup().id)}' var functionAppName = appName resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = { name: storageAccountName location: location kind: 'StorageV2' sku: { name: 'Standard_LRS' } } resource appInsights 'Microsoft.Insights/components@2020-02-02' = { name: appInsightsName location: location kind: 'web' properties: { Application_Type: 'web' publicNetworkAccessForIngestion: 'Enabled' publicNetworkAccessForQuery: 'Enabled' } tags: { 'hidden-link:/subscriptions/${subscription().id}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Web/sites/${functionAppName}': 'Resource' } } resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: hostingPlanName location: location sku: { name: 'Y1' tier: 'Dynamic' } properties:{ reserved: true } } resource functionAppName_resource 'Microsoft.Web/sites@2022-03-01' = { name: functionAppName location: location kind: 'functionapp,linux' properties: { serverFarmId: hostingPlan.id clientAffinityEnabled: true httpsOnly: true siteConfig: { http20Enabled: true remoteDebuggingEnabled: false minTlsVersion: '1.2' linuxFxVersion: 'dotnet|6.0' ftpsState: 'Disabled' managedServiceIdentityId: 1 appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: appInsights.properties.InstrumentationKey } { name: 'SCM_DO_BUILD_DURING_DEPLOYMENT' value: 'false' } { name: 'FUNCTIONS_EXTENSION_VERSION' value: '~4' } { name: 'FUNCTIONS_WORKER_RUNTIME' value: 'dotnet' } { name: 'AzureWebJobsStorage' value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}' } ] } } dependsOn: [ ] }