Extensiebronnen definiëren

Voltooid

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:

Extensieresource-id voor een resourcevergrendeling die is toegepast op een Azure Cosmos DB-account, gesplitst met het sleutel-waardepaar op een afzonderlijke regel.

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.