Declaração de recursos no Bicep
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. Você define 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 fazer referência ao recurso em outras partes do arquivo Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Assim, uma declaração para uma conta de armazenamento pode começar com:
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Os nomes simbólicos diferenciam maiúsculas de 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 obter os tipos de recursos e a versão disponíveis, consulte Referência de recursos do Bíceps. O Bicep não oferece suporte apiProfile
ao , que está disponível em modelos do Azure Resource Manager (modelos ARM) JSON. Você também pode definir recursos do provedor de extensibilidade do Bicep. Para obter mais informações, consulte Provedor Kubernetes de extensibilidade do Bicep.
Para implantar condicionalmente um recurso, use a if
sintaxe. Para obter mais informações, consulte 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 recurso, use a for
sintaxe. 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, 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>]
}
}
Use decoradores
Os decoradores são escritos no formato @expression
e são colocados acima das declarações de recursos. A tabela a seguir mostra os decoradores disponíveis para recursos.
Decorador | Argumento | Description |
---|---|---|
tamanho do lote | nenhum | Configure instâncias para implantar sequencialmente. |
descrição | string | Forneça descrições para o recurso. |
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@2023-04-01' = [for storageName in storageAccounts: {
...
}]
Para obter mais informações, consulte Implantar em lotes.
Description
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@2023-04-01' = [for storageName in storageAccounts: {
...
}]
O texto formatado com marcação pode ser usado para o texto de descrição.
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@2023-04-01' = {
name: 'examplestorage'
...
}
Normalmente, você define o nome como um parâmetro para que possa passar valores diferentes durante a implantação.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
...
}
Localização do recurso
Muitos recursos requerem uma localização. 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@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Normalmente, você define o local como um parâmetro para que possa implantar em locais diferentes.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: location
...
}
Diferentes tipos de recursos são suportados em diferentes locais. Para obter os locais suportados para um serviço do 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 obter exemplos das diferentes maneiras de especificar as tags, consulte Tags de modelo ARM.
Identidades gerenciadas para recursos
Alguns recursos dão suporte a identidades gerenciadas para recursos do Azure. Esses recursos têm um objeto de identidade no nível raiz da declaração de 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@2024-02-01' = {
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@2024-03-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, você precisa definir as propriedades específicas para o tipo de recurso que está implantando.
Use a referência de recursos intellisense ou Bicep para determinar quais propriedades estão 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@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Próximos passos
- Para implantar condicionalmente um recurso, consulte Implantaçã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.