Informatie over de structuur en de syntaxis van ARM-sjablonen

In dit artikel wordt de structuur van een Azure Resource Manager-sjabloon (ARM-sjabloon) beschreven. De sjabloon bevat de verschillende secties van een sjabloon en de eigenschappen die beschikbaar zijn in deze secties.

Dit artikel is bedoeld voor gebruikers die vertrouwd zijn met ARM-sjablonen. De sjabloon bevat gedetailleerde informatie over de structuur van de sjabloon. Zie Zelfstudie : Uw eerste ARM-sjabloon maken en implementeren voor een stapsgewijze zelfstudie die u begeleidt bij het maken van een sjabloon. Zie Resources implementeren en beheren in Azure met behulp van ARM-sjablonen voor meer informatie over ARM-sjablonen via een begeleide set Learn-modules.

Tip

Bicep is een nieuwe taal die dezelfde mogelijkheden biedt als ARM-sjablonen, maar met een syntaxis die gemakkelijker te gebruiken is. Als u infrastructuur als codeopties beschouwt, raden we u aan bicep te bekijken.

Zie De structuur en syntaxis van Bicep-bestanden begrijpen voor meer informatie over de elementen van een Bicep-bestand.

Sjabloonindeling

In de eenvoudigste structuur heeft een sjabloon de volgende elementen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Elementnaam Vereist Beschrijving
$schema Ja Locatie van het JSON-schemabestand (JavaScript Object Notation) waarin de versie van de sjabloontaal wordt beschreven. Het versienummer dat u gebruikt, is afhankelijk van het bereik van de implementatie en uw JSON-editor.

Als u Visual Studio Code gebruikt met de Azure Resource Manager-hulpprogramma-extensie, gebruikt u de nieuwste versie voor resourcegroepimplementaties:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Andere editors (inclusief Visual Studio) kunnen dit schema mogelijk niet verwerken. Gebruik voor deze editors:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Gebruik voor abonnementsimplementaties het volgende:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Gebruik voor implementaties van beheergroepen:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Gebruik voor tenantimplementaties:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
contentVersion Ja Versie van de sjabloon (zoals 1.0.0.0). U kunt een willekeurige waarde voor dit element opgeven. Gebruik deze waarde als u belangrijke wijzigingen in uw sjabloon wilt documenteren. Wanneer u resources implementeert met de sjabloon, kan deze waarde worden gebruikt om ervoor te zorgen dat de juiste sjabloon wordt gebruikt.
apiProfile No Een API-versie die fungeert als een verzameling API-versies voor resourcetypen. Gebruik deze waarde om te voorkomen dat api-versies voor elke resource in de sjabloon moeten worden opgegeven. Wanneer u een API-profielversie opgeeft en geen API-versie opgeeft voor het resourcetype, gebruikt Resource Manager de API-versie voor dat resourcetype dat is gedefinieerd in het profiel.

De eigenschap API-profiel is vooral handig bij het implementeren van een sjabloon in verschillende omgevingen, zoals Azure Stack en global Azure. Gebruik de API-profielversie om ervoor te zorgen dat uw sjabloon automatisch versies gebruikt die in beide omgevingen worden ondersteund. Zie API-profiel voor een lijst met de huidige API-profielversies en de resources-API-versies die in het profiel zijn gedefinieerd.

Zie Versies bijhouden met API-profielen voor meer informatie.
parameters No Waarden die worden opgegeven wanneer de implementatie wordt uitgevoerd om de resource-implementatie aan te passen.
Variabelen No Waarden die worden gebruikt als JSON-fragmenten in de sjabloon om taalexpressies voor sjablonen te vereenvoudigen.
Functies No Door de gebruiker gedefinieerde functies die beschikbaar zijn in de sjabloon.
Middelen Ja Resourcetypen die worden geïmplementeerd of bijgewerkt in een resourcegroep of abonnement.
Uitgangen No Waarden die worden geretourneerd na de implementatie.

