Gyermekerőforrások nevének és típusának beállítása a Bicepben
A gyermekerőforrások olyan erőforrások, amelyek csak egy másik erőforrás környezetében léteznek. Egy virtuálisgép-bővítmény például nem létezhet virtuális gép nélkül. A bővítményerőforrás a virtuális gép gyermeke.
Minden szülőerőforrás csak bizonyos erőforrástípusokat fogad el gyermekerőforrásként. Az erőforrástípusok hierarchiája a Bicep-erőforrásreferenciában érhető el.
Ez a cikk különböző módszereket mutat be a gyermekerőforrás deklarálásához.
Képzési források
Ha inkább a gyermekerőforrásokról szeretne részletes útmutatót használni, olvassa el a Gyermek- és bővítményerőforrások üzembe helyezése a Bicep használatával című témakört.
Név- és típusminta
A Bicepben megadhatja a gyermekerőforrást a szülőerőforráson belül vagy a szülőerőforráson kívül. Az erőforrásnévhez és az erőforrástípushoz megadott értékek a gyermekerőforrás deklarálása alapján változnak. A teljes név és a típus azonban mindig ugyanazzal a mintával oldható fel.
A gyermekerőforrás teljes neve a következő mintát használja:
{parent-resource-name}/{child-resource-name}
Ha a hierarchia több mint két szinttel rendelkezik, ismételje meg a szülőneveket:
{parent-resource-name}/{child-level1-resource-name}/{child-level2-resource-name}
A gyermekerőforrás teljes típusa a következő mintát használja:
{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}
Ha a hierarchiában kettőnél több szint található, ismételje meg a szülőerőforrás-típusokat:
{resource-provider-namespace}/{parent-resource-type}/{child-level1-resource-type}/{child-level2-resource-type}
Ha megszámolja a karakterek közötti /
szegmenseket, a típus szegmenseinek száma mindig eggyel több, mint a névben szereplő szegmensek száma.
Szülőerőforráson belül
Az alábbi példa a szülőerőforrás resources tulajdonságában található gyermekerőforrást mutatja be.
resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
<parent-resource-properties>
resource <child-resource-symbolic-name> '<child-resource-type>' = {
<child-resource-properties>
}
}
A beágyazott erőforrás-deklarációnak a szülőerőforrás legfelső szintaktikai szintjén kell megjelennie. A deklarációk tetszőlegesen mélyen ágyazhatók be, feltéve, hogy minden szint a szülőerőforrás gyermektípusa.
Ha a szülőerőforrás-típuson belül van definiálva, a típus- és névértékeket perjelek nélküli szegmensként formázza. Az alábbi példa egy tárfiókot mutat be a fájlszolgáltatás gyermekerőforrásával, a fájlszolgáltatás pedig gyermekerőforrással rendelkezik a fájlmegosztáshoz. A fájlszolgáltatás neve értékre default
van állítva, típusa pedig értékre fileServices
van állítva. A fájlmegosztás neve be van állítva exampleshare
, a típusa pedig értékre shares
van állítva.
resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
A teljes erőforrástípusok továbbra is Microsoft.Storage/storageAccounts/fileServices
és Microsoft.Storage/storageAccounts/fileServices/shares
. Nem adja meg Microsoft.Storage/storageAccounts/
, mert a szülőerőforrás típusából és verziójából feltételezzük. A beágyazott erőforrás opcionálisan deklarálhat egy API-verziót a szintaxis <segment>@<version>
használatával. Ha a beágyazott erőforrás kihagyja az API-verziót, a rendszer a szülőerőforrás API-verzióját használja. Ha a beágyazott erőforrás egy API-verziót határoz meg, a rendszer a megadott API-verziót használja.
A gyermekerőforrás neve és értékre default
exampleshare
van állítva, de a teljes nevek tartalmazzák a szülőneveket. Nem adja meg a vagy examplestorage
default
azokat, mert a szülőerőforrásból feltételezik őket.
A beágyazott erőforrások hozzáférhetnek a szülőerőforrás tulajdonságaihoz. Az ugyanazon szülőerőforrás törzsében deklarált egyéb erőforrások a szimbolikus nevek használatával hivatkozhatnak egymásra. Előfordulhat, hogy egy szülőerőforrás nem fér hozzá a benne található erőforrások tulajdonságaihoz, ez a kísérlet ciklikus függőséget okozna.
Ha egy beágyazott erőforrásra a szülőerőforráson kívül szeretne hivatkozni, az erőforrást tartalmazó erőforrásnévvel és az operátorral kell minősíteni ::
. Például egy tulajdonság gyermekerőforrásból való kimenetéhez:
output childAddressPrefix string = VNet1::VNet1_Subnet1.properties.addressPrefix
Külső szülőerőforrás
Az alábbi példa a szülőerőforráson kívüli gyermekerőforrást mutatja be. Ezt a módszert akkor használhatja, ha a szülőerőforrás nincs ugyanabban a sablonban üzembe helyezve, vagy ha hurkot szeretne használni egynél több gyermekerőforrás létrehozásához. Adja meg a szülőtulajdonságot a gyermeken, amelynek értéke a szülő szimbolikus nevére van beállítva. Ezzel a szintaxissal továbbra is deklarálnia kell a teljes erőforrástípust, de a gyermekerőforrás neve csak a gyermek neve.
resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
name: 'myParent'
<parent-resource-properties>
}
resource <child-resource-symbolic-name> '<child-resource-type>@<api-version>' = {
parent: <parent-resource-symbolic-name>
name: 'myChild'
<child-resource-properties>
}
Ha a szülőerőforráson kívül van definiálva, a típust és a perjeleket úgy formázza, hogy tartalmazzák a szülő típusát és nevét.
Az alábbi példa egy olyan tárfiókot, fájlszolgáltatást és fájlmegosztást mutat be, amely mind a gyökérszinten van definiálva.
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
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2022-09-01' = {
name: 'exampleshare'
parent: service
}
A gyermekerőforrás szimbolikus nevére való hivatkozás ugyanúgy működik, mint a szülőre való hivatkozás.
Teljes erőforrásnév a szülőn kívül
A gyermekerőforrás szülőn kívüli deklarálásakor a teljes erőforrásnevet és típust is használhatja. Nem állítja be a szülőtulajdonságot a gyermekerőforráson. Mivel a függőséget nem lehet kikövetkeztetni, explicit módon kell beállítania.
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: 'examplestorage/default'
dependsOn: [
storage
]
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2022-09-01' = {
name: 'examplestorage/default/exampleshare'
dependsOn: [
service
]
}
Fontos
A teljes erőforrásnév és -típus beállítása nem az ajánlott módszer. Nem olyan biztonságos típus, mint a többi módszer egyikének használata. További információ: Linter-szabály: szülőtulajdonság használata.
Következő lépések
- A Bicep-fájlok létrehozásáról a Bicep-fájlok szerkezetének és szintaxisának ismertetése című témakörben olvashat.
- Az erőforrásra való hivatkozáskor az erőforrás nevének formátumáról a referenciafüggvényben tájékozódhat.