Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak utworzyć więcej niż jedną wartość dla danych wyjściowych w szablonie usługi Azure Resource Manager (szablon arm). Dodając pętlę kopiowania do sekcji danych wyjściowych szablonu, można dynamicznie zwracać liczbę elementów podczas wdrażania.
Możesz również użyć pętli kopiowania z zasobami, właściwościami w zasobie i zmiennymi.
Napiwek
Zalecamy Bicep , ponieważ oferuje te same możliwości co szablony usługi ARM, a składnia jest łatwiejsza w użyciu. Aby dowiedzieć się więcej, zobacz pętle.
Składnia
copy Dodaj element do sekcji danych wyjściowych szablonu, aby zwrócić liczbę elementów. Element copy ma następujący format ogólny:
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-output>
}
Właściwość count określa liczbę iteracji, które chcesz uzyskać dla wartości wyjściowej.
Właściwość input określa właściwości, które chcesz powtórzyć. Utworzysz tablicę elementów skonstruowanych na podstawie wartości we input właściwości . Może to być pojedyncza właściwość (na przykład ciąg) lub obiekt z kilkoma właściwościami.
Limity kopiowania
Liczba nie może przekroczyć 800.
Liczba nie może być liczbą ujemną. Wdrożenie szablonu przy użyciu najnowszej wersji interfejsu wiersza polecenia platformy Azure, programu PowerShell lub interfejsu API REST może być zerowe. W szczególności należy użyć:
- Program Azure PowerShell 2.6 lub nowszy
- Interfejs wiersza polecenia platformy Azure w wersji 2.0.74 lub nowszej
- Interfejs API REST w wersji 2019-05-10 lub nowszej
- Połączone wdrożenia muszą używać interfejsu API w wersji 2019-05-10 lub nowszej dla typu zasobu wdrożenia
Wcześniejsze wersje programu PowerShell, interfejsu wiersza polecenia i interfejsu API REST nie obsługują wartości zero dla liczby.
Iteracja danych wyjściowych
Poniższy przykład tworzy zmienną liczbę kont magazynu i zwraca punkt końcowy dla każdego konta magazynu:
{
"$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": "2025-06-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]"
}
}
}
}
Powyższy szablon zwraca tablicę z następującymi wartościami:
[
"https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]
W następnym przykładzie są zwracane trzy właściwości z nowych kont magazynu.
{
"$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": "2025-06-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]"
}
}
}
}
}
Powyższy przykład zwraca tablicę z następującymi wartościami:
[
{
"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"
}
]
Następne kroki
- Aby zapoznać się z samouczkiem, zobacz Samouczek: tworzenie wielu wystąpień zasobów przy użyciu szablonów usługi ARM.
- Aby uzyskać informacje o innych zastosowaniach pętli kopiowania, zobacz:
- Jeśli chcesz dowiedzieć się więcej o sekcjach szablonu, zobacz Omówienie struktury i składni szablonów usługi ARM.
- Aby dowiedzieć się, jak wdrożyć szablon, zobacz Wdrażanie zasobów przy użyciu szablonów usługi ARM i programu Azure PowerShell.