2016-10-22 54 views
0

我正在嘗試使用visual studio部署存儲帳戶arm部署。下面是我的模板錯誤:代碼= InvalidTemplate;消息=部署模板驗證失敗:'模板資源

{ 
    "$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

我已經試過你的模板,這似乎有點毛病下面的代碼:

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

因爲「‘storageAccountNamePrefix’」是不是數組。因此,它會給你的錯誤信息,請嘗試以下方法:

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

2。請注意,2016年1月1日之前的版本,「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" 
}],