错误:Code = InvalidTemplate; Message =部署模板验证失败:'模板资源

时间:2016-10-22 13:20:26

标签: azure azure-powershell azure-resource-manager

我正在尝试使用visual studio部署存储帐户部署。以下是我的模板

{
    "$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函数。我知道存储帐户名只能有字符和数字没有特殊字符。在错误中,准确显示资源的已解析名称。因此,从错误消息中很难知道表达式有什么问题。

1 个答案:

答案 0 :(得分:1)

我已尝试过您的模板,下面的代码似乎有问题:

"tags": {
    "displayName": "[parameters('storageAccountNamePrefix')[copyIndex()]]"
  },

由于“' storageAccountNamePrefix'”不是数组。所以它会给你错误信息,请尝试以下方法:

"tags": {
    "displayName": "[parameters('storageAccountNamePrefix')]"
  },

2.请注意,在2016-01-01版之前,' sku'被称为' accountType'并且被发现属于'属性'信封。我们可以在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"
}],