Declaração de recurso no Bicep

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.

Declaração

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 seu arquivo Bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Portanto, uma declaração para uma conta de armazenamento pode começar com:

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  ...
}

Os nomes simbólicos diferenciam maiúsculas de minúsculas. Devem 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 a versão 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, confira 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>]
  }
}

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@2019-06-01' = {
  name: 'examplestorage'
  ...
}

Normalmente, você definiria o nome para 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@2019-06-01' = {
  name: storageAccountName
  ...
}

Localização

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@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Normalmente, você definiria a localização para um parâmetro para seja possível implantar em localizações diferentes.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: location
  ...
}

Tipos de recursos diferentes têm suporte em locais diferentes. Para obter as localizações com suporte para um serviço do Azure, confira 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

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 dos recursos do Azure

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 do 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@2020-09-01' = {
  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@2020-06-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 a referência do modelo do Bicep para determinar quais propriedades estão disponíveis e quais são obrigatórias. O exemplo a seguir define as propriedades restantes para uma conta de armazenamento.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Próximas etapas