Définir des ressources d’extension

Effectué

Les ressources d’extension sont toujours jointes à d’autres ressources Azure. Elles étendent le comportement de ces ressources en ajoutant des fonctionnalités supplémentaires.

Voici quelques exemples de ressources d’extension courantes :

Nom Type de ressource
Attributions de rôles Microsoft.Authorization/roleAssignments
Attributions de stratégies Microsoft.Authorization/policyAssignments
Verrous Microsoft.Authorization/locks
Paramètres de diagnostic Microsoft.Insights/diagnosticSettings

Par exemple, imaginez un verrou qui peut être utilisé pour empêcher la suppression ou la modification d’une ressource Azure. Il n’est pas judicieux de déployer un verrou seul. Celui-ci doit toujours être déployé sur une autre ressource.

Notes

Les commandes de cette unité sont présentées pour illustrer les concepts. N’exécutez pas encore les commandes. Vous allez bientôt mettre en pratique ce que vous apprenez ici.

Comment les ressources d’extension sont-elles définies ?

Dans Bicep, vous définissez une ressource d’extension de la même manière qu’une ressource normale. Toutefois, vous ajoutez la propriété scope pour indiquer à Bicep que la ressource doit être jointe à une autre ressource définie ailleurs dans le fichier Bicep. Vous utilisez le nom symbolique de la ressource pour y faire référence. Par exemple, voici la définition d’un compte Azure Cosmos DB que nous avons créé précédemment :

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

Ajoutons-y un verrou de ressource, ce qui empêche toute suppression du compte 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.'
  }
}

Notez que l’exemple utilise la propriété scope avec le nom symbolique du compte Azure Cosmos DB. Ce paramètre indique à Bicep de déployer le verrou de ressource sur le compte Azure Cosmos DB, ce qui signifie qu’il ne peut plus être supprimé.

ID de ressource d’extension

Une ressource d’extension a un ID légèrement différent des autres ressources. Il se compose de l’ID de ressource parent, du séparateur /providers/ et de l’ID de ressource d’extension.

Supposons que vous avez déployé le compte Azure Cosmos DB mentionné précédemment et que le compte a été appelé toyrnd. Voici à quoi ressemble l’ID de ressource du verrou :

/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete

Voici une représentation visuelle :

ID de ressource d’extension pour un verrou de ressource appliqué à un compte Azure Cosmos DB, fractionné avec la paire clé-valeur sur une ligne distincte.

Si vous voyez un ID de ressource qui commence par un ID de ressource normal, suivi de /providers/, puis d’un autre type et nom de ressource, cela signifie qu’il s’agit d’un ID de ressource d’extension.