Iterazione di output nei modelli ARMOutput iteration in ARM templates

Questo articolo illustra come creare più di un valore per un output nel modello di Azure Resource Manager (ARM).This article shows you how to create more than one value for an output in your Azure Resource Manager (ARM) template. Aggiungendo l'elemento Copy alla sezione Outputs del modello, è possibile restituire dinamicamente un numero di elementi durante la distribuzione.By adding the copy element to the outputs section of your template, you can dynamically return a number of items during deployment.

È anche possibile usare copia con risorse, Proprietà in una risorsae variabili.You can also use copy with resources, properties in a resource, and variables.

SintassiSyntax

Il formato generale dell'elemento Copy è il seguente:The copy element has the following general format:

"copy": {
  "count": <number-of-iterations>,
  "input": <values-for-the-output>
}

La proprietà count specifica il numero di iterazioni desiderate per il valore di output.The count property specifies the number of iterations you want for the output value.

La proprietà di input specifica le proprietà che si desidera ripetere.The input property specifies the properties that you want to repeat. Si crea una matrice di elementi costruiti dal valore nella proprietà di input .You create an array of elements constructed from the value in the input property. Può essere una singola proprietà (ad esempio una stringa) o un oggetto con diverse proprietà.It can be a single property (like a string), or an object with several properties.

Limiti di copiaCopy limits

Il conteggio non può essere maggiore di 800.The count can't exceed 800.

Il conteggio non può essere un numero negativo.The count can't be a negative number. Può essere zero se si distribuisce il modello con una versione recente dell'interfaccia della riga di comando di Azure, PowerShell o l'API REST.It can be zero if you deploy the template with a recent version of Azure CLI, PowerShell, or REST API. In particolare, è necessario usare:Specifically, you must use:

  • Azure PowerShell 2,6 o versione successivaAzure PowerShell 2.6 or later
  • INTERFACCIA della riga di comando di Azure 2.0.74 o versione successivaAzure CLI 2.0.74 or later
  • API REST versione 2019-05-10 o successivaREST API version 2019-05-10 or later
  • Le distribuzioni collegate devono usare l'API versione 2019-05-10 o successiva per il tipo di risorsa di distribuzioneLinked deployments must use API version 2019-05-10 or later for the deployment resource type

Le versioni precedenti di PowerShell, l'interfaccia della riga di comando e l'API REST non supportano zero per Count.Earlier versions of PowerShell, CLI, and the REST API don't support zero for count.

Iterazione degli outputOutputs iteration

Nell'esempio seguente viene creato un numero variabile di account di archiviazione e viene restituito un endpoint per ogni account di archiviazione:The following example creates a variable number of storage accounts and returns an endpoint for each storage account:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageCount": {
            "type": "int",
            "defaultValue": 2
        }
    },
    "variables": {
        "baseName": "[concat('storage', uniqueString(resourceGroup().id))]"
    },
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-04-01",
            "name": "[concat(copyIndex(), variables('baseName'))]",
            "location": "[resourceGroup().location]",
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "properties": {},
            "copy": {
                "name": "storagecopy",
                "count": "[parameters('storageCount')]"
            }
        }
    ],
    "outputs": {
        "storageEndpoints": {
            "type": "array",
            "copy": {
                "count": "[parameters('storageCount')]",
                "input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
            }
        }
    }
}

Il modello precedente restituisce una matrice con i valori seguenti:The preceding template returns an array with the following values:

[
    "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
    "https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]

Nell'esempio seguente vengono restituite tre proprietà dai nuovi account di archiviazione.The next example returns three properties from the new storage accounts.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageCount": {
            "type": "int",
            "defaultValue": 2
        }
    },
    "variables": {
        "baseName": "[concat('storage', uniqueString(resourceGroup().id))]"
    },
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-04-01",
            "name": "[concat(copyIndex(), variables('baseName'))]",
            "location": "[resourceGroup().location]",
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "properties": {},
            "copy": {
                "name": "storagecopy",
                "count": "[parameters('storageCount')]"
            }
        }
    ],
    "outputs": {
        "storageInfo": {
            "type": "array",
            "copy": {
                "count": "[parameters('storageCount')]",
                "input": {
                    "id": "[reference(concat(copyIndex(), variables('baseName')), '2019-04-01', 'Full').resourceId]",
                    "blobEndpoint": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]",
                    "status": "[reference(concat(copyIndex(), variables('baseName'))).statusOfPrimary]"
                }
            }
        }
    }
}

Nell'esempio precedente viene restituita una matrice con i valori seguenti:The preceding example returns an array with the following values:

[
    {
        "id": "Microsoft.Storage/storageAccounts/0storagecfrbqnnmpeudi",
        "blobEndpoint": "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
        "status": "available"
    },
    {
        "id": "Microsoft.Storage/storageAccounts/1storagecfrbqnnmpeudi",
        "blobEndpoint": "https://1storagecfrbqnnmpeudi.blob.core.windows.net/",
        "status": "available"
    }
]

Passaggi successiviNext steps