Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve a sintaxe que você usa para adicionar um recurso ao arquivo Bicep. Você está limitado a 800 recursos em um arquivo Bicep. Para obter mais informações, consulte Limites de modelo.
Definir recursos
Adicione uma declaração de recurso usando a resource palavra-chave. Defina um nome simbólico para o recurso. O nome simbólico não é o mesmo que o nome do recurso. Use o nome simbólico para referenciar o recurso noutras partes do seu ficheiro Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Uma declaração para uma conta de armazenamento pode começar com:
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
...
}
Os nomes simbólicos fazem distinção entre maiúsculas e minúsculas. Podem conter letras, números e sublinhados (_). Eles não podem começar com um número. Um recurso não pode ter o mesmo nome que um parâmetro, variável ou módulo.
Para os tipos e versões de recursos disponíveis, consulte a referência de recursos Bicep. O Bicep não suporta apiProfile, que está disponível no JSON dos modelos do Azure Resource Manager (modelos ARM). Você também pode definir recursos do provedor de extensibilidade do Bicep. Para obter mais informações, consulte fornecedor de extensibilidade do Kubernetes para o Bicep.
Para implantar condicionalmente um recurso, use a if sintaxe. Para obter mais informações, consulte Implementação condicional no Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Para implantar mais de uma instância de um recurso, use a for sintaxe. Pode utilizar o decorador batchSize para especificar se as instâncias são implantadas em série ou em paralelo. Para obter mais informações, consulte Loops iterativos no Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
Você também pode usar a for sintaxe nas propriedades do recurso para criar uma matriz.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Utilize decoradores
Escreva decoradores no formato @expression e coloque-os acima das declarações de recursos. A tabela a seguir mostra os decoradores disponíveis para recursos.
| Decorador | Argumento | Descrição |
|---|---|---|
| tamanho do lote | nenhum | Configure instâncias para implantar sequencialmente. |
| descrição | cadeia (de caracteres) | Forneça descrições para o recurso. |
| nullIfNotFound | nenhum | Se o recurso não existir, o símbolo do recurso é avaliado como null em vez de fazer com que a implementação falhe. |
| onlyIfNotExists | nenhum | Implante o recurso somente se ele ainda não existir no escopo de destino. |
Os decoradores estão no namespace sys. Se você precisa diferenciar um decorador de outro item com o mesmo nome, prefacie o decorador com sys. Por exemplo, se o arquivo Bicep incluir um parâmetro chamado description, você deve adicionar o namespace sys ao usar o decorador de descrição .
Tamanho do lote
Você só pode aplicar @batchSize() a uma definição de recurso ou módulo que usa uma for expressão.
Por padrão, os recursos são implantados em paralelo. Ao adicionar o batchSize(int) decorador, você implanta instâncias em série.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Para obter mais informações, consulte Implantar em lotes.
Descrição
Para adicionar explicação, adicione uma descrição às declarações de recursos. Por exemplo:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Você pode usar texto formatado em Markdown para o texto de descrição.
nullIfNotFound
Aplica o @nullIfNotFound() decorador às declarações de recursos existentes. Quando referencias um recurso existente no Bicep (usando a palavra-chave existente), a implementação do ARM falha se esse recurso não for encontrado no momento da implementação. Ao aplicar @nullIfNotFound(), se o recurso não existir, o símbolo do recurso é avaliado como null em vez de causar uma falha na implementação.
@nullIfNotFound()
resource centralWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
name: 'central-log-analytics'
}
// Safe access
output workspaceId string = centralWorkspace.?id ?? ''
output workspaceExists bool = centralWorkspace != null
onlyIfNotExists
Por padrão, quando uma implementação do Bicep é executada, o Azure Resource Manager (ARM) cria o recurso se não existir ou atualiza-o caso já exista. Se um recurso existente tiver propriedades que diferem do seu modelo, o ARM pode tentar atualizá-lo – ou falhar se as atualizações não forem permitidas.
A partir da versão Bicep v0.38.3, o @onlyIfNotExists() decorador instrui o ARM a criar o recurso apenas se este ainda não existir. Se o ARM encontrar um recurso com o ID do recurso, salta a criação e mantém o recurso existente inalterado.
@onlyIfNotExists()
resource example 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'mystorageacct'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
Nome do recurso
Cada recurso tem um nome. Ao definir o nome do recurso, preste atenção às regras e restrições para nomes de recursos.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
...
}
Normalmente, define o nome para um parâmetro para poderes passar diferentes valores durante a implementação.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
...
}
Localização do recurso
Muitos recursos requerem uma localização. Podes determinar se o recurso precisa de uma localização através do IntelliSense ou referência ao template. O exemplo a seguir adiciona um parâmetro location que é usado para a conta de armazenamento.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Normalmente, define a localização para um parâmetro para poderes implementar em diferentes localizações.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: location
...
}
Diferentes tipos de recursos são suportados em diferentes locais. Para obter as localizações suportadas para um serviço Azure, consulte Produtos disponíveis por região. Para obter os locais com suporte para um tipo de recurso, use o Azure PowerShell ou a CLI do Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Etiquetas de recursos
Você pode aplicar tags a um recurso durante a implantação. As tags ajudam você a organizar logicamente os recursos implantados. Para ver exemplos das diferentes formas de especificar as etiquetas, consulte etiquetas de modelos ARM.
Identidades gerenciadas para recursos
Alguns recursos dão suporte a identidades gerenciadas para recursos do Azure. Estes recursos têm um objeto de identidade no nível raiz da declaração do recurso.
Você pode usar identidades atribuídas ao sistema ou ao usuário.
O exemplo a seguir mostra como configurar uma identidade atribuída ao sistema para um cluster do Serviço Kubernetes do Azure.
resource aks 'Microsoft.ContainerService/managedClusters@2025-08-02-preview' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
O próximo exemplo mostra como configurar uma identidade atribuída pelo usuário para uma máquina virtual.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Propriedades específicas do recurso
As propriedades anteriores são genéricas para a maioria dos tipos de recursos. Depois de definir esses valores, define as propriedades específicas para o tipo de recurso que estás a implementar.
Use a referência de recursos IntelliSense ou Bicep para determinar quais as propriedades disponíveis e quais são necessárias. O exemplo a seguir define as propriedades restantes de uma conta de armazenamento.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Próximos passos
- Para implementar condicionalmente um recurso, consulte Implementação condicional no Bicep.
- Para fazer referência a um recurso existente, consulte Recursos existentes no Bicep.
- Para saber mais sobre como a ordem de implantação é determinada, consulte Dependências de recursos no Bicep.