Extensiebronnen definiëren
Extensiebronnen worden altijd gekoppeld aan andere Azure-resources. Ze breiden het gedrag van deze resources uit met extra functionaliteit.
Enkele voorbeelden van algemene extensiebronnen zijn:
Naam | Brontype |
---|---|
Roltoewijzingen | Microsoft.Authorization/roleAssignments |
Beleidstoewijzingen | Microsoft.Authorization/policyAssignments |
Vergrendelingen | Microsoft.Authorization/locks |
Diagnostische instellingen | Microsoft.Insights/diagnosticSettings |
Denk bijvoorbeeld aan een vergrendeling die kan worden gebruikt om het verwijderen of wijzigen van een Azure-resource te voorkomen. Het is niet logisch om zelf een vergrendeling te implementeren. Deze moet altijd op een andere resource worden geïmplementeerd.
Notitie
De opdrachten in deze les worden weergegeven om concepten te illustreren. Voer de opdrachten nog niet uit. U oefent wat u hier binnenkort leert.
Hoe worden extensiebronnen gedefinieerd?
In Bicep definieert u een extensieresource meestal op dezelfde manier als een normale resource. U voegt echter de scope
eigenschap toe om Bicep te laten weten dat de resource moet worden gekoppeld aan een andere resource die elders in het Bicep-bestand is gedefinieerd. U gebruikt de symbolische naam van de resource om ernaar te verwijzen. Hier volgt bijvoorbeeld de definitie van een Azure Cosmos DB-account dat we eerder hebben gemaakt:
resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
name: cosmosDBAccountName
location: location
properties: {
// ...
}
}
We gaan een resourcevergrendeling toevoegen, waardoor niemand het Azure Cosmos DB-account kan verwijderen:
resource lockResource 'Microsoft.Authorization/locks@2020-05-01' = {
scope: cosmosDBAccount
name: 'DontDelete'
properties: {
level: 'CanNotDelete'
notes: 'Prevents deletion of the toy data Cosmos DB account.'
}
}
U ziet dat in het voorbeeld de scope
eigenschap wordt gebruikt met de symbolische naam van het Azure Cosmos DB-account. Met deze eigenschapsinstelling moet Bicep de resourcevergrendeling implementeren in het Azure Cosmos DB-account. Dit betekent dat deze niet meer kan worden verwijderd.
Extensieresource-id's
Een extensieresource heeft een iets andere id dan andere resources. Het bestaat uit de bovenliggende resource-id, het scheidingsteken /providers/
en de extensieresource-id.
Stel dat u het eerder genoemde Azure Cosmos DB-account hebt geïmplementeerd en dat het account de naam heeft gekregen toyrnd
. De resource-id van de vergrendeling ziet er als volgt uit:
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
Hier volgt een visuele weergave:
Als u een resource-id ziet die begint met een normale resource-id en vervolgens een ander resourcetype en een andere resourcenaam toevoegt /providers/
, betekent dit dat u een resource-id voor de extensie bekijkt.