Elk element heeft eigenschappen die u kunt instellen. In dit artikel worden de secties van de sjabloon uitvoeriger beschreven.

Parameters

In de parameters sectie van de sjabloon geeft u op welke waarden u kunt invoeren bij het implementeren van de resources. U bent beperkt tot 256 parameters in een sjabloon. U kunt het aantal parameters verminderen door objecten te gebruiken die meerdere eigenschappen bevatten.

De eigenschappen die beschikbaar zijn voor een parameter zijn:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
Elementnaam Vereist Beschrijving
parameternaam Ja Naam van de parameter. Moet een geldige JavaScript-id zijn.
type Ja Type van de parameterwaarde. De toegestane typen en waarden zijn tekenreeksen, securestring, int, bool, object, secureObject en matrix. Zie gegevenstypen in ARM-sjablonen.
standaardwaarde No Standaardwaarde voor de parameter als er geen waarde is opgegeven voor de parameter.
allowedValues No Matrix met toegestane waarden voor de parameter om ervoor te zorgen dat de juiste waarde wordt opgegeven.
minValue No De minimumwaarde voor int-typeparameters is deze waarde inclusief.
maxValue No De maximumwaarde voor int-typeparameters is deze waarde inclusief.
minLength No De minimale lengte voor tekenreeks-, beveiligde tekenreeks- en matrixtypeparameters is deze waarde inclusief.
Maxlength No De maximale lengte voor tekenreeks-, beveiligde tekenreeks- en matrixtypeparameters is deze waarde inclusief.
beschrijving No Beschrijving van de parameter die wordt weergegeven voor gebruikers via de portal. Zie Opmerkingen in sjablonen voor meer informatie.

Zie Parameters in ARM-sjablonen voor voorbeelden van het gebruik van parameters.

Zie parameters in Bicep.

Variabelen

In de variables sectie maakt u waarden die in uw sjabloon kunnen worden gebruikt. U hoeft geen variabelen te definiëren, maar ze vereenvoudigen uw sjabloon vaak door complexe expressies te verminderen. De indeling van elke variabele komt overeen met een van de gegevenstypen. U bent beperkt tot 256 variabelen in een sjabloon.

In het volgende voorbeeld ziet u de beschikbare opties voor het definiëren van een variabele:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Zie Variabele-iteratie voor informatie over het gebruik van copy verschillende waarden voor een variabele.

Zie Variabelen in arm-sjabloon voor voorbeelden van het gebruik van variabelen.

Zie variabelen in Bicep.

Functions

In uw sjabloon kunt u uw eigen functies maken. Deze functies zijn beschikbaar voor gebruik in uw sjabloon. Normaal gesproken definieert u ingewikkelde expressies die u niet in de sjabloon wilt herhalen. U maakt de door de gebruiker gedefinieerde functies op basis van expressies en functies die worden ondersteund in sjablonen.

Bij het definiëren van een gebruikersfunctie gelden enkele beperkingen:

  • De functie heeft geen toegang tot variabelen.
  • De functie kan alleen parameters gebruiken die zijn gedefinieerd in de functie. Wanneer u de parametersfunctie binnen een door de gebruiker gedefinieerde functie gebruikt, bent u beperkt tot de parameters voor die functie.
  • De functie kan geen andere door de gebruiker gedefinieerde functies aanroepen.
  • De functie kan de verwijzingsfunctie niet gebruiken.
  • Parameters voor de functie kunnen geen standaardwaarden hebben.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Elementnaam Vereist Beschrijving
naamruimte Ja Naamruimte voor de aangepaste functies. Gebruik dit diagram om naamgevingsconflicten met sjabloonfuncties te voorkomen.
functienaam Ja Naam van de aangepaste functie. Wanneer u de functie aanroept, combineert u de functienaam met de naamruimte. Als u bijvoorbeeld een functie wilt aanroepen die in de naamruimte contoso is genoemd uniqueName , gebruikt u "[contoso.uniqueName()]".
parameternaam No De naam van de parameter die moet worden gebruikt in de aangepaste functie.
parameterwaarde No Type van de parameterwaarde. De toegestane typen en waarden zijn tekenreeksen, securestring, int, bool, object, secureObject en matrix.
uitvoertype Ja Type van de uitvoerwaarde. Uitvoerwaarden ondersteunen dezelfde typen als functieinvoerparameters.
uitvoerwaarde Ja Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd door de functie.

