Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource
Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource
我正在尝试使用 visual studio 部署存储帐户 arm 部署。下面是我的模板
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "array",
"defaultValue": [
"Standard_LRS",
"Standard_LRS",
"Standard_GRS"
]
},
"storageAccountNamePrefix": {
"type": "string",
"defaultValue": "az",
"minLength": 1
}
},
"variables": {
},
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"sku": {
"name": "[parameters('storageAccountType')[copyIndex()]]"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')[copyIndex()]]"
},
"properties": {
"accountType": "[parameters('storageAccountType')[copyIndex()]]"
},
"kind": "Storage"
}
],
"outputs": {
}
}
错误抛出在下面一行
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
错误
Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource 'azstrg0u2pzkvcrv3eo4' at line '25' and column '10' is not valid: Template language expression property 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateFunctionExpression' can't be evaluated. Please see https://aka.ms/arm-template-expressions for usage details..'.
我不明白为什么会失败,因为我能够在其他资源名称中使用 concat
函数。我知道存储帐户名称只能包含字符和数字,不能包含特殊字符。在错误中,资源的解析名称被准确显示。所以从错误信息中很难知道表达式出了什么问题。
我试过你的模板,下面的代码似乎有问题:
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')[copyIndex()]]"
},
因为“'storageAccountNamePrefix'”不是数组。所以它会给你错误信息,请尝试以下操作:
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
2.Please 请注意,在 2016-01-01 版本之前,'sku' 被称为 'accountType' 并在 'properties' 信封下找到。我们可以在 this article 找到此信息。所以我认为我们需要在 api 版本为“2015-06-15”时删除 sku 和 kind。
我已经测试了以下两个资源信息模板,它工作成功。请试一试。
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
"properties": {
"accountType": "[parameters('storageAccountType')[copyIndex()]]"
}
}],
或
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2016-01-01",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"sku": {
"name": "[parameters('storageAccountType')[copyIndex()]]"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
"kind": "Storage"
}],
我正在尝试使用 visual studio 部署存储帐户 arm 部署。下面是我的模板
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "array",
"defaultValue": [
"Standard_LRS",
"Standard_LRS",
"Standard_GRS"
]
},
"storageAccountNamePrefix": {
"type": "string",
"defaultValue": "az",
"minLength": 1
}
},
"variables": {
},
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"sku": {
"name": "[parameters('storageAccountType')[copyIndex()]]"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')[copyIndex()]]"
},
"properties": {
"accountType": "[parameters('storageAccountType')[copyIndex()]]"
},
"kind": "Storage"
}
],
"outputs": {
}
}
错误抛出在下面一行
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
错误
Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The template resource 'azstrg0u2pzkvcrv3eo4' at line '25' and column '10' is not valid: Template language expression property 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateFunctionExpression' can't be evaluated. Please see https://aka.ms/arm-template-expressions for usage details..'.
我不明白为什么会失败,因为我能够在其他资源名称中使用 concat
函数。我知道存储帐户名称只能包含字符和数字,不能包含特殊字符。在错误中,资源的解析名称被准确显示。所以从错误信息中很难知道表达式出了什么问题。
我试过你的模板,下面的代码似乎有问题:
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')[copyIndex()]]"
},
因为“'storageAccountNamePrefix'”不是数组。所以它会给你错误信息,请尝试以下操作:
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
2.Please 请注意,在 2016-01-01 版本之前,'sku' 被称为 'accountType' 并在 'properties' 信封下找到。我们可以在 this article 找到此信息。所以我认为我们需要在 api 版本为“2015-06-15”时删除 sku 和 kind。 我已经测试了以下两个资源信息模板,它工作成功。请试一试。
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
"properties": {
"accountType": "[parameters('storageAccountType')[copyIndex()]]"
}
}],
或
"resources": [
{
"name": "[concat(parameters('storageAccountNamePrefix'),'strg', copyIndex(),uniqueString(resourceGroup().id))]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2016-01-01",
"copy": {
"count": "[length(parameters('storageAccountType'))]",
"name": "storageCopy"
},
"sku": {
"name": "[parameters('storageAccountType')[copyIndex()]]"
},
"tags": {
"displayName": "[parameters('storageAccountNamePrefix')]"
},
"kind": "Storage"
}],