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 exampleDnsZone
bir özellik alır. adlı otherResource
kaynak örtük olarak öğesine bağımlıdır 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
}
}
İç 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@2024-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@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
}
Ö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@2023-07-01-preview' = {
name: 'demoeZone1'
location: 'global'
}
resource otherZone 'Microsoft.Network/dnszones@2023-07-01-preview' = {
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.
Sonraki adımlar
Kaynak dağıtma söz dizimi için bkz. Bicep'te kaynak bildirimi.