Definir recursos de extensão

Concluído

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:

ID de recurso de extensão de um bloqueio de recurso aplicado a uma conta do Azure Cosmos DB divida com o par chave-valor em uma linha separada.

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.