首页 > 解决方案 > ARM 模板为存储容器类型的数组抛出不正确的段长度

问题描述

Template validation failed: The template resource 'reports' for type 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Common.Entities.TemplateGenericProperty`1[System.String]' at line '34' and column '79' has incorrect segment lengths. A nested resource type must have identical number of segments as its resource name. A root resource type must have segment length one greater than its resource name. Please see https://aka.ms/arm-template/#resources for usage details.当我让 ARM 从参数文件中的数组创建容器时,我得到了。

问题行:"type": "Microsoft.Storage/storageAccounts/blobServices/containers",

这是我的 ARMtemplate文件。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "type": "string",
            "metadata": {
                "description": "The name of the storage account"
            }
        },
        "storageContaners": {
            "type": "string",
            "metadata": {
                "description": "The name of the blob containers"
            }
        }
    },
    "functions": [],
    "variables": {
    },
    "resources": [
        {
            "name": "[parameters('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2021-04-01",
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2021-04-01",
            "name": "[parameters('storageContaners')]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
            ],
            "properties": {
                "publicAccess": "Blob"
            }
        }
    ],
    "outputs": {}
}

这是我的 ARMparameters文件。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "value": "mystorageaccount"
        },
        "storageContaners": {
            "value":  "reports"
        }
    }
}

我曾尝试更改name为不同的类型,但没有运气。
有人可以帮我找出原因吗?

标签: azureazure-blob-storagearm-templateazure-storage-account

解决方案


嵌套资源下的参数name必须. 这里有4 个级别(由 3 分隔)。所以必须有3 个级别(由 2 分隔)。 这适用于在父资源下具有嵌套资源的情况。type
type/
name/
"type": "Microsoft.Storage/storageAccounts/blobServices/containers",
"name": "[concat(parameters('storageAccountName'), '/default/', parameters('storageContaners')]",


推荐阅读