Definire le risorse di estensione

Completato

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 scope proprietà per indicare a Bicep che la risorsa deve essere collegata a un'altra risorsa definita altrove nel file Bicep. Per fare riferimento alla risorsa, usare il nome simbolico della risorsa. Ecco ad esempio la definizione di un account Azure Cosmos DB creato in precedenza:

resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
  name: cosmosDBAccountName
  location: location
  properties: {
    // ...
  }
}

Si aggiungerà ora un blocco delle risorse 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 di proprietà indica a Bicep di distribuire il blocco delle risorse 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:

Extension resource ID for a resource lock applied to an Azure Cosmos DB account, split with the key-value pair on a separate line.

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.