Naam en type instellen voor onderliggende resources
Onderliggende resources zijn resources die alleen bestaan binnen de context van een andere resource. Een virtuele-machine-extensie kan bijvoorbeeld niet bestaan zonder een virtuele machine. De extensieresource is een onderliggend element van de virtuele machine.
Elke bovenliggende resource accepteert alleen bepaalde resourcetypen als onderliggende resources. Het resourcetype voor de onderliggende resource bevat het resourcetype voor de bovenliggende resource. En Microsoft.Web/sites/extensions
zijn bijvoorbeeld Microsoft.Web/sites/config
beide onderliggende resources van de Microsoft.Web/sites
. De geaccepteerde resourcetypen worden opgegeven in het sjabloonschema van de bovenliggende resource.
In een ARM-sjabloon (Azure Resource Manager) kunt u de onderliggende resource opgeven binnen de bovenliggende resource of buiten de bovenliggende resource. De waarden die u opgeeft voor de resourcenaam en het resourcetype variëren afhankelijk van of de onderliggende resource binnen of buiten de bovenliggende resource is gedefinieerd.
Tip
We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis eenvoudiger te gebruiken is. Zie onderliggende resources voor meer informatie.
Binnen bovenliggende resource
In het volgende voorbeeld ziet u de onderliggende resource die is opgenomen in de eigenschap resources van de bovenliggende resource.
"resources": [
{
<parent-resource>
"resources": [
<child-resource>
]
}
]
Onderliggende resources kunnen slechts vijf niveaus diep worden gedefinieerd.
Wanneer dit is gedefinieerd binnen het bovenliggende resourcetype, formatteert u het type en de naamwaarden als één segment zonder schuine streepjes.
"type": "{child-resource-type}",
"name": "{child-resource-name}",
In het volgende voorbeeld ziet u een virtueel netwerk en met een subnet. U ziet dat het subnet is opgenomen in de resourcesmatrix voor het virtuele netwerk. De naam is ingesteld op Subnet1 en het type is ingesteld op subnetten. De onderliggende resource is gemarkeerd als afhankelijk van de bovenliggende resource, omdat de bovenliggende resource moet bestaan voordat de onderliggende resource kan worden geïmplementeerd.
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2022-11-01",
"name": "VNet1",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
}
},
"resources": [
{
"type": "subnets",
"apiVersion": "2022-11-01",
"name": "Subnet1",
"dependsOn": [
"VNet1"
],
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
}
]
Het volledige resourcetype is nog steeds Microsoft.Network/virtualNetworks/subnets
. U geeft niet op Microsoft.Network/virtualNetworks/
omdat dit wordt verondersteld van het bovenliggende resourcetype.
De naam van de onderliggende resource is ingesteld op Subnet1 , maar de volledige naam bevat de bovenliggende naam. U levert VNet1 niet op omdat dit wordt verondersteld van de bovenliggende resource.
Externe bovenliggende resource
In het volgende voorbeeld ziet u de onderliggende resource buiten de bovenliggende resource. U kunt deze methode gebruiken als de bovenliggende resource niet in dezelfde sjabloon is geïmplementeerd of als u een kopie wilt gebruiken om meer dan één onderliggende resource te maken.
"resources": [
{
<parent-resource>
},
{
<child-resource>
}
]
Wanneer deze is gedefinieerd buiten de bovenliggende resource, formatteert u de type- en naamwaarden met slashes, zodat het bovenliggende type en de naam worden opgenomen.
"type": "{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}",
"name": "{parent-resource-name}/{child-resource-name}",
In het volgende voorbeeld ziet u een virtueel netwerk en een subnet die beide zijn gedefinieerd op het hoofdniveau. U ziet dat het subnet niet is opgenomen in de resourcesmatrix voor het virtuele netwerk. De naam is ingesteld op VNet1/Subnet1 en het type is ingesteld op Microsoft.Network/virtualNetworks/subnets
. De onderliggende resource is gemarkeerd als afhankelijk van de bovenliggende resource, omdat de bovenliggende resource moet bestaan voordat de onderliggende resource kan worden geïmplementeerd.
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2022-11-01",
"name": "VNet1",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
}
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2022-11-01",
"name": "VNet1/Subnet1",
"dependsOn": [
"VNet1"
],
"properties": {
"addressPrefix": "10.0.0.0/24"
}
}
]
Volgende stappen
- Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor meer informatie over het maken van ARM-sjablonen.
- Zie de verwijzingsfunctie voor meer informatie over de indeling van de resourcenaam wanneer u naar de resource verwijst.