Declaração de recursos no Bicep
Este artigo descreve a sintaxe que utiliza para adicionar um recurso ao seu ficheiro Bicep. Está limitado a 800 recursos num ficheiro Bicep. Para obter mais informações, veja Limites de modelos.
Declaração
Adicione uma declaração de recurso com 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. Utilize o nome simbólico para referenciar o recurso noutras partes do ficheiro Bicep.
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 são sensíveis às maiúsculas e minúsculas. Podem conter letras, números e sublinhados (_
). 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, veja Referência de recursos do Bicep. O Bicep não suporta apiProfile
, que está disponível no JSON de modelos de Resource Manager do Azure (modelos arm). Também pode definir recursos do fornecedor de extensibilidade do Bicep. Para obter mais informações, veja Fornecedor do Kubernetes de extensibilidade do Bicep.
Para implementar condicionalmente um recurso, utilize a if
sintaxe. Para obter mais informações, veja Implementação condicional no Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Para implementar mais do que uma instância de um recurso, utilize a for
sintaxe. Pode utilizar o batchSize
decorador para especificar se as instâncias são implementadas em série ou em paralelo. Para obter mais informações, veja Ciclos 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>
}]
Também pode utilizar 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>]
}
}
Nome do recurso
Cada recurso tem um nome. Ao definir o nome do recurso, preste atenção às regras e restrições dos nomes dos recursos.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
...
}
Normalmente, definiria o nome como um parâmetro para que possa transmitir valores diferentes durante a implementação.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
...
}
Localização
Muitos recursos necessitam de uma localização. Pode determinar se o recurso precisa de uma localização através do intellisense ou da referência de modelo. O exemplo seguinte adiciona um parâmetro de localização que é utilizado para a conta de armazenamento.
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Normalmente, definiria a localização como um parâmetro para poder implementar em localizações diferentes.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'examplestorage'
location: location
...
}
São suportados diferentes tipos de recursos em diferentes localizações. Para obter as localizações suportadas para um serviço do Azure, consulte Produtos disponíveis por região. Para obter as localizações suportadas para um tipo de recurso, utilize Azure PowerShell ou a CLI do Azure.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Etiquetas
Pode aplicar etiquetas a um recurso durante a implementação. As etiquetas ajudam-no a organizar logicamente os recursos implementados. Para obter exemplos das diferentes formas de especificar as etiquetas, veja Etiquetas de modelo do ARM.
Identidades geridas dos recursos do Azure
Alguns recursos suportam identidades geridas para recursos do Azure. Esses recursos têm um objeto de identidade ao nível da raiz da declaração de recursos.
Pode utilizar identidades atribuídas pelo sistema ou atribuídas pelo utilizador.
O exemplo seguinte mostra como configurar uma identidade atribuída pelo sistema para um cluster Azure Kubernetes Service.
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
O exemplo seguinte mostra como configurar uma identidade atribuída pelo utilizador 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, tem de definir as propriedades específicas do tipo de recurso que está a implementar.
Utilize a referência de recursos intellisense ou Bicep para determinar que propriedades estão disponíveis e quais são necessárias. O exemplo seguinte 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'
}
}
Passos seguintes
- Para implementar condicionalmente um recurso, veja Implementação condicional no Bicep.
- Para referenciar um recurso existente, veja Recursos existentes no Bicep.
- Para saber como a ordem de implementação é determinada, veja Dependências de recursos no Bicep.