Freigeben über


Ressourcenabhängigkeiten in Bicep

Beim Bereitstellen von Ressourcen müssen Sie möglicherweise sicherstellen, dass einige Ressourcen vor anderen Ressourcen bereitgestellt werden. Sie benötigen beispielsweise einen logischen SQL-Server, bevor Sie eine Datenbank bereitstellen. Sie richten diese Beziehung ein, indem Sie eine Ressource als abhängig von der anderen Ressource markieren. Die Reihenfolge der Ressourcenbereitstellung wird auf zwei Arten bestimmt: implizite Abhängigkeit und explizite Abhängigkeit

Azure Resource Manager wertet die Abhängigkeiten zwischen Ressourcen aus und stellt sie in ihrer abhängigen Reihenfolge bereit. Wenn Ressourcen nicht voneinander abhängig sind, stellt Resource Manager sie parallel bereit. Sie müssen nur Abhängigkeiten für Ressourcen definieren, die in derselben Bicep-Datei bereitgestellt werden.

Implizite Abhängigkeit

Eine implizite Abhängigkeit wird erstellt, wenn eine Ressourcendeklaration auf eine andere Ressource in derselben Bereitstellung verweist. Im folgenden Beispiel wird von otherResource eine Eigenschaft von exampleDnsZone abgerufen. Die Ressource namens otherResource ist implizit abhängig von 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
  }
}

Eine geschachtelte Ressource verfügt ebenfalls über eine implizite Abhängigkeit von ihrer enthaltenden Ressource.

resource myParent 'My.Rp/parentType@2024-05-01' = {
  name: 'myParent'
  location: 'West US'

  // implicit dependency on 'myParent'
  resource myChild 'childType' = {
    name: 'myChild'
  }
}

Eine Ressource, die die übergeordnete Eigenschaft enthält, hat eine implizite Abhängigkeit von der übergeordneten Ressource. Sie hängt von der übergeordneten Ressource und nicht von den anderen untergeordneten Ressourcen ab.

Das folgende Beispiel zeigt ein Speicherkonto und einen Dateidienst. Der Dateidienst hat eine implizite Abhängigkeit vom Speicherkonto.

resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2025-06-01' = {
  name: 'default'
  parent: storage
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-06-01' = {
  name: 'exampleshare'
  parent: service
}

Wenn eine implizite Abhängigkeit vorhanden ist, fügen Sie keine explizite Abhängigkeit hinzu.

Weitere Informationen zu geschachtelten Ressourcen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen in Bicep.

Explizite Abhängigkeit

Eine explizite Abhängigkeit wird mit der dependsOn Eigenschaft deklariert. Die Eigenschaft akzeptiert ein Array von Ressourcenbezeichnern, sodass Sie mehrere Abhängigkeiten angeben können. Sie können eine geschachtelte Ressourcenabhängigkeit mithilfe des :: Operators angeben.

Das folgende Beispiel zeigt eine DNS-Zone mit dem Namen otherZone , die von einer DNS-Zone mit dem Namen dnsZoneabhängt:

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
  ]
}

Auch wenn Sie möglicherweise dazu neigen, dependsOn zur Zuordnung von Beziehungen zwischen Ihren Ressourcen zu verwenden, ist es wichtig zu verstehen, warum Sie es tun. Um beispielsweise zu dokumentieren, wie Ressourcen miteinander verbunden sind, dependsOn ist nicht der richtige Ansatz. Nach der Bereitstellung behält die Ressource keine Bereitstellungsabhängigkeiten in ihren Eigenschaften bei, sodass keine Befehle oder Vorgänge vorhanden sind, mit denen Sie Abhängigkeiten anzeigen können. Das Festlegen unnötiger Abhängigkeiten verlangsamt die Bereitstellungszeit, da der Ressourcen-Manager diese Ressourcen nicht parallel bereitstellen kann.

Auch wenn explizite Abhängigkeiten manchmal erforderlich sind, ist die Notwendigkeit für sie selten. In den meisten Fällen können Sie einen symbolischen Namen verwenden, um die Abhängigkeit zwischen Ressourcen zu impliziert. Wenn Sie feststellen, dass Sie explizite Abhängigkeiten festlegen, sollten Sie überlegen, ob es eine Möglichkeit gibt, sie zu entfernen.

Visualisieren von Abhängigkeiten

Visual Studio Code stellt ein Tool zum Visualisieren der Abhängigkeiten bereit. Öffnen Sie eine Bicep-Datei in Visual Studio Code, und wählen Sie die Schaltfläche "Visualizer" in der oberen linken Ecke aus. Der folgende Screenshot zeigt die Abhängigkeiten eines virtuellen Computers.

Screenshot des Visual Studio Code Bicep-Ressourcenvisualisierers

Nächste Schritte

Informationen zur Syntax zum Bereitstellen einer Ressource finden Sie unter "Ressourcendeklaration" in Bicep.