Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve a sintaxe usada para adicionar um recurso ao arquivo Bicep. Você está limitado a 800 recursos em um arquivo Bicep. Para obter mais informações, confira 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 em outras partes do arquivo 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 diferenciam maiúsculas de minúsculas. Eles 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, uma variável ou um módulo.
Para os tipos de recursos e versões disponíveis, consulte referência de recursos do Bicep. O Bicep não oferece suporte ao apiProfile, que está disponível no JSON dos modelos do ARM (Azure Resource Manager). Você também pode definir recursos do provedor de extensibilidade do Bicep. Para obter mais informações, consulte Provedor de Kubernetes de extensibilidade do Bicep.
Para implantar um recurso condicionalmente, use a sintaxe if. Para obter mais informações, confira Implantaçã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 tipo de recurso, use a sintaxe for. Você pode usar o batchSize decorador para especificar se as instâncias são implantadas em série ou em paralelo. Para obter mais informações, veja 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 sintaxe for 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>]
}
}
Usar decoradores
Escreva decoradores no formato @expression e coloque-os acima das declarações de recurso. A tabela a seguir mostra os decoradores disponíveis para recursos.
| Decorador | Argumento | Descrição |
|---|---|---|
| batchSize | none | Configure instâncias para implantar sequencialmente. |
| description | cadeia | Fornece descrições para o recurso. |
| nullIfNotFound | none | Se o recurso não existir, o símbolo de recurso será avaliado como null, em vez de causar falha na implantação. |
| onlyIfNotExists | none | Implante o recurso somente se ele ainda não existir no escopo de destino. |
Os decoradores estão no namespace sys. Se você precisar diferenciar um decorador de outro item com o mesmo nome, preceda o decorador com sys. Por exemplo, se o arquivo Bicep incluir um parâmetro chamadodescription, você deverá 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 use uma expressão for.
Por padrão, os recursos são implantados em paralelo. Ao adicionar o decorador batchSize(int), você implanta as instâncias em série.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Para saber mais, consulte Implantar em lotes.
Descrição
Para adicionar explicação, adicione uma descrição às declarações do recurso. Por exemplo:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Você pode usar o texto formatado por Markdown para o texto de descrição.
nullIfNotFound
Aplique o @nullIfNotFound() decorador às declarações de recurso existentes. Quando você faz referência a um recurso existente em Bicep (usando a palavra-chave existente), a implantação do ARM falhará se esse recurso não for encontrado no momento da implantação. Ao aplicar @nullIfNotFound(), se o recurso não existir, o símbolo do recurso será avaliado como null em vez de provocar uma falha na implantaçã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 implantação do Bicep é executada, o ARM (Azure Resource Manager) cria o recurso se ele não existe ou o atualiza se ele o faz. Se um recurso existente tiver propriedades diferentes do modelo, o ARM poderá tentar atualizá-lo ou falhar se as atualizações não forem permitidas.
A partir da versão v0.38.3 do Bicep, o decorador @onlyIfNotExists() orienta o ARM a criar o recurso somente se ele ainda não existir. Se o ARM encontrar um recurso com a ID do recurso, ele ignorará a criação e deixará 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, defina o nome como um parâmetro para que você possa passar valores diferentes durante a implantação.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
...
}
Localização do recurso
Muitos recursos exigem um local. Você pode determinar se o recurso precisa de um local por meio do IntelliSense ou da referência de modelo. 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, defina o local como um parâmetro para que você possa implantar em locais diferentes.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: location
...
}
Tipos de recursos diferentes têm suporte em locais diferentes. Para obter os locais com suporte para um serviço de Azure, consulte Produtos disponíveis por região. Para obter os locais com suporte para um tipo de recurso, use Azure PowerShell ou CLI do Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Marcações de recursos
Você pode aplicar marcas a um recurso durante a implantação. As marcas ajudam você a organizar logicamente seus recursos implantados. Para ver exemplos das diferentes maneiras de especificar as marcas, veja Marcas do Modelo do ARM.
Identidades gerenciadas para recursos
Alguns recursos são compatíveis com identidades gerenciadas para recursos do Azure. Esses recursos têm um objeto de identidade no nível raiz da declaração de recurso.
Use identidades atribuídas pelo sistema ou pelo usuário.
O exemplo a seguir mostra como configurar uma identidade atribuída pelo sistema para um cluster de Serviço de Kubernetes do Azure.
resource aks 'Microsoft.ContainerService/managedClusters@2025-08-02-preview' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
O exemplo a seguir 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 maior parte dos tipos de recursos. Depois de definir esses valores, defina as propriedades específicas para o tipo de recurso que você está implantando.
Use o IntelliSense ou Bicep referência de recurso para determinar quais propriedades estão disponíveis e quais são necessárias. O exemplo a seguir define as propriedades restantes para 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óximas etapas
- Para implantar um recurso condicionalmente, confira Implantação condicional no Bicep.
- Para referenciar 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.