I'm trying to deploy a Function App using an ARM template and Params file into an existing but empty resource group. I'm getting the following error:
{
"id": "/subscriptions/XXX",
"operationId": "5D2F1EA84E184AF3",
"properties": {
"provisioningOperation": "Create",
"provisioningState": "Failed",
"timestamp": "2019-10-25T15:18:39.495039Z",
"duration": "PT3.9855754S",
"trackingId": "2bd91b5a-4655-4ad8-9d04-1ae7f10bfd20",
"statusCode": "BadRequest",
"statusMessage": {
"Code": "BadRequest",
"Message": "There was a conflict. The remote server returned an error: (403) Forbidden.",
"Target": null,
"Details": [{
"Message": "There was a conflict. The remote server returned an error: (403) Forbidden."
}, {
"Code": "BadRequest"
}, {
"ErrorEntity": {
"ExtendedCode": "01020",
"MessageTemplate": "There was a conflict. {0}",
"Parameters": ["The remote server returned an error: (403) Forbidden."],
"Code": "BadRequest",
"Message": "There was a conflict. The remote server returned an error: (403) Forbidden."
}
}
],
"Innererror": null
},
"targetResource": {
"id": "/subscriptions/XXX/brw-func-dev-ce-to-avaloq2",
"resourceType": "Microsoft.Web/sites",
"resourceName": "brw-func-dev-ce-to-avaloq2"
}
}
}
My template file:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"siteName": {
"defaultValue": "brw-func-dev-ce-to-avaloq",
"type": "string"
},
"appServicePlan": {
"defaultValue": "",
"type": "string"
},
"appInsightsInstrumentationKey": {
"defaultValue": "XXX",
"type": "string"
},
"appInsightsName": {
"defaultValue": "brw-appins-dev-ce-to-avaloq",
"type": "string"
},
"storageAccountName": {
"defaultValue": "brwstordevcdtoavaloq",
"type": "string"
},
"azureWebJobsStorage": {
"defaultValue": "DefaultEndpointsProtocol=https;AccountName=brwstordevcetoavaloq;AccountKey=XXX",
"type": "string"
},
"mappingConfig": {
"defaultValue": "Interfaces.Avaloq.Persistence.NewClient.Concrete.MappingConfigFixed, Interfaces.Avaloq.Persistence",
"type": "string"
},
"newClientMappingService": {
"defaultValue": "Interfaces.Avaloq.Persistence.NewClient.Concrete.NewClientMappingService, Interfaces.Avaloq.Persistence",
"type": "string"
},
"newClientService": {
"defaultValue": "Interfaces.Avaloq.Persistence.NewClient.Concrete.NewClientService, Interfaces.Avaloq.Persistence",
"type": "string"
},
"referenceDataService": {
"defaultValue": "Interfaces.Avaloq.Infrastructure.ReferenceData.Concrete.ApiReferenceDataService, Interfaces.Avaloq.Infrastructure",
"type": "string"
},
"referenceDataServiceApiIsCachingEnabled": {
"defaultValue": "false",
"type": "string"
},
"serviceBusConnection": {
"defaultValue": "XXX",
"type": "string"
},
"pipelineProcessingRequestValidationEnabled": {
"defaultValue": "true",
"type": "string"
},
"pipelineProcessingPerformanceBehaviourEnabled": {
"defaultValue": "true",
"type": "string"
},
"referenceDataServiceApiBaseAddress": {
"defaultValue": "XXX",
"type": "string"
},
"referenceDataServiceApiSubscriptionKey": {
"defaultValue": "XXX",
"type": "string"
},
"referenceDataServiceApiCacheProviderServiceTypeName": {
"defaultValue": "",
"type": "string"
},
"avaloqClientApiBaseAddress": {
"defaultValue": "XXX",
"type": "string"
},
"avaloqClientApiBearerToken": {
"defaultValue": "XXX",
"type": "string"
}
},
"variables": {
},
"resources": [
{
"apiVersion": "2015-05-01",
"name": "[parameters('appInsightsName')]",
"type": "microsoft.insights/components",
"location": "[parameters('location')]",
"tags": {
},
"properties": {
"ApplicationId": "[parameters('appInsightsName')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
},
{
"apiVersion": "2019-06-01",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "Storage",
"properties": {
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": false,
"encryption": {
"services": {
"file": {
"enabled": true
},
"blob": {
"enabled": true
}
},
"keySource": "Microsoft.Storage"
}
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "[parameters('appServicePlan')]",
"location": "West Europe",
"sku": {
"name": "Y1",
"tier": "Dynamic"
},
"properties": {
"name": "[parameters('appServicePlan')]",
"computeMode": "Dynamic"
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2016-08-01",
"name": "[parameters('siteName')]",
"location": "[parameters('location')]",
"kind": "functionapp",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlan'))]",
"[concat('microsoft.insights/components/', parameters('appInsightsName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
],
"properties": {
"name": "[parameters('siteName')]",
"serverFarmId": "[parameters('appServicePlan')]",
"hostingEnvironment": "",
"clientAffinityEnabled": false,
"siteConfig": {
"appSettings": [
{
"name": "AzureWebJobsDashboard",
"value": "[parameters('azureWebJobsStorage')]"
},
{
"name": "AzureWebJobsStorage",
"value": "[parameters('azureWebJobsStorage')]"
},
{
"name": "MappingConfig",
"value": "[parameters('mappingConfig')]"
},
{
"name": "NewClientMappingService",
"value": "[parameters('newClientMappingService')]"
},
{
"name": "NewClientService",
"value": "[parameters('newClientService')]"
},
{
"name": "ReferenceDataService",
"value": "[parameters('referenceDataService')]"
},
{
"name": "ReferenceDataServiceApiIsCachingEnabled",
"value": "[parameters('referenceDataServiceApiIsCachingEnabled')]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~2"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "10.14.1"
},
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[parameters('appInsightsInstrumentationKey')]"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "dotnet"
},
{
"name": "ServiceBusConnection",
"value": "[parameters('serviceBusConnection')]"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[parameters('azureWebJobsStorage')]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "[parameters('siteName')]"
},
{
"name": "PipelineProcessingPerformanceBehaviourEnabled",
"value": "[parameters('pipelineProcessingPerformanceBehaviourEnabled')]"
},
{
"name": "PipelineProcessingRequestValidationEnabled",
"value": "[parameters('pipelineProcessingRequestValidationEnabled')]"
},
{
"name": "ReferenceDataServiceApiBaseAddress",
"value": "[parameters('referenceDataServiceApiBaseAddress')]"
},
{
"name": "ReferenceDataServiceApiSubscriptionKey",
"value": "[parameters('referenceDataServiceApiSubscriptionKey')]"
},
{
"name": "ReferenceDataServiceApiCacheProviderServiceTypeName",
"value": "[parameters('referenceDataServiceApiCacheProviderServiceTypeName')]"
},
{
"name": "AvaloqClientApiBaseAddress",
"value": "[parameters('avaloqClientApiBaseAddress')]"
},
{
"name": "AvaloqClientApiBearerToken",
"value": "[parameters('avaloqClientApiBearerToken')]"
}
]
}
}
}
]
}
Any ideas what could be causing the error please?
It seems the problem was due to the storage account key, as described here: https://github.com/Azure/azure-functions-ux/issues/2279