【问题标题】:ARM template throws incorrect segments lengths for array of storage containers typesARM 模板为存储容器类型的数组抛出不正确的段长度
【发布时间】:2021-09-26 00:07:03
【问题描述】:

当我让 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.

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

这是我的 ARM template 文件。

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

这是我的 ARM parameters 文件。

{
    "$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 更改为不同的类型,但没有成功。
谁能帮我找出原因?

【问题讨论】:

    标签: azure azure-blob-storage arm-template azure-storage-account


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2022-07-19
      相关资源
      最近更新 更多