Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bij het implementeren van resources moet u er mogelijk voor zorgen dat sommige resources worden geïmplementeerd voordat andere resources worden geïmplementeerd. U hebt bijvoorbeeld een logische SQL-server nodig voordat u een database implementeert. U stelt deze relatie vast door één resource als afhankelijk van de andere resource te markeren. De volgorde van resource-implementatie wordt op twee manieren bepaald: impliciete afhankelijkheid en expliciete afhankelijkheid
Azure Resource Manager evalueert de afhankelijkheden tussen resources en implementeert ze in hun afhankelijke volgorde. Als resources niet van elkaar afhankelijk zijn, worden deze door Resource Manager parallel geïmplementeerd. U hoeft alleen afhankelijkheden te definiëren voor resources die zijn geïmplementeerd in hetzelfde Bicep-bestand.
Impliciete afhankelijkheid
Er wordt een impliciete afhankelijkheid gemaakt wanneer de ene resourcedeclaratie verwijst naar een andere resource in dezelfde implementatie. In het volgende voorbeeld otherResource
wordt een eigenschap opgehaald uit exampleDnsZone
. De benoemde otherResource
resource is impliciet afhankelijk van exampleDnsZone
.
resource exampleDnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = {
name: 'myZone'
location: 'global'
}
resource otherResource 'Microsoft.Example/examples@2024-05-01' = {
name: 'exampleResource'
properties: {
// get read-only DNS zone property
nameServers: exampleDnsZone.properties.nameServers
}
}
Een geneste resource heeft ook een impliciete afhankelijkheid van de omvattende resource.
resource myParent 'My.Rp/parentType@2024-05-01' = {
name: 'myParent'
location: 'West US'
// implicit dependency on 'myParent'
resource myChild 'childType' = {
name: 'myChild'
}
}
Een resource met de eigenschap 'ouder' heeft een impliciete afhankelijkheid van de ouder resource. Het hangt af van de bovenliggende resource, niet van zijn andere onderliggende resources.
In het volgende voorbeeld ziet u een opslagaccount en bestandsservice. De bestandsservice heeft een impliciete afhankelijkheid van het opslagaccount.
resource storage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2023-05-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-05-01' = {
name: 'exampleshare'
parent: service
}
Wanneer er een impliciete afhankelijkheid bestaat, voegt u geen expliciete afhankelijkheid toe.
Voor meer informatie over geneste resources, zie Naam en type instellen voor onderliggende resources in Bicep.
Expliciete afhankelijkheid
Een expliciete afhankelijkheid wordt gedeclareerd met de dependsOn
eigenschap. De eigenschap accepteert een matrix met resource-id's, zodat u meer dan één afhankelijkheid kunt opgeven. U kunt een geneste resourceafhankelijkheid opgeven met behulp van de ::
operator.
In het volgende voorbeeld ziet u een DNS-zone met de naam otherZone
die afhankelijk is van een DNS-zone met de naam dnsZone
:
resource dnsZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
name: 'demoZone1'
location: 'global'
}
resource otherZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
name: 'demoZone2'
location: 'global'
dependsOn: [
dnsZone
]
}
Hoewel u misschien geneigd bent om dependsOn
te gebruiken om relaties tussen uw resources in kaart te brengen, is het belangrijk om te begrijpen waarom u dit doet. Als u bijvoorbeeld wilt documenteren hoe resources onderling zijn verbonden, dependsOn
is dit niet de juiste benadering. Na de implementatie behoudt de resource geen implementatieafhankelijkheden in de eigenschappen, dus er zijn geen opdrachten of bewerkingen waarmee u afhankelijkheden kunt zien. Het instellen van onnodige afhankelijkheden vertraagt de implementatietijd omdat Resource Manager deze resources niet parallel kan implementeren.
Hoewel expliciete afhankelijkheden soms vereist zijn, is de noodzaak hiervoor zeldzaam. In de meeste gevallen kunt u een symbolische naam gebruiken om de afhankelijkheid tussen resources te impliceren. Als u merkt dat u expliciete afhankelijkheden instelt, moet u overwegen of er een manier is om deze te verwijderen.
Afhankelijkheden visualiseren
Visual Studio Code biedt een hulpprogramma voor het visualiseren van de afhankelijkheden. Open een Bicep-bestand in Visual Studio Code en selecteer de knop Visualizer in de linkerbovenhoek. In de volgende schermopname ziet u de afhankelijkheden van een virtuele machine.
Volgende stappen
Voor de syntaxis om een resource te implementeren, zie de resourceverklaring in Bicep.