首页 > 解决方案 > ARM模板中Array类型的参数

问题描述

我有一个带有数组类型参数的 ARM 模板,如下所示:

在此处输入图像描述

如何在参数数组的第 2 和第 3 位置设置值?(例如,本例中的“b”、“c”)

标签: arm-template

解决方案


方法一:直接使用数组索引——

您可以使用以下表达式来使用 Array 参数的值:

对于第一个值:"[parameters('parameter1')[0]]"

对于第二个值:"[parameters('parameter1')[1]]"

对于第三个值:"[parameters('parameter1')[2]]"

您可以测试此示例模板以从数组中获取值并在输出中显示:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "parameter1": {
            "defaultValue": [
                "value1",
                "value2",
                "value3"
            ],
            "type": "Array"
        }
    },
    "resources": [],
    "outputs": {
        "firstValue": {
            "type": "String",
            "value": "[parameters('parameter1')[0]]"
        },
        "secondValue": {
            "type": "String",
            "value": "[parameters('parameter1')[1]]"
        },
        "thirdValue": {
            "type": "String",
            "value": "[parameters('parameter1')[2]]"
        }
    }
}

更新:

方法2:如果你想使用copyIndex。使用以下表达式 -

"[parameters('parameter1')[copyIndex()]]"

请检查以下示例:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "parameter1": {
            "defaultValue": [
                "strvalue1",
                "strvalue2"
            ],
            "type": "Array"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-04-01",
            "name": "[parameters('parameter1')[copyIndex()]]",
            "location": "[resourceGroup().location]",
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "properties": {},
            "copy": {
                "name": "storagecopy",
                "count": "[length(parameters('parameter1'))]"
            }
        }
    ]
}

推荐阅读