Zie Door de gebruiker gedefinieerde functies in arm-sjabloon voor voorbeelden van het gebruik van aangepaste functies.

In Bicep worden door de gebruiker gedefinieerde functies niet ondersteund. Bicep biedt ondersteuning voor diverse functies en operators.

Resources

In de resources sectie definieert u de resources die worden geïmplementeerd of bijgewerkt. U bent beperkt tot 800 resources in een sjabloon.

U definieert resources met de volgende structuur:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "apiVersion": "<api-version-of-resource>",
      "name": "<name-of-the-resource>",
      "comments": "<your-reference-notes>",
      "location": "<location-of-resource>",
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "identity": {
        "type": "<system-assigned-or-user-assigned-identity>",
        "userAssignedIdentities": {
          "<resource-id-of-identity>": {}
        }
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "scope": "<target-scope-for-extension-resources>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Elementnaam Vereist Beschrijving
Voorwaarde No Booleaanse waarde die aangeeft of de resource tijdens deze implementatie wordt ingericht. Wanneer true, wordt de resource gemaakt tijdens de implementatie. Wanneer false, wordt de resource overgeslagen voor deze implementatie. Zie voorwaarde.
type Ja Type resource. Deze waarde is een combinatie van de naamruimte van de resourceprovider en het resourcetype (zoals Microsoft.Storage/storageAccounts). Zie de sjabloonreferentie om de beschikbare waarden te bepalen. Voor een onderliggende resource is de indeling van het type afhankelijk van of het is genest binnen de bovenliggende resource of buiten de bovenliggende resource is gedefinieerd. Zie Setnaam en -type voor onderliggende resources.
apiVersion Ja Versie van de REST API die moet worden gebruikt voor het maken van de resource. Wanneer u een nieuwe sjabloon maakt, stelt u deze waarde in op de nieuwste versie van de resource die u implementeert. Zolang de sjabloon zo nodig werkt, kunt u dezelfde API-versie blijven gebruiken. Door dezelfde API-versie te blijven gebruiken, minimaliseert u het risico dat een nieuwe API-versie verandert hoe uw sjabloon werkt. U kunt de API-versie alleen bijwerken als u een nieuwe functie wilt gebruiken die in een latere versie wordt geïntroduceerd. Zie de sjabloonreferentie om de beschikbare waarden te bepalen.
naam Ja De naam van de resource. De naam moet de URI-onderdeelbeperkingen volgen die zijn gedefinieerd in RFC3986. Azure-services die de resourcenaam beschikbaar maken voor externe partijen valideren de naam om ervoor te zorgen dat het geen poging is om een andere identiteit te spoofen. Voor een onderliggende resource is de indeling van de naam afhankelijk van of deze is genest binnen de bovenliggende resource of buiten de bovenliggende resource is gedefinieerd. Zie Setnaam en -type voor onderliggende resources.
opmerkingen No Uw notities voor het documenteren van de resources in uw sjabloon. Zie Opmerkingen in sjablonen voor meer informatie.
location Varieert Ondersteunde geografische locaties van de opgegeven resource. U kunt een van de beschikbare locaties selecteren, maar meestal is het zinvol om een locatie te kiezen die zich dicht bij uw gebruikers bevindt. Meestal is het ook zinvol om resources te plaatsen die met elkaar communiceren in dezelfde regio. Voor de meeste resourcetypen is een locatie vereist, maar voor sommige typen (zoals een roltoewijzing) is geen locatie vereist. Zie Resourcelocatie instellen.
dependsOn No Resources die moeten worden geïmplementeerd voordat deze resource wordt geïmplementeerd. Resource Manager evalueert de afhankelijkheden tussen resources en implementeert deze in de juiste volgorde. Wanneer resources niet afhankelijk zijn van elkaar, worden ze parallel geïmplementeerd. De waarde kan een door komma's gescheiden lijst met resourcenamen of unieke resource-id's zijn. Alleen resources weergeven die in deze sjabloon zijn geïmplementeerd. Resources die niet in deze sjabloon zijn gedefinieerd, moeten al bestaan. Vermijd het toevoegen van onnodige afhankelijkheden, omdat ze uw implementatie kunnen vertragen en kringafhankelijkheden kunnen maken. Zie De volgorde definiëren voor het implementeren van resources in ARM-sjablonen voor hulp bij het instellen van afhankelijkheden.
tags No Tags die zijn gekoppeld aan de resource. Pas tags toe om resources logisch te ordenen in uw abonnement.
identity No Sommige resources ondersteunen beheerde identiteiten voor Azure-resources. Deze resources hebben een identiteitsobject op het hoofdniveau van de resourcedeclaratie. U kunt instellen of de identiteit door de gebruiker of door het systeem is toegewezen. Geef voor door de gebruiker toegewezen identiteiten een lijst op met resource-id's voor de identiteiten. Stel de sleutel in op de resource-id en de waarde op een leeg object. Zie Beheerde identiteiten configureren voor Azure-resources op een Azure-VM met behulp van sjablonen voor meer informatie.
sku No Sommige resources staan waarden toe die de SKU definiëren om te implementeren. U kunt bijvoorbeeld het type redundantie voor een opslagaccount opgeven.
Soort No Sommige resources bieden een waarde die het type resource definieert dat u implementeert. U kunt bijvoorbeeld het type Cosmos DB opgeven dat moet worden gemaakt.
scope No De bereikeigenschap is alleen beschikbaar voor extensieresourcetypen. Gebruik dit bij het opgeven van een bereik dat verschilt van het implementatiebereik. Zie Instellingsbereik voor extensiebronnen in ARM-sjablonen.
kopiëren No Als er meer dan één exemplaar nodig is, is het aantal resources dat moet worden gemaakt. De standaardmodus is parallel. Geef de seriële modus op wanneer u niet wilt dat alle resources tegelijk worden geïmplementeerd. Zie Verschillende exemplaren van resources maken in Azure Resource Manager voor meer informatie.
plannen No Sommige resources staan waarden toe die het plan definiëren om te implementeren. U kunt bijvoorbeeld de marketplace-installatiekopieën voor een virtuele machine opgeven.
properties No Resourcespecifieke configuratie-instellingen. De waarden voor de eigenschappen zijn hetzelfde als de waarden die u opgeeft in de aanvraagbody voor de REST API-bewerking (PUT-methode) om de resource te maken. U kunt ook een kopieermatrix opgeven om verschillende exemplaren van een eigenschap te maken. Als u de beschikbare waarden wilt bepalen, raadpleegt u de sjabloonreferentie.
resources No Onderliggende resources die afhankelijk zijn van de resource die wordt gedefinieerd. Geef alleen resourcetypen op die zijn toegestaan door het schema van de bovenliggende resource. Afhankelijkheid van de bovenliggende resource wordt niet geïmpliceerd. U moet die afhankelijkheid expliciet definiëren. Zie Setnaam en -type voor onderliggende resources.

Bekijk in Bicep bronnen.

Uitvoerwaarden

In de outputs sectie geeft u waarden op die worden geretourneerd door de implementatie. Normaal gesproken retourneert u waarden uit resources die zijn geïmplementeerd. U bent beperkt tot 64 uitvoer in een sjabloon.

In het volgende voorbeeld ziet u de structuur van een uitvoerdefinitie:

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Elementnaam Vereist Beschrijving
uitvoernaam Ja Naam van de uitvoerwaarde. Moet een geldige JavaScript-id zijn.
Voorwaarde No Booleaanse waarde die aangeeft of deze uitvoerwaarde wordt geretourneerd. Wanneer true, wordt de waarde opgenomen in de uitvoer voor de implementatie. Wanneer falsewordt de uitvoerwaarde voor deze implementatie overgeslagen. Als deze niet is opgegeven, is truede standaardwaarde.
type Ja Type van de uitvoerwaarde. Uitvoerwaarden ondersteunen dezelfde typen als sjablooninvoerparameters. Als u securestring opgeeft voor het uitvoertype, wordt de waarde niet weergegeven in de implementatiegeschiedenis en kan deze niet worden opgehaald uit een andere sjabloon. Als u een geheime waarde in meer dan één sjabloon wilt gebruiken, slaat u het geheim op in een Key Vault en verwijst u naar het geheim in het parameterbestand. Zie Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven.
waarde No Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd als uitvoerwaarde. Geef een waarde of kopie op.
kopiëren No Wordt gebruikt om meer dan één waarde voor een uitvoer te retourneren. Geef een waarde of kopie op. Zie Uitvoer iteratie in ARM-sjablonen voor meer informatie.

Zie Uitvoer in ARM-sjabloon voor voorbeelden van het gebruik van uitvoer.

Zie de uitvoer in Bicep.

Opmerkingen en metagegevens

U hebt een aantal opties voor het toevoegen van opmerkingen en metagegevens aan uw sjabloon.

Opmerkingen

Voor inlineopmerkingen kunt u deze // gebruiken of /* ... */. Sla in Visual Studio Code de parameterbestanden op met opmerkingen als JSON met opmerkingen (JSONC) bestandstype, anders krijgt u een foutbericht met de tekst 'Opmerkingen niet toegestaan in JSON'.

Notitie

Wanneer u Azure CLI gebruikt om sjablonen met opmerkingen te implementeren, gebruikt u versie 2.3.0 of hoger en geeft u de switch op --handle-extended-json-format .

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

In Visual Studio Code kan de Extensie Azure Resource Manager Tools automatisch een ARM-sjabloon detecteren en de taalmodus wijzigen. Als u Azure Resource Manager-sjabloon in de rechterbenedenhoek van Visual Studio Code ziet, kunt u de inlineopmerkingen gebruiken. De inlineopmerkingen worden niet meer gemarkeerd als ongeldig.

Visual Studio Code Azure Resource Manager-sjabloonmodus

Zie de opmerkingen in Bicep.

Metagegevens

U kunt bijna overal in uw sjabloon een metadata object toevoegen. Resource Manager het object negeert, maar de JSON-editor kan u waarschuwen dat de eigenschap niet geldig is. Definieer in het object de eigenschappen die u nodig hebt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Als parametersu een metadata object met een description eigenschap wilt toevoegen.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Bij het implementeren van de sjabloon via de portal wordt de tekst die u in de beschrijving opgeeft, automatisch gebruikt als tip voor die parameter.

Parametertip weergeven

Als resourcesu een comments element of object metadata wilt toevoegen. In het volgende voorbeeld ziet u zowel een comments element als een metadata object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Voeg outputseen metadata object toe aan de uitvoerwaarde.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

U kunt geen object toevoegen metadata aan door de gebruiker gedefinieerde functies.

Tekenreeksen met meerdere regels

U kunt een tekenreeks opsplitsen in meerdere regels. Zie bijvoorbeeld de location eigenschap en een van de opmerkingen in het volgende JSON-voorbeeld.

Notitie

Als u sjablonen met tekenreeksen met meerdere regels wilt implementeren, gebruikt u Azure PowerShell of Azure CLI. Gebruik voor CLI versie 2.3.0 of hoger en geef de --handle-extended-json-format switch op.

Tekenreeksen met meerdere regels worden niet ondersteund wanneer u de sjabloon implementeert via de Azure Portal, een DevOps-pijplijn of de REST API.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Zie in Bicep tekenreeksen met meerdere regels.

Volgende stappen