Definire le risorse di estensione
Le risorse di estensione sono sempre collegate ad altre risorse di Azure. Estendono il comportamento delle risorse con funzionalità aggiuntive.
Di seguito sono riportati alcuni esempi di risorse di estensione comuni:
Nome | Tipo di risorsa |
---|---|
Assegnazioni di ruoli | Microsoft.Authorization/roleAssignments |
Assegnazioni di criteri | Microsoft.Authorization/policyAssignments |
Locks | Microsoft.Authorization/locks |
Impostazioni di diagnostica | Microsoft.Insights/diagnosticSettings |
Si consideri ad esempio un blocco che può essere usato per impedire l'eliminazione o la modifica di una risorsa di Azure. Distribuire solo un blocco non è di alcuna utilità. Il blocco deve sempre essere distribuito in un'altra risorsa.
Nota
I comandi riportati in questa unità vengono illustrati per spiegare i concetti. Non eseguire ancora i comandi. Presto sarà possibile provare quanto appreso.
Come vengono definite le risorse di estensione?
In Bicep si definisce una risorsa di estensione principalmente allo stesso modo di una normale risorsa. Tuttavia, si aggiunge la proprietà scope
per indicare a Bicep che la risorsa deve essere collegata a un'altra risorsa definita in un'altra posizione nel file Bicep. Per fare riferimento alla risorsa, usare il nome simbolico della risorsa. Ad esempio, di seguito è riportata la definizione di un account Azure Cosmos DB creato in precedenza:
resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
name: cosmosDBAccountName
location: location
properties: {
// ...
}
}
Aggiungere un blocco di risorsa che impedisce a chiunque di eliminare l'account Azure Cosmos DB:
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.'
}
}
Si noti che nell'esempio viene usata la proprietà scope
con il nome simbolico dell'account Azure Cosmos DB. Questa impostazione della proprietà indica a Bicep di distribuire il blocco di risorsa nell'account Azure Cosmos DB, il che significa che non può più essere eliminato.
ID risorsa di estensione
Una risorsa di estensione ha un ID leggermente diverso rispetto alle altre risorse. È costituito dall'ID risorsa padre, dal separatore /providers/
e dall'ID risorsa di estensione.
Si supponga che sia stato distribuito l'account Azure Cosmos DB descritto in precedenza e che l'account sia stato denominato toyrnd
. Di seguito è illustrato l'aspetto dell'ID risorsa del blocco:
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
Di seguito è riportata una rappresentazione visiva:
Se viene visualizzato un ID risorsa che inizia con un ID risorsa normale e quindi aggiunge /providers/
e un altro tipo di risorsa e un altro nome, significa che si sta esaminando un ID risorsa di estensione.