Meglévő erőforrásokkal végzett munka

Befejeződött

A Bicep-fájloknak gyakran máshol létrehozott erőforrásokra kell hivatkoznia. Ezeket az erőforrásokat manuálisan is létrehozhatja egy munkatársa az Azure Portalon. Vagy létrehozható egy másik Bicep-fájlban. Számos oka van annak, hogy ezeket az erőforrásokat kell hivatkoznia, például:

  • SQL-adatbázist ad hozzá egy olyan Azure SQL logikai kiszolgálópéldányhoz, amelyet valaki már létrehozott.
  • Egy másik Bicep-modulban definiált erőforrások diagnosztikai beállításait konfigurálja.
  • Biztonságosan hozzá kell férnie az előfizetésben manuálisan üzembe helyezett tárfiók kulcsaihoz.

A Bicep biztosítja a existing kulcsszót, amelyet ezekben a helyzetekben használhat.

Feljegyzés

Az egység parancsai a fogalmakat szemléltetik. Még ne futtassa a parancsokat. Hamarosan gyakorolja, amit itt tanul.

Tekintse meg a meglévő erőforrásokat

Egy Bicep-fájlban definiálhat egy már létező erőforrást. A deklaráció a normál erőforrásdefinícióhoz hasonlóan néz ki, de van néhány lényeges különbség. A meglévő erőforrásdefiníció alábbi példájában a definíció egy nevű tárfiókra toydesigndocshivatkozik. A tárfiók ugyanabban az erőforráscsoportban található, amelyben a Bicep-sablon erőforrásokat helyez üzembe.

resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
  name: 'toydesigndocs'
}

Nézzük meg alaposan, mi alkotja ezt a definíciót:

  • Mint egy normál erőforrás esetében, a kulcsszót, a szimbolikus nevet, valamint az erőforrástípust és az API-verziót is tartalmaznia resource kell.

    Feljegyzés

    Ne feledje, hogy a szimbolikus név csak ebben a Bicep-fájlban használatos. Ha ezt az erőforrást egy Bicep-fájllal hozza létre, és egy másik Bicep-fájlban használja az existing erőforrást, a szimbolikus neveknek nem kell egyezniük.

  • A existing kulcsszó azt jelzi a Bicep számára, hogy ez az erőforrásdefiníció egy már létrehozott erőforrásra mutató hivatkozás, és hogy a Bicep nem próbálja meg üzembe helyezni.

  • A name tulajdonság a korábban üzembe helyezett tárfiók Azure-erőforrásneve.

  • Nem kell megadnia a location, skuvagy properties, mert a sablon nem telepíti az erőforrást. Csupán egy meglévő erőforrásra hivatkozik. Gondoljon rá helyőrző erőforrásként.

Tekintse meg a gyermekerőforrásokat

Egy meglévő gyermekerőforrásra is hivatkozhat. Használja ugyanazt a szintaxist, amelyet a gyermekerőforrás üzembe helyezésekor használt. Az alábbi példa bemutatja, hogyan hivatkozhat egy meglévő alhálózatra, amely egy virtuális hálózat gyermekerőforrása. A példa egy beágyazott gyermekerőforrást használ, ahogyan az itt látható:

resource vnet 'Microsoft.Network/virtualNetworks@2020-11-01' existing = {
  name: 'toy-design-vnet'

  resource managementSubnet 'subnets' existing = {
    name: 'management'
  }
}

Figyelje meg, hogy a szülő- és gyermekerőforrás is alkalmazza a kulcsszót existing .

Ezután az alhálózatra ugyanazzal :: az operátorral hivatkozhat, amelyet más beágyazott gyermekerőforrásokhoz is használ:

output managementSubnetResourceId string = vnet::managementSubnet.id

Tekintse meg az erőforráscsoporton kívüli erőforrásokat

Gyakran egy másik erőforráscsoport erőforrásaira kell hivatkoznia. Ha például egy központosított erőforráscsoportban található virtuális hálózat, érdemes lehet egy virtuális gépet üzembe helyezni a virtuális hálózatban a saját erőforráscsoportjában. A kulcsszóval scope hivatkozhat egy másik erőforráscsoport meglévő erőforrásaira. Az alábbi példa bemutatja, hogyan hivatkozhat az erőforráscsoporton belül elnevezett toy-design-vnet virtuális hálózatra networking-rg :

resource vnet 'Microsoft.Network/virtualNetworks@2020-11-01' existing = {
  scope: resourceGroup('networking-rg')
  name: 'toy-design-vnet'
}

Figyelje meg, hogy a scope kulcsszó a resourceGroup() virtuális hálózatot tartalmazó erőforráscsoportra hivatkozik.

Akár egy másik Azure-előfizetésben lévő erőforrásokra is hivatkozhat, feltéve, hogy az előfizetés a Microsoft Entra-bérlőn belül van. Ha a hálózati csapat egy másik előfizetésben helyezi üzembe a virtuális hálózatot, a sablon hivatkozhat rá, ahogyan az alábbi példában is látható:

resource vnet 'Microsoft.Network/virtualNetworks@2020-11-01' existing = {
  scope: resourceGroup('A123b4567c-1234-1a2b-2b1a-1234abc12345', 'networking-rg')
  name: 'toy-design-vnet'
}

Figyelje meg, hogy a scope kulcsszó a resourceGroup() virtuális hálózatot tartalmazó Azure-előfizetés-azonosítóra (A123b4567c-1234-1a2b-2b1a-1234abc12345) és erőforráscsoport-névre hivatkozik.

Most, hogy megismerte, hogyan hivatkozhat meglévő erőforrásokra, nézzük meg, hogyan használhatja ezt a képességet a sablonokban.

Gyermek- és bővítményerőforrások hozzáadása meglévő erőforráshoz

Gyermekerőforrást a kulcsszó és a existingparent kulcsszó kombinációjával adhat hozzá egy már létrehozott szülőerőforráshoz. Az alábbi példasablon létrehoz egy Azure SQL-adatbázist egy már létező kiszolgálón belül:

resource server 'Microsoft.Sql/servers@2020-11-01-preview' existing = {
  name: serverName
}

resource database 'Microsoft.Sql/servers/databases@2020-11-01-preview' = {
  parent: server
  name: databaseName
  location: location
  sku: {
    name: 'Standard'
    tier: 'Standard'
  }
}

Ha bővítményerőforrást kell üzembe helyeznie egy meglévő erőforrásban, használhatja a kulcsszót scope . Íme egy sablon, amely a existing kulcsszót és a scope kulcsszót használja egy erőforrás-zárolás hozzáadásához egy már létező tárfiókhoz:

resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
  name: 'toydesigndocs'
}

resource lockResource 'Microsoft.Authorization/locks@2016-09-01' = {
  scope: storageAccount
  name: 'DontDelete'
  properties: {
    level: 'CanNotDelete'
    notes: 'Prevents deletion of the toy design documents storage account.'
  }
}

Meglévő erőforrás tulajdonságainak megtekintése

Az erőforrásoknak gyakran más erőforrások tulajdonságaira kell hivatkoznia. Ha például üzembe helyez egy alkalmazást, előfordulhat, hogy ismernie kell egy másik erőforrás kulcsait vagy kapcsolati adatait. A kulcsszó használatával existing hozzáférhet annak az erőforrásnak a tulajdonságaihoz, amelyekre hivatkozik.

Tipp.

Ajánlott így keresni a kulcsokat más erőforrásokból ahelyett, hogy a kimeneteken keresztül továbbítanák őket. Mindig a legfrissebb adatokat fogja megkapni. Emellett fontos, hogy a kimenetek nem biztonságos adatok, például kulcsok kezelésére lettek tervezve.

Az erőforrással kapcsolatos információk elérésének módja a kapott információk típusától függ. Ha ez egy olyan tulajdonság, amely nem biztonságos, általában csak az properties erőforrást használja. Az alábbi példasablon üzembe helyez egy Azure Functions-alkalmazást, és a hozzáférési adatokat (rendszerállapotkulcsot) használja egy már létrehozott alkalmazás Elemzések-példányhoz:

resource applicationInsights 'Microsoft.Insights/components@2018-05-01-preview' existing = {
  name: applicationInsightsName
}

resource functionApp 'Microsoft.Web/sites@2020-06-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp'
  properties: {
    siteConfig: {
      appSettings: [
        // ...
        {
          name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
          value: applicationInsights.properties.InstrumentationKey
        }
      ]
    }
  }
}

Ebben a példában, mivel a rendszerállapot-kulcs nem tekinthető bizalmas adatnak, az elérhető az properties erőforrásban. Ha biztonságos adatokhoz, például az erőforrások eléréséhez használt hitelesítő adatokhoz kell hozzáférnie, használja a listKeys() függvényt az alábbi kódban látható módon:

resource storageAccount 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
  name: storageAccountName
}

resource functionApp 'Microsoft.Web/sites@2020-06-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp'
  properties: {
    siteConfig: {
      appSettings: [
        // ...
        {
          name: 'StorageAccountKey'
          value: storageAccount.listKeys().keys[0].value
        }
      ]
    }
  }
}

Figyelje meg, hogy a listKeys függvény egy tömböt keys ad vissza. A Bicep-kód lekéri a value tulajdonságot a keys tömb első eleméből. Minden erőforrástípus különböző információkat tartalmaz a listKeys() függvénytől. A Visual Studio Code Bicep-bővítménye tippeket ad az egyes erőforrások függvényei listKeys() által visszaadott adatok megértéséhez. Az alábbi képernyőképen egy listKeys() tárfiók függvényének kimenete látható:

Képernyőkép a Visual Studio Code Bicep-bővítményéről. Az IntelliSense számos olyan információt jelenít meg, amelyeket a tárfiók listKeys függvénye adott vissza.

Egyes erőforrások más függvényeket is támogatnak. A Visual Studio Code IntelliSense szolgáltatása felsorolja az egyes erőforrásokhoz elérhető függvényeket. Az alábbi képernyőképen láthatja, hogy a tárfiókok a következő mellett elnevezett listAccountSas() függvényeket listServiceSas()listKeys()is biztosítanak:

Képernyőkép a Visual Studio Code Bicep-bővítményéről. Az IntelliSense számos, a tárfiókhoz elérhető függvényt jelenít meg.

Fontos

A listKeys() függvény hozzáférést biztosít az erőforrás bizalmas adataihoz. Ez azt jelenti, hogy az üzembe helyezést futtató felhasználónak vagy szolgáltatásnévnek rendelkeznie kell az erőforrás megfelelő szintű engedélyével. Ez általában a Közreműködő beépített szerepköre, vagy egy egyéni szerepkör, amely a megfelelő engedélyt rendeli hozzá.