Definición de recursos de extensión

Completado

Los recursos de extensión siempre están asociados a otros recursos de Azure. Extienden el comportamiento de esos recursos con funcionalidad adicional.

Algunos ejemplos de recursos de extensión comunes son:

Nombre Tipo de recurso
Asignaciones de roles Microsoft.Authorization/roleAssignments
Asignaciones de directivas Microsoft.Authorization/policyAssignments
Bloqueos Microsoft.Authorization/locks
Configuración de diagnóstico Microsoft.Insights/diagnosticSettings

Por ejemplo, piense en un bloqueo, que se puede usar para evitar la eliminación o modificación de un recurso de Azure. No tiene sentido implementar un bloqueo de manera independiente. Siempre tiene que implementarse en otro recurso.

Nota:

Los comandos de esta unidad se muestran para ilustrar conceptos. No los ejecute todavía. Pronto va a practicar lo que aprenderá aquí.

¿Cómo se definen los recursos de extensión?

En Bicep, un recurso de extensión se define principalmente de la misma manera que un recurso normal. Sin embargo, agrega la propiedad scope para indicar a Bicep que el recurso se debe adjuntar a otro recurso definido en otra parte del archivo de Bicep. Use el nombre simbólico del recurso para hacer referencia a él. Por ejemplo, esta es la definición de una cuenta de Azure Cosmos DB que hemos creado anteriormente:

resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2020-04-01' = {
  name: cosmosDBAccountName
  location: location
  properties: {
    // ...
  }
}

Vamos a agregar un bloqueo de recursos, lo que impedirá que alguien elimine la cuenta de Azure Cosmos DB:

resource lockResource 'Microsoft.Authorization/locks@2016-09-01' = {
  scope: cosmosDBAccount
  name: 'DontDelete'
  properties: {
    level: 'CanNotDelete'
    notes: 'Prevents deletion of the toy data Cosmos DB account.'
  }
}

Observe que en el ejemplo se usa la propiedad scope con el nombre simbólico de la cuenta de Azure Cosmos DB. Este valor de propiedad indica a Bicep que implemente el bloqueo de recursos en la cuenta de Azure Cosmos DB, lo que significa que ya no se puede eliminar.

Identificadores de recursos de extensión

Un recurso de extensión tiene un identificador ligeramente diferente al de otros recursos. Consta de su identificador de recurso primario, el separador /providers/ y el identificador de recurso de extensión.

Supongamos que implementó la cuenta de Azure Cosmos DB anteriormente mencionada y que la cuenta se denominaba toyrnd. Este es el aspecto que tendría el identificador de recurso del bloqueo:

/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete

Esta es una representación visual:

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

Si ve un identificador de recurso que comienza con un identificador de recurso normal y, a continuación, agrega /providers/ y otro tipo y nombre de recurso, está ante un identificador de recurso de extensión.