Definir recursos de extensão
Os recursos de extensão são sempre anexados a outros recursos do Azure. Eles estendem o comportamento desses recursos com funcionalidade extra.
Alguns exemplos de recursos de extensão comuns são:
Nome | Tipo de recurso |
---|---|
Atribuições de funções | Microsoft.Authorization/roleAssignments |
Atribuições de políticas | Microsoft.Authorization/policyAssignments |
Bloqueios | Microsoft.Authorization/locks |
Definiçõ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 por si só. Ele sempre tem que ser implantado em outro recurso.
Nota
Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você vai praticar o que você aprende aqui em breve.
Como são definidos os recursos de extensão?
No Bicep, você define um recurso de extensão da mesma forma que um recurso normal. No entanto, você adiciona a scope
propriedade 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 se referir 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 scope
propriedade 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 recursos de extensão
Um recurso de extensão tem um ID ligeiramente diferente de outros recursos. Ele consiste em sua ID de recurso pai, o separador /providers/
e a ID de recurso de extensão.
Digamos que você implantou a conta do Azure Cosmos DB mencionada anteriormente e a conta foi nomeada toyrnd
. Veja como seria a ID de recurso do bloqueio:
/subscriptions/A123b4567c-1234-1a2b-2b1a-1234abc12345/resourceGroups/ToyDevelopment/providers/Microsoft.DocumentDB/databaseAccounts/toyrnd/providers/Microsoft.Authorization/locks/DontDelete
Aqui está uma representação visual:
Se você vir uma ID de recurso que começa com uma ID de recurso normal e, em seguida, adiciona /providers/
outro tipo de recurso e nome, isso significa que você está olhando para uma ID de recurso de extensão.