Bicep'teki kaynak bağımlılıkları

Kaynakları dağıtırken, bazı kaynakların diğer kaynaklara dağıtıldığından emin olmanız gerekebilir. Örneğin, veritabanını dağıtmadan önce mantıksal bir SQL sunucusuna ihtiyacınız vardır. Bir kaynağı diğer kaynağa bağımlı olarak işaretleyerek bu ilişkiyi kurarsınız. Kaynak dağıtımının sırası iki şekilde belirlenir: örtük bağımlılık ve açık bağımlılık

Azure Resource Manager kaynaklar arasındaki bağımlılıkları değerlendirir ve bağımlı sıralarına göre dağıtır. Resource Manager, birbirine bağımlı olmayan kaynakları paralel olarak dağıtır. Yalnızca aynı Bicep dosyasında dağıtılan kaynaklar için bağımlılıkları tanımlamanız gerekir.

Örtük bağımlılık

Bir kaynak bildirimi aynı dağıtımdaki başka bir kaynağa başvurduğunda örtük bir bağımlılık oluşturulur. Aşağıdaki örnekte, otherResource 'den exampleDnsZonebir özellik alır. adlı otherResource kaynak örtük olarak öğesine bağımlıdır exampleDnsZone.

resource exampleDnsZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'myZone'
  location: 'global'
}

resource otherResource 'Microsoft.Example/examples@2023-05-01' = {
  name: 'exampleResource'
  properties: {
    // get read-only DNS zone property
    nameServers: exampleDnsZone.properties.nameServers
  }
}

İç içe yerleştirilmiş bir kaynağın, içeren kaynağı üzerinde örtük bir bağımlılığı da vardır.

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

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

Üst özelliği içeren bir kaynağın üst kaynağa örtük bir bağımlılığı vardır. Diğer alt kaynaklarına değil üst kaynağa bağlıdır.

Aşağıdaki örnekte bir depolama hesabı ve dosya hizmeti gösterilmektedir. Dosya hizmetinin depolama hesabına örtük bir bağımlılığı vardır.

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

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

Örtük bir bağımlılık mevcut olduğunda, açık bir bağımlılık eklemeyin.

İç içe kaynaklar hakkında daha fazla bilgi için bkz. Bicep'te alt kaynaklar için ad ve tür ayarlama.

Açık bağımlılık

özelliğiyle dependsOn açık bir bağımlılık bildirilir. özelliği bir kaynak tanımlayıcısı dizisi kabul eder, böylece birden fazla bağımlılık belirtebilirsiniz. işlecini kullanarak:: iç içe kaynak bağımlılığı belirtebilirsiniz.

Aşağıdaki örnekte, adlı bir DNS bölgesine bağımlı olan adlı otherZone bir DNS bölgesi gösterilmektedir dnsZone:

resource dnsZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'demoeZone1'
  location: 'global'
}

resource otherZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'demoZone2'
  location: 'global'
  dependsOn: [
    dnsZone
  ]
}

Kaynaklarınız arasındaki ilişkileri eşlemek için kullanmaya dependsOn eğilimli olabilirsiniz ancak bunu neden yaptığınızı anlamanız önemlidir. Örneğin, kaynakların nasıl birbirine bağlı dependsOn olduğunu belge etmek doğru yaklaşım değildir. Dağıtımdan sonra kaynak, özelliklerinde dağıtım bağımlılıklarını korumaz, bu nedenle bağımlılıkları görmenize olanak sağlayan komut veya işlem yoktur. Resource Manager bu kaynakları paralel olarak dağıtamadığından, gereksiz bağımlılıkların ayarlanması dağıtım süresini yavaşlatıyor.

Açık bağımlılıklar bazen gerekli olsa da, bunlara duyulan ihtiyaç nadirdir. Çoğu durumda, kaynaklar arasındaki bağımlılığı ima etmek için sembolik bir ad kullanabilirsiniz. Kendinizi açık bağımlılıklar ayarlarken bulursanız, kaldırmanın bir yolu olup olmadığını göz önünde bulundurmanız gerekir.

Bağımlılıkları görselleştirme

Visual Studio Code, bağımlılıkları görselleştirmek için bir araç sağlar. Visual Studio Code'da bir Bicep dosyası açın ve sol üst köşedeki görselleştirici düğmesini seçin. Aşağıdaki ekran görüntüsünde bir sanal makinenin bağımlılıkları gösterilmektedir.

Visual Studio Code Bicep kaynak görselleştiricisinin ekran görüntüsü

Sonraki adımlar

Kaynak dağıtma söz dizimi için bkz. Bicep'te kaynak bildirimi.