Erőforrás-függőségek a Bicepben

Az erőforrások üzembe helyezésekor előfordulhat, hogy bizonyos erőforrásokat más erőforrások előtt kell üzembe helyezni. Például egy logikai SQL-kiszolgálóra van szüksége az adatbázis üzembe helyezése előtt. Ezt a kapcsolatot úgy hozhatja létre, hogy az egyik erőforrást a másik erőforrástól függőként jelöli meg. Az erőforrás üzembe helyezésének sorrendje kétféleképpen van meghatározva: implicit függőség és explicit függőség

Az Azure Resource Manager kiértékeli az erőforrások közötti függőségeket, és a függő sorrendben helyezi üzembe őket. Ha az erőforrások között nincs függőségi viszony, akkor a Resource Manager párhuzamosan helyezi üzembe azokat. Csak olyan erőforrások függőségeit kell definiálnia, amelyek ugyanabban a Bicep-fájlban vannak üzembe helyezve.

Implicit függőség

Implicit függőség akkor jön létre, ha egy erőforrás-deklaráció egy másik erőforrásra hivatkozik ugyanabban az üzembe helyezésben. Az alábbi példában otherResource lekér egy tulajdonságot a következőből exampleDnsZone: . A nevű otherResource erőforrás implicit módon függ a függvénytől 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
  }
}

A beágyazott erőforrások implicit függőséget is tartalmaznak a benne található erőforrástól.

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

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

A szülőtulajdonságokat tartalmazó erőforrás implicit függőséget tartalmaz a szülőerőforrástól. A szülőerőforrástól függ, a többi gyermekerőforrástól nem.

Az alábbi példa egy tárfiókot és egy fájlszolgáltatást mutat be. A fájlszolgáltatás implicit függőséget biztosít a tárfióktól.

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
}

Ha implicit függőség létezik, ne adjon hozzá explicit függőséget.

A beágyazott erőforrásokról további információt a Gyermekerőforrások nevének és típusának megadása a Bicepben című témakörben talál.

Explicit függőség

A tulajdonság explicit dependsOn függőséget deklarál. A tulajdonság elfogad egy erőforrás-azonosítók tömböt, így több függőséget is megadhat. Beágyazott erőforrás-függőséget az :: operátorral adhat meg.

Az alábbi példa egy nevű otherZone DNS-zónát mutat be, amely egy nevű dnsZoneDNS-zónától függ:

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

Bár érdemes lehet az erőforrások közötti kapcsolatok leképezésére használni dependsOn , fontos megérteni, hogy miért csinálja. Az erőforrások összekapcsolási dependsOn módjának dokumentálásához például nem a megfelelő módszer. Az üzembe helyezés után az erőforrás nem őrzi meg az üzembehelyezési függőségeket a tulajdonságaiban, így nincsenek olyan parancsok vagy műveletek, amelyek lehetővé teszik a függőségek megtekintését. A szükségtelen függőségek beállítása lelassítja az üzembe helyezés idejét, mert Resource Manager nem tudja párhuzamosan üzembe helyezni ezeket az erőforrásokat.

Annak ellenére, hogy néha explicit függőségekre van szükség, ritkán van rájuk szükség. A legtöbb esetben szimbolikus névvel utalhat az erőforrások közötti függőségre. Ha úgy találja, hogy explicit függőségeket állít be, érdemes megfontolnia, hogy van-e módja annak eltávolítására.

Függőségek vizualizációja

A Visual Studio Code egy eszközt biztosít a függőségek vizualizációjára. Nyisson meg egy Bicep-fájlt a Visual Studio Code-ban, és válassza a vizualizáció gombot a bal felső sarokban. Az alábbi képernyőkép egy virtuális gép függőségeit mutatja be.

Képernyőkép a Visual Studio Code Bicep-erőforrásábrázolóról

Következő lépések

Az erőforrás üzembe helyezésének szintaxisát lásd: Erőforrás-deklaráció a Bicepben.