我正在尝试使用此Azure Resource Manager模板代码段将自定义域添加到一组webapps。正在创建Web应用程序,流量管理器配置文件也是如此。但是,添加自定义主机名时,ARM模板失败。请注意,我正在使用传递给模板的变量参数来创建网站。
{
"name": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]",
"type": "Microsoft.Web/sites",
"kind": "app,linux,container",
"location": "[parameters('webAppLocations')[copyIndex()]]",
"apiVersion": "2016-08-01",
"copy": {
"count": "[length(parameters('webAppLocations'))]",
"name": "siteCopy"
},
"dependsOn": [
"farmCopy"
],
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2016-08-01",
"dependsOn": [
"[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]"
],
"tags": {
"displayName": "Application settings"
},
"properties": {
"publishingUsername": "[variables('publishingUsername')]",
"DOCKER_CUSTOM_IMAGE_NAME": "[parameters('dockerImageName')]"
}
}
],
"tags": {
"[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id))), '-', copyIndex())]": "Resource",
"displayName": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]"
},
"properties": {
"name": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-', copyIndex()))]"
}
},
{
"type": "Microsoft.Web/sites/hostnameBindings",
"name": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex(), '/', parameters('customHostname'))]",
"apiVersion": "2016-08-01",
"location": "[resourceGroup().location]",
"properties": {
},
"dependsOn": [
"[concat('Microsoft.Web/sites/',parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex(), '/', parameters('customHostname'))]"
]
}
2018-03-20T23:50:20.7707394Z ##[error]Deployment template validation failed: 'The template resource '[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex(), '/', parameters('customHostname'))]' at line '1' and column '2892' is not valid: The template function 'copyIndex' is not expected at this location. The function can only be used in a resource with copy specified. Please see https://aka.ms/arm-copy for usage details.. Please see https://aka.ms/arm-template-expressions for usage details.'.
2018-03-20T23:50:20.7723109Z ##[error]Task failed while creating or updating the template deployment.
请注意,copyIndex()适用于模板中其他位置的网站名称。那么为什么它不适用于“Microsoft.Web / sites / hostnameBindings”部分呢?我很难过。
以下是参数。请注意webAppLocations参数是一个数组。
"parameters": {
"webAppNamePrefix": {
"type": "string",
"minLength": 1
},
"dockerImageName": {
"type": "string",
"metadata": {
"description": "Name of docker image to use"
}
},
"farmSkuName": {
"type": "string",
"metadata": {
"description": "Describes plan's pricing tier and capacity. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/"
}
},
"environmentType": {
"type": "string",
"allowedValues": [
"dev",
"qa",
"prod"
],
"metadata": {
"description": "Environment type name"
}
},
"webAppLocations": {
"type": "array"
},
"trafficManagerPrefix": {
"type": "string"
},
"customHostname": {
"type": "string",
"metadata": {
"description": "The custom hostname that you wish to add."
}
}
},
答案 0 :(得分:1)
你永远不应该在resources
属性之后放置任何东西,不是因为它破坏了模板,而是因为它更难以查看它。在您的情况下,您将Microsoft.Web/sites/hostnameBindings
置于资源之外。
{
"name": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]",
"type": "Microsoft.Web/sites",
"kind": "app,linux,container",
"location": "[parameters('webAppLocations')[copyIndex()]]",
"apiVersion": "2016-08-01",
"copy": {
"count": "[length(parameters('webAppLocations'))]",
"name": "siteCopy"
},
"dependsOn": [
"farmCopy"
],
"tags": {
"[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id))), '-', copyIndex())]": "Resource",
"displayName": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]"
},
"properties": {
"name": "[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-', copyIndex()))]"
},
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2016-08-01",
"dependsOn": [
"[concat(parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex())]"
],
"tags": {
"displayName": "Application settings"
},
"properties": {
"publishingUsername": "[variables('publishingUsername')]",
"DOCKER_CUSTOM_IMAGE_NAME": "[parameters('dockerImageName')]"
}
},
{
"type": "hostnameBindings",
"name": "[parameters('customHostname')]",
"apiVersion": "2016-08-01",
"location": "[resourceGroup().location]",
"properties": {},
"dependsOn": [
"[concat('Microsoft.Web/sites/',parameters('webAppNamePrefix'), '-', uniqueString(resourceGroup().id), '-site-', copyIndex(), '/', parameters('customHostname'))]"
]
}
]
}