Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья описывает синтаксис, который используется для добавления ресурса в файл Bicep. В файле Bicep ограничено 800 ресурсов. Дополнительные сведения см. в разделе Ограничения шаблона.
Определение ресурсов
Добавьте объявление ресурса с помощью ключевого слова resource. Задайте символьное имя ресурса. Символьное имя не совпадает с именем ресурса. Используйте символьное имя, чтобы ссылаться на этот ресурс в других частях файла Bicep.
@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Объявление для учетной записи хранения может начинаться с:
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
...
}
В символьных именах учитывается регистр. Они могут содержать буквы, цифры и символы подчеркивания (_). Они не могут начинаться с цифры. Имя ресурса не может совпадать с именем параметра, переменной или модуля.
Сведения о доступных типах и версиях ресурсов см. в справочнике по ресурсам Bicep. Bicep не поддерживает apiProfile, который доступен в шаблонах Azure Resource Manager (шаблонах ARM) в формате JSON. Вы также можете определить ресурсы поставщика расширений Bicep. Дополнительные сведения см. в статье Поставщик Kubernetes с расширяемостью Bicep.
Чтобы выполнить условное развертывание ресурса, используйте синтаксис if. Дополнительные сведения см. в разделе Условное развертывание в Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
<resource-properties>
}
Чтобы развернуть несколько экземпляров ресурса, используйте синтаксис for. Можно использовать декоратор batchSize, чтобы указать, следует ли развертывать экземпляры последовательно или параллельно. Дополнительные сведения см. в статье Итеративные циклы в Bicep.
@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
<properties-to-repeat>
}]
Для создания массива также можно использовать синтаксис for для свойств ресурса.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
properties: {
<array-property>: [for <item> in <collection>: <value-to-repeat>]
}
}
Использование декораторов
Напишите декораторы в формате @expression и поместите их над объявлениями ресурсов. В следующей таблице приведены доступные декораторы для ресурсов.
| Декоратор | Аргумент | Описание |
|---|---|---|
| batchSize | ничего | Настройте экземпляры для последовательного развертывания. |
| описание | строка | Укажите описания ресурса. |
| NULLIfNotFound | ничего | Если ресурс не существует, символ ресурса принимает значение null, а не вызывает сбой развертывания. |
| onlyIfNotExists | ничего | Разверните ресурс только в том случае, если он еще не существует в целевой области. |
Декораторы находятся в пространстве имен sys. Если вам нужно отличить декоратор от другого элемента с таким же именем, добавьте перед названием декоратора sys. Например, если в файле Bicep есть параметр с именем description, при использовании декоратора description необходимо добавить пространство имен sys.
Размер партии
Можно применить @batchSize() только к определению ресурса или модуля, использующего for выражение.
По умолчанию ресурсы развертываются параллельно. При добавлении декоратора batchSize(int) экземпляры развертываются последовательно.
@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Дополнительные сведения см. в статье Развертывание в пакетах.
Описание
Чтобы добавить объяснение, добавьте описание в объявления ресурсов. Например:
@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2025-06-01' = [for storageName in storageAccounts: {
...
}]
Текст описания можно использовать в формате Markdown.
NULLIfNotFound
Примените @nullIfNotFound() декоратор к существующим объявлениям ресурсов. Если вы ссылаетесь на существующий ресурс в Bicep (с помощью ключевого слова existing), развертывание ARM завершается ошибкой, если этот ресурс не найден на момент развертывания. При применении @nullIfNotFound(), если такой ресурс не существует, символ ресурса принимает значение null вместо того, чтобы вызывать сбой развертывания.
@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
толькоЕслиНеСуществует
По умолчанию при запуске развертывания Bicep, Azure Resource Manager (ARM) создает ресурс, если он не существует, или обновляет его, если он уже существует. Если свойства существующего ресурса отличаются от свойств, указанных в шаблоне, ARM может попытаться обновить его либо завершиться с ошибкой, если обновление не разрешено.
Начиная с версии Bicep v0.38.3, декоратор @onlyIfNotExists() указывает ARM создавать ресурс только в том случае, если он еще не существует. Если ARM находит ресурс с идентификатором ресурса, он пропускает создание и оставляет существующий ресурс неизменным.
@onlyIfNotExists()
resource example 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'mystorageacct'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
Имя ресурса
У каждого ресурса есть имя. При задании имени ресурса обратите внимание на правила и ограничения для имен ресурсов.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
...
}
Как правило, задайте для параметра имя, чтобы во время развертывания можно было передать разные значения.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
...
}
Расположение ресурса
Для многих ресурсов требуется расположение. Вы можете определить, требуется ли ресурсу расположение через IntelliSense или ссылку на шаблон. В следующем примере мы добавляем параметр location, используемый для учетной записи хранения.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Обычно значение location задают через параметр, чтобы можно было выполнять развертывание в разных местоположениях.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: location
...
}
Различные типы ресурсов поддерживаются в разных расположениях. Сведения о поддерживаемых расположениях для службы Azure см. в разделе "Продукты", доступные по регионам. Чтобы получить поддерживаемые расположения для типа ресурса, используйте Azure PowerShell или Azure CLI.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Теги ресурсов
Вы можете добавлять теги к ресурсу во время развертывания. Теги помогают логически упорядочивать развернутые ресурсы. Примеры различных способов указания тегов см. в разделе Теги шаблонов ARM.
Управляемые удостоверения для ресурсов
Некоторые ресурсы поддерживают управляемые удостоверения для ресурсов Azure. Эти ресурсы имеют объект идентификации на корневом уровне в объявлении ресурса.
Вы можете использовать удостоверения, назначенные системой или пользователем.
В следующем примере показано, как настроить назначенное системой удостоверение для кластера Службы Azure Kubernetes.
resource aks 'Microsoft.ContainerService/managedClusters@2025-08-02-preview' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
В следующем примере показано, как настроить назначаемое пользователем удостоверение для виртуальной машины.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Свойства конкретного ресурса
Приведенные выше свойства являются общими для большинства типов ресурсов. После задания этих значений задайте свойства, относящиеся к типу ресурса, который вы развертываете.
Используйте IntelliSense или справочные сведения о ресурсах Bicep, чтобы определить, какие свойства доступны, а какие из них являются обязательными. В следующем примере задаются оставшиеся свойства учетной записи хранения.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Следующие шаги
- Чтобы выполнить условное развертывание ресурса, см. раздел Условное развертывание в Bicep.
- Чтобы указать ссылку на существующий ресурс, воспользуйтесь статьей Существующие ресурсы в Bicep.
- Дополнительные сведения о том, как определяется порядок развертывания, см. в статье Зависимости ресурсов в Bicep.