Definir recursos de extensão
Os recursos de extensão sempre são anexados a outros recursos do Azure. Eles estendem o comportamento desses recursos com funcionalidade extra.
Alguns exemplos de recursos comuns de extensão incluem:
Nome | Tipo de recurso |
---|---|
Atribuições de função | Microsoft.Authorization/roleAssignments |
Atribuições de política | Microsoft.Authorization/policyAssignments |
Locks | Microsoft.Authorization/locks |
Configurações de Diagnóstico | Microsoft.Insights/diagnosticSettings |
Por exemplo, considere um bloqueio, que pode ser usado para impedir a exclusão ou modificação de um recurso do Azure. Não faz sentido implantar um bloqueio sozinho. Ele sempre precisa ser implantado em outro recurso.
Observação
Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você praticará o que aprendeu aqui em breve.
Como os recursos de extensão são definidos?
No Bicep, você define um recurso de extensão praticamente da mesma forma que um recurso normal. No entanto, você adiciona a propriedade scope
para informar ao Bicep que o recurso deve ser anexado a outro recurso definido em outro lugar no arquivo Bicep. Você usa o nome simbólico do recurso para fazer referência a ele. Por exemplo, aqui está a definição de uma conta do Azure Cosmos DB que criamos anteriormente:
resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
name: cosmosDBAccountName
location: location
properties: {
// ...
}
}
Vamos adicionar um bloqueio de recurso, que impede que qualquer pessoa exclua a conta do 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.'
}
}
Observe que o exemplo usa a propriedade scope
com o nome simbólico da conta do Azure Cosmos DB. Essa configuração de propriedade informa ao Bicep para implantar o bloqueio de recursos na conta do Azure Cosmos DB, o que significa que ele não pode mais ser excluído.
IDs de recurso de extensão
Um recurso de extensão tem uma ID um pouco diferente da de outros recursos. Ela consiste na ID do recurso pai, o separador /providers/
e a ID do recurso de extensão.
Digamos que você tenha implantado a conta do Azure Cosmos DB mencionada anteriormente e que tenha nomeado a conta como toyrnd
. Esta é a aparência da ID de recurso do bloqueio:
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
Confira uma representação visual:
Se você vir uma ID de recurso que começa com uma ID de recurso normal e depois adicionar /providers/
e outro tipo e nome de recurso, estará olhando para uma ID de recurso de extensão.