Definir recursos de extensão

Concluído

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:

ID de recurso de extensão para um bloqueio de recurso aplicado a uma conta do Azure Cosmos DB, dividido 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, em seguida, adiciona /providers/ outro tipo de recurso e nome, isso significa que você está olhando para uma ID de recurso de extensão.