Iterace výstupu v šablonách ARM
V tomto článku se dozvíte, jak vytvořit více než jednu hodnotu pro výstup v šabloně Azure Resource Manager (šablona ARM). Přidáním smyčky kopírování do oddílu outputs šablony můžete během nasazení dynamicky vracet řadu položek.
Můžete také použít smyčku kopírování s prostředky, vlastnostmi prostředku a proměnnými.
Tip
Doporučujeme Bicep , protože nabízí stejné funkce jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu Smyčky.
Syntax
Přidáním elementu copy
do výstupní části šablony vrátíte několik položek. Element copy má následující obecný formát:
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-output>
}
Vlastnost count
určuje požadovaný počet iterací pro výstupní hodnotu.
Vlastnost input
určuje vlastnosti, které chcete opakovat. Vytvoříte pole prvků vytvořených z hodnoty ve input
vlastnosti. Může to být jedna vlastnost (například řetězec) nebo objekt s několika vlastnostmi.
Limity kopírování
Počet nesmí překročit 800.
Počet nemůže být záporné číslo. Pokud šablonu nasadíte pomocí nedávné verze Azure CLI, PowerShellu nebo rozhraní REST API, může být nulová. Konkrétně musíte použít:
- Azure PowerShell 2.6 nebo novější
- Azure CLI 2.0.74 nebo novější
- ROZHRANÍ REST API verze 2019-05-10 nebo novější
- Propojená nasazení musí pro typ prostředku nasazení používat rozhraní API verze 2019-05-10 nebo novější.
Starší verze PowerShellu, rozhraní příkazového řádku a rozhraní REST API nepodporují nulu pro počet.
Iterace výstupu
Následující příklad vytvoří proměnlivý počet účtů úložiště a vrátí koncový bod pro každý účet úložiště:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[parameters('storageCount')]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', copyIndex(), variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
}
Předchozí šablona vrátí pole s následujícími hodnotami:
[
"https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]
Další příklad vrátí tři vlastnosti z nových účtů úložiště.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[length(range(0, parameters('storageCount')))]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', range(0, parameters('storageCount'))[copyIndex()], variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageInfo": {
"type": "array",
"copy": {
"count": "[length(range(0, parameters('storageCount')))]",
"input": {
"id": "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', copyIndex(), variables('baseName')))]",
"blobEndpoint": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]",
"status": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).statusOfPrimary]"
}
}
}
}
}
Předchozí příklad vrátí matici s následujícími hodnotami:
[
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/0storagecfrbqnnmpeudi",
"blobEndpoint": "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
},
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/1storagecfrbqnnmpeudi",
"blobEndpoint": "https://1storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
}
]
Další kroky
- Pokud chcete projít kurz, přečtěte si kurz: Vytvoření více instancí prostředků pomocí šablon ARM.
- Další použití smyčky kopírování najdete tady:
- Pokud se chcete dozvědět o částech šablony, přečtěte si téma Vysvětlení struktury a syntaxe šablon ARM.
- Informace o nasazení šablony najdete v tématu Nasazení prostředků pomocí šablon ARM a Azure PowerShell.