Bicep 中的資源相依性
部署資源時,您必須確認某些資源部署於其他資源之前。 例如,您需要先有邏輯 SQL 伺服器才能部署資料庫。 您可以將某個資源標示為與其他資源相依,以建立此關聯性。 資源部署的順序是以兩種方式來決定:隱含相依性和明確相依性
Azure Resource Manager 會評估資源之間的相依性,並依其相依順序進行部署。 如果資源並未彼此相依,Resource Manager 就會平行部署資源。 您只需要針對部署在相同 Bicep 檔案中的資源定義相依性。
隱含相依性
一個資源宣告參考相同部署中的另一個資源時,就會建立隱含相依性。 在下列範例中,otherResource
會從 exampleDnsZone
取得屬性。 名為 otherResource
的資源會隱含相依於 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
}
}
巢狀資源在其包含的資源上也有隱含的相依性。
resource myParent 'My.Rp/parentType@2024-05-01' = {
name: 'myParent'
location: 'West US'
// implicit dependency on 'myParent'
resource myChild 'childType' = {
name: 'myChild'
}
}
包含父屬性的資源對父資源具有隱含相依性。 這取決於父資源,而不是其任何其他子資源。
下列範例說明儲存體帳戶和檔案服務。 檔案服務對儲存體帳戶具有隱含相依性。
resource storage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2023-04-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-04-01' = {
name: 'exampleshare'
parent: service
}
當隱含相依性存在時,請勿新增明確相依性。
如需關於巢狀資源的詳細資訊,請參閱在 Bicep 中設定子資源的名稱和類型。
明確相依性
明確的相依性是使用 dependsOn
屬性來宣告。 屬性接受資源識別碼的陣列,因此您可以指定多個相依性。 您可以使用 ::
運算子來指定巢狀資源相依性。
下列範例顯示名為 otherZone
的 DNS 區域,其相依於名為 dnsZone
的 DNS 區域:
resource dnsZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
name: 'demoeZone1'
location: 'global'
}
resource otherZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
name: 'demoZone2'
location: 'global'
dependsOn: [
dnsZone
]
}
雖然您可能傾向使用 dependsOn
來對應資源之間的關聯性,但請務必了解您要這麼做的原因。 例如,若要記錄資源互連的方式,dependsOn
並不是適當的方法。 部署之後,資源不會在其屬性中保留部署相依性,因此不會有可讓您看到相依性的命令或作業。 設定不必要的相依性會拖慢部署時間,因為 Azure Resource Manager 無法平行部署這些資源。
即使有時候需要明確相依性,但其需求卻很罕見。 在多數情況下,您可以使用符號名稱來表示資源之間的相依性。 如果您發現自己設定了明確相依性,則應考慮是否有方法可以將其移除。
視覺化相依性
Visual Studio Code 提供視覺化相依性的工具。 在 Visual Studio Code 中開啟 Bicep 檔案,然後選取左上角的 [視覺化檢視] 按鈕。 下列螢幕擷取畫面顯示虛擬機器的相依性。
下一步
如需部署資源的語法,請參閱 Bicep 中的資源宣告。