Функции ресурсов для Bicep

В этой статье описываются функции Bicep для получения значений ресурсов.

Получение значений параметров текущего развертывания описано в разделе Функции значений развертывания.

extensionResourceId

extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)

Возвращает идентификатор ресурса для ресурса расширения. Ресурс расширения — это тип ресурса, который прилагается к другому ресурсу для увеличения его возможностей.

Пространство имен: az.

Функция extensionResourceId доступна в Bicep файлах, но обычно она не нужна. Вместо этого используйте символьное имя для ресурса и получите доступ к свойству id.

Базовый формат идентификатора ресурса, возвращаемого этой функцией:

{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Сегмент области зависит от расширяемого ресурса.

Когда ресурс расширения применяется к ресурсу, идентификатор ресурса возвращается в следующем формате:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Когда ресурс расширения применяется к группе ресурсов, используется следующий формат:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Когда ресурс расширения применяется к подписке, используется следующий формат:

/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Когда ресурс расширения применяется к группе управления, используется следующий формат:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}

Определение пользовательской политики, развернутое в группе управления, реализуется как ресурс расширения. Чтобы создать и назначить политику, разверните следующий Bicep файл в группе управления.

targetScope = 'managementGroup'

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2025-03-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
  name: 'locationAssignment'
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

Определения встроенных политик — это ресурсы уровня клиента. Пример развертывания определения встроенной политики см. в разделе tenantResourceId.

getSecret

keyVaultName.getSecret(secretName)

Возвращает секрет из Azure Key Vault. Используйте эту функцию для передачи секрета в безопасный строковый параметр модуля Bicep.

Примечание.

az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion) функцию можно использовать в .bicepparam файлах для получения секретов хранилища ключей. Дополнительные сведения см. в разделе getSecret.

Функцию getSecret можно использовать только в разделе params модуля. Его можно использовать только с ресурсом Майкрософт.KeyVault/vaults.

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    adminPassword: keyVault.getSecret('vmAdminPassword')
  }
}

При попытке использовать эту функцию в любой другой части файла Bicep возникает ошибка. При использовании этой функции с интерполяцией строк также возникает ошибка, даже если она используется в разделе params.

Эту функцию можно использовать только с параметром модуля, для которого есть декоратор @secure().

У хранилища ключей параметр enabledForTemplateDeployment должен иметь значение true. Пользователь, развертывающий файл Bicep, должен иметь доступ к секрету. Дополнительные сведения см. в разделе Использовать Azure Key Vault для передачи значения безопасного параметра во время развертывания Bicep.

Квалификатор пространства имен не требуется, так как функция используется с типом ресурса.

Параметры

Параметр Обязательное поле Тип Описание
secretName; Да строка Имя секрета, хранящегося в хранилище ключей.

Возвращаемое значение

Значение секрета для имени секрета.

Пример

Следующий Bicep файл используется в качестве модуля. Он содержит параметр adminPassword, определяемый с помощью декоратора @secure().

param sqlServerName string
param adminLogin string

@secure()
param adminPassword string

resource sqlServer 'Microsoft.Sql/servers@2024-11-01-preview' = {
  ...
}

Следующий файл Bicep использует предыдущий Bicep файл в качестве модуля. Файл Bicep ссылается на существующее хранилище ключей и вызывает функцию getSecret для получения секрета хранилища ключей, а затем передает значение в качестве параметра модулю.

param sqlServerName string
param adminLogin string

param subscriptionId string
param kvResourceGroup string
param kvName string

resource keyVault 'Microsoft.KeyVault/vaults@2025-05-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: keyVault.getSecret('vmAdminPassword')
  }
}

список*

resourceName.list([apiVersion], [functionValues])

Функцию list можно вызвать для ресурсов любых типов с помощью операции, которая начинается с list. Наиболее распространенными вариантами применения являются list, listKeys, listKeyValue и listSecrets.

Синтаксис для этой функции зависит от названия операции list. Перечень возвращаемых значений также зависит от конкретной операции. Bicep в настоящее время не поддерживает завершения и проверку для функций list*.

Если Bicep CLI версии 0.4.X или более поздней вы вызываете функцию списка с помощью оператора accessor. Например, storageAccount.listKeys().

Квалификатор пространства имен не требуется, так как функция используется с типом ресурса.

Параметры

Параметр Обязательное поле Тип Описание
версия_API Нет строка Если не указать этот параметр, будет использоваться версия API для ресурса. Если необходимо выполнять функцию с определенной версией, укажите только пользовательскую версию API. Используйте формат гггг-мм-дд.
functionValues Нет объект Объект, содержащий значения для функции. Предоставляйте этот объект только для функций, которые поддерживают прием объекта с такими значениями параметров, как listAccountSas, в учетной записи хранения. В этой статье показан пример передачи значения функции.

Допустимые варианты использования

Функции list можно использовать в свойствах определения ресурса. Не используйте функцию list, которая предоставляет конфиденциальную информацию в разделе выходных данных файла Bicep. Выходные значения хранятся в журнале развертывания и могут быть получены злоумышленником.

При использовании с итеративным циклом можно использовать функции list для input, так как выражение назначается свойству ресурса. Их нельзя использовать с count, так как count должен быть определен до разрешения функции list.

При использовании функции list в ресурсе, который развернут условно, функция вычисляется, даже если ресурс не развернут. Если функция list ссылается на несуществующий ресурс, возникает ошибка. Используйте оператор условного выражения ?:, чтобы убедиться, что функция вычисляется только при развертывании ресурса.

Возвращаемое значение

Возвращаемый объект зависит от используемой функции списка. Например, listKeys для учетной записи хранения возвращает следующий формат.

{
  "keys": [
    {
      "keyName": "key1",
      "permissions": "Full",
      "value": "{value}"
    },
    {
      "keyName": "key2",
      "permissions": "Full",
      "value": "{value}"
    }
  ]
}

Другие функции list возвращают данные в других форматах. Чтобы просмотреть формат функции, добавьте его в раздел выходных данных, как показано в примере файла Bicep.

Пример функции list

В приведенном ниже примере показано, как выполнить развертывание учетной записи хранения и вызвать для нее функцию listKeys. Этот ключ используют при настройке значения для скриптов развертывания.

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: 'dscript${uniqueString(resourceGroup().id)}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource dScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'scriptWithStorage'
  location: location
  ...
  properties: {
    azCliVersion: '2.0.80'
    storageAccountSettings: {
      storageAccountName: storageAccount.name
      storageAccountKey: storageAccount.listKeys().keys[0].value
    }
    ...
  }
}

В следующем примере показана функция list, которая принимает параметр. В этом случае используется функция listAccountSas. Передайте объект для времени окончания срока действия. Время окончания срока действия должно быть в будущем.

param accountSasProperties object {
  default: {
    signedServices: 'b'
    signedPermission: 'r'
    signedExpiry: '2020-08-20T11:00:00Z'
    signedResourceTypes: 's'
  }
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken

Реализации

Следующая таблица содержит возможные способы использования list*.

Тип ресурса Имя функции
Майкрософт. Addons/supportProviders listupportplaninfo
Майкрософт. AnalysisServices/servers listGatewayStatus
Майкрософт. ApiManagement/service/authorizationServers listSecrets
Майкрософт. ApiManagement/service/gateways listKeys
Майкрософт. ApiManagement/service/identityProviders listSecrets
Майкрософт. ApiManagement/service/namedValues listValue
Майкрософт. ApiManagement/service/openidConnectProviders listSecrets
Майкрософт. ApiManagement/service/subscriptions listSecrets
Майкрософт. AppConfiguration/configurationStores ListKeys
Майкрософт. AppPlatform/Spring listTestKeys
Майкрософт. Автоматизация и автоматизацияAccounts listKeys
Майкрософт. Batch/batchAccounts listkeys
Майкрософт. BatchAI/workspaces/experiments/jobs listoutputfiles
Майкрософт. BotService/botServices/channel listChannelWithKeys
Майкрософт. Кэш/redis listKeys
Майкрософт. CognitiveServices/accounts listKeys
Майкрософт. ContainerRegistry/registries listCredentials
Майкрософт. ContainerRegistry/registries listUsages
Майкрософт. ContainerRegistry/registries/agentpools listQueueStatus
Майкрософт. ContainerRegistry/registries/buildTasks listSourceRepositoryProperties
Майкрософт. ContainerRegistry/registries/buildTasks/steps listBuildArguments
Майкрософт. ContainerRegistry/registries/taskruns listDetails
Майкрософт. ContainerRegistry/registries/webhooks listEvents
Майкрософт. ContainerRegistry/registries/runs listLogSasUrl
Майкрософт. ContainerRegistry/registries/tasks listDetails
Майкрософт. ContainerService/managedClusters listClusterAdminCredential
Майкрософт. ContainerService/managedClusters listClusterMonitoringUserCredential
Майкрософт. ContainerService/managedClusters listClusterUserCredential
Майкрософт. ContainerService/managedClusters/accessProfiles listCredential
Майкрософт. DataBox/jobs listCredentials
Майкрософт. DataFactory/datafactories/gateways listauthkeys
Майкрософт. DataFactory/factories/integrationruntimes listauthkeys
Майкрософт. DataLakeAnalytics/accounts/storageAccounts/Container listSasTokens
Майкрософт. DataShare/accounts/share listSynchronizations
Майкрософт. DataShare/accounts/shareSubscriptions listSourceShareSynchronizationSettings
Майкрософт. DataShare/accounts/shareSubscriptions listSynchronizationDetails
Майкрософт. DataShare/accounts/shareSubscriptions listSynchronizations
Майкрософт. Устройства и iotHubs listkeys
Майкрософт. Устройства/iotHubs/iotHubKeys listkeys
Майкрософт. Устройства, подготовка служб и ключей listkeys
Майкрософт. Устройства и службы подготовки listkeys
Майкрософт. DevTestLab/labs ListVhds
Майкрософт. DevTestLab/labs/schedules ListApplicable
Майкрософт. DevTestLab/labs/users/serviceFabrics ListApplicableSchedules
Майкрософт. DevTestLab/labs/virtualMachines ListApplicableSchedules
Майкрософт. DocumentDB/databaseAccounts listKeys
Майкрософт. DocumentDB/databaseAccounts/notebookWorkspaces listConnectionInfo
Майкрософт. DomainRegistration listDomainRecommendations
Майкрософт. DomainRegistration/topLevelDomains listAgreements
Майкрософт. EventGrid/domains listKeys
Майкрософт. EventGrid/темы listKeys
Майкрософт. EventHub/namespaces/authorizationRules listkeys
Майкрософт. EventHub/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Майкрософт. EventHub/namespaces/eventhubs/authorizationRules listkeys
Майкрософт. ImportExport/jobs listBitLockerKeys
Майкрософт. Kusto/Clusters/Database ListPrincipals
Майкрософт. LabServices/labs/users список
Майкрософт. LabServices/labs/virtualMachines список
Майкрософт. Logic/integrationAccounts/agreements listContentCallbackUrl
Майкрософт. Logic/integrationAccounts/assemblies listContentCallbackUrl
Майкрософт. Logic/integrationAccounts listCallbackUrl
Майкрософт. Logic/integrationAccounts listKeyVaultKeys
Майкрософт. Logic/integrationAccounts/maps listContentCallbackUrl
Майкрософт. Logic/integrationAccounts/partners listContentCallbackUrl
Майкрософт. Logic/integrationAccounts/schemas listContentCallbackUrl
Майкрософт. Логика и рабочие процессы listCallbackUrl
Майкрософт. Логика и рабочие процессы listSwagger
Майкрософт. Логика, рабочие процессы, запуски и действия listExpressionTraces
Майкрософт. Логика,рабочие процессы,запуски/действия/повторения listExpressionTraces
Майкрософт. Логика, рабочие процессы и триггеры listCallbackUrl
Майкрософт. Логика/рабочие процессы/ версии/триггеры listCallbackUrl
Майкрософт. MachineLearning/webServices listkeys
Майкрософт. MachineLearning/Workspaces listworkspacekeys
Майкрософт. MachineLearningServices/workspaces/computes listKeys
Майкрософт. MachineLearningServices/workspaces/computes listNodes
Майкрософт. MachineLearningServices/workspaces listKeys
Майкрософт. Карты и учетные записи listKeys
Майкрософт. Media/mediaservices/assets listContainerSas
Майкрософт. Media/mediaservices/assets listStreamingLocator
Майкрософт. Media/mediaservices/streamingLocator listContentKeys
Майкрософт. Media/mediaservices/streamingLocator listPaths
Майкрософт. Network/applicationSecurityGroups listIpConfigurations
Майкрософт. NotificationHubs/Namespaces/authorizationRules listkeys
Майкрософт. NotificationHubs/Namespaces/NotificationHubs/authorizationRules listkeys
Майкрософт. OperationsInsights/workspaces список
Майкрософт. OperationsInsights/workspaces listKeys
Майкрософт. ПолитикиInsights/исправлений listDeployments
Майкрософт. RedHatOpenShift/openShiftClusters listCredentials
Майкрософт. Relay/namespaces/disasterRecoveryConfigs/authorizationRules listkeys
Майкрософт. Search/searchServices listAdminKeys
Майкрософт. Search/searchServices listQueryKeys
Майкрософт. SignalRService/SignalR listkeys
Майкрософт. Storage/storageAccounts listAccountSas
Майкрософт. Storage/storageAccounts listkeys
Майкрософт. Storage/storageAccounts listServiceSas
Майкрософт. StorSimple/manager/devices listFailoverSets
Майкрософт. StorSimple/manager/devices listFailoverTargets
Майкрософт. StorSimple/менеджеры listActivationKey
Майкрософт. StorSimple/менеджеры listPublicEncryptionKey
Майкрософт. Synapse/workspaces/integrationRuntimes listAuthKeys
Майкрософт. Web/connectionGateways ListStatus
microsoft.web/connections listconsentlinks
Майкрософт. Web/customApis listWsdlInterfaces
microsoft.web/locations listwsdlinterfaces
microsoft.web/apimanagementaccounts/apis/connections listconnectionkeys
microsoft.web/apimanagementaccounts/apis/connections listsecrets
microsoft.web/sites/backups список
Майкрософт. Web/sites/config список
microsoft.web/sites/functions listkeys
microsoft.web/sites/functions listsecrets
microsoft.web/sites/hybridconnectionnamespaces/relays listkeys
microsoft.web/sites listsyncfunctiontriggerstatus
microsoft.web/sites/slots/functions listsecrets
microsoft.web/sites/slots/backups список
Майкрософт. Web/sites/slots/config список
microsoft.web/sites/slots/functions listsecrets

Чтобы определить, какие типы ресурсов поддерживают операцию list, можно использовать следующие варианты:

  • Просмотрите операции REST API для поставщика ресурсов и найдите операции list. Например, в учетных записях хранения есть операция listKeys.

  • Воспользуйтесь командлетом PowerShell Get-​AzProvider​Operation. В следующем примере извлекаются все операции list для учетных записей хранения:

    Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
    
  • Используйте следующую команду Azure CLI для фильтрации только операций со списком:

    az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
    

managementGroupResourceId

managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)

Возвращает уникальный идентификатор ресурса, развернутого на уровне группы управления.

Пространство имен: az.

Функция managementGroupResourceId доступна в Bicep файлах, но обычно она не нужна. Вместо этого используйте символьное имя для ресурса и получите доступ к свойству id.

Идентификатор возвращается в следующем формате:

/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}

Замечания

Используйте эту функцию, чтобы получить идентификатор ресурса для ресурсов, развернутых в группе управления, а не в группе ресурсов. Возвращаемый идентификатор отличается от значения, возвращаемого функцией resourceId, поскольку не включает идентификатор подписки и значение группы ресурсов.

Пример managementGroupResourceID

Следующий шаблон создает и назначает определение политики. Для получения идентификатора ресурса для определения политики используется функция managementGroupResourceId.

targetScope = 'managementGroup'

@description('Target Management Group')
param targetMG string

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2025-03-01' = {
  name: policyDefinitionName
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource location_lock 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
  name: 'location-lock'
  properties: {
    scope: mgScope
    policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
  }
  dependsOn: [
    policyDefinition
  ]
}

pickZones

pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])

Определяет, поддерживает ли тип ресурса зоны для региона. Эта функция поддерживает только зональные ресурсы. Избыточные между зонами службы возвращают пустой массив. Дополнительные сведения см. в разделе Azure службы, поддерживающие зоны доступности.

Пространство имен: az.

Параметры

Параметр Обязательное поле Тип Описание
пространство_имен_поставщика Да строка Пространство имен поставщика ресурсов для типа ресурса, для которого проверяется поддержка зоны.
Тип ресурса Да строка Тип ресурса для проверки поддержки зоны.
расположение Да строка Регион, в котором проверяется поддержка зоны.
numberOfZones Нет целое число Число логических зон для возврата. Значение по умолчанию — 1. Это должно быть целое положительное число от 1 до 3. Используйте 1 для ресурсов с одной зоной. Для ресурсов с несколькими зонами значение должно быть меньше или равно числу поддерживаемых зон.
смещение Нет целое число Смещение от начальной логической зоны. Функция возвращает ошибку, если смещение плюс numberOfZones превышает число поддерживаемых зон.

Возвращаемое значение

Массив с поддерживаемыми зонами. При использовании значений по умолчанию для offset и numberOfZones тип и регион ресурса, поддерживающие зоны, возвращают следующий массив:

[
  "1"
]

Если параметр numberOfZones имеет значение 3, возвращается:

[
  "1",
  "2",
  "3"
]

Если тип или регион ресурса не поддерживает зоны, возвращается пустой массив.

[
]

Замечания

Существуют различные категории для Azure Зоны доступности — зональные и избыточные между зонами. Функцию pickZones можно использовать для возврата зоны доступности для зональных ресурсов. Для избыточных между зонами служб (ZRS) функция возвращает пустой массив. Обычно у зональных ресурсов есть свойство zones на верхнем уровне определения ресурса. Сведения о категории поддержки зон доступности см. в разделе Azure службы, поддерживающие зоны доступности.

Чтобы определить, поддерживает ли данный регион или расположение Azure зоны доступности, вызовите функцию pickZones с зональным типом ресурса, например Майкрософт.Network/publicIPAddresses. Если ответ содержит значение, значит, регион поддерживает зоны доступности.

Пример pickZones

В следующем Bicep файле показаны три результата использования функции pickZones.

output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')

Выходные данные из предыдущих примеров возвращают три массива.

Имя. Тип значение
службы массив [ "1" ]
notSupportedRegion массив []
notSupportedType массив []

Вы можете использовать ответ от pickZones, чтобы определить, следует ли предоставить значение NULL для зон или назначить виртуальные машины разным зонам.

поставщики

Функция поставщиков устарела в Bicep. Мы больше не рекомендуем ее использовать. Если вы использовали эту функцию для получения версии API для поставщика ресурсов, рекомендуется предоставить определенную версию API в файле Bicep. Использование динамически возвращаемой версии API может привести к поломке вашего шаблона, если свойства изменяются между версиями.

Операция поставщиков по-прежнему доступна посредством REST API. Его можно использовать за пределами Bicep файла для получения сведений о поставщике ресурсов.

Пространство имен: az.

Получение

reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])

Возвращает объект, представляющий состояние среды выполнения ресурса. Выходные данные и поведение reference функции сильно зависят от того, как каждый поставщик ресурсов (RP) реализует свои ответы PUT и GET.

Пространство имен: az.

Файлы Bicep предоставляют доступ к эталонной функции, хотя обычно это не требуется. Вместо этого рекомендуется использовать символическое имя ресурса. Ссылочная функция может использоваться только в properties объекте ресурса и не может использоваться для свойств верхнего уровня, например name или location. Это же обычно относится к ссылкам с помощью символьного имени. Однако для таких nameсвойств можно создать шаблон, не используя эталонную функцию. Достаточное количество сведений об имени ресурса, как известно, напрямую выдает имя. Он называется свойствами времени компиляции. Bicep проверка может определить любое неправильное использование символьного имени.

В следующем примере выполняется развертывание учетной записи хранения. Первые два выходных данных дают одинаковые результаты.

param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location

Чтобы получить свойство из существующего ресурса, который не развернут в шаблоне, используйте ключевое слово existing.

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
  name: storageAccountName
}

// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob

Для ссылки на ресурс, который вложен в родительский ресурс, используйте вложенный метод доступа (::). Этот синтаксис используется только при доступе к вложенному ресурсу за пределами родительского ресурса.

vNet1::subnet1.properties.addressPrefix

Если попытаться сослаться на ресурс, который не существует, вы получите ошибку NotFound, а развертывание завершится сбоем.

идентификатор ресурса

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

Возвращает уникальный идентификатор ресурса.

Пространство имен: az.

Функция resourceId доступна в Bicep файлах, но обычно она не нужна. Вместо этого используйте символьное имя для ресурса и получите доступ к свойству id.

Эта функция используется, если имя ресурса неоднозначно или не подготовлено в одном Bicep файле. Формат возвращаемого идентификатора зависит от того, происходит ли развертывание в области действия группы ресурсов, подписки, группы управления или клиента.

Например:

param storageAccountName string
param location string = resourceGroup().location

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: storageAccountName
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

output storageID string = storageAccount.id

Чтобы получить идентификатор ресурса для ресурса, который не развернут в файле Bicep, используйте существующее ключевое слово.

param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' existing = {
  name: storageAccountName
}

output storageID string = storageAccount.id

Дополнительные сведения см. в функции resourceId шаблона JSON.

roleDefinitions

roleDefinisions(roleName)

Возвращает сведения об определении указанной роли, включая id и roleDefinitionId. Это вспомогательный элемент на основе имен для назначений ролей RBAC Azure. Вместо того, чтобы жестко закодировать GUID встроенного определения роли (например, участника, читателя и других), вы можете указать отображаемое имя встроенной роли, а функция разрешает соответствующие сведения об определении ролей во время развертывания.

Пространство имен: az.

Параметры

Параметр Обязательное поле Тип Описание
roleName Да строка Отображаемое имя определения роли.

Возвращаемое значение

Объект, представляющий определение роли, включая id и roleDefinitionId.

Примеры

Следующий код Bicep создает детерминированное Azure назначение роли RBAC, которое предоставляет указанному субъекту Storage Blob Data Reader встроенную роль в области развертывания путем разрешения определения роли по имени во время развертывания.

@description('Specifies the role definition ID used in the role assignment.')
param roleDefinitionName string = 'Storage Blob Data Reader'

@description('Specifies the principal ID assigned to the role.')
param principalId string

var roleAssignmentName= guid(principalId, roleDefinitionName, resourceGroup().id)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: roleDefinitions(roleDefinitionName).id
    principalId: principalId
  }
}

Дополнительные сведения см. в функции resourceId шаблона JSON.

subscriptionResourceId

subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)

Возвращает уникальный идентификатор ресурса, развернутого на уровне подписки.

Пространство имен: az.

Функция subscriptionResourceId доступна в Bicep файлах, но обычно она не нужна. Вместо этого используйте символьное имя для ресурса и получите доступ к свойству id.

Идентификатор возвращается в следующем формате:

/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Замечания

Используйте эту функцию, чтобы получить идентификатор ресурса для ресурсов, развернутых на уровне подписки, а не на уровне группы ресурсов. Возвращаемый идентификатор отличается от значения, возвращаемого функцией resourceId, тем, что он не включает значение группы ресурсов.

Пример subscriptionResourceId

Следующий Bicep файл назначает встроенную роль. Его можно развернуть либо в группе ресурсов, либо в подписке. Для получения идентификатора ресурса для встроенных ролей в нем используется функция subscriptionResourceId.

@description('Principal Id')
param principalId string

@allowed([
  'Owner'
  'Contributor'
  'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string

var roleDefinitionId = {
  Owner: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
  }
  Contributor: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
  }
  Reader: {
    id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
  }
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
  properties: {
    roleDefinitionId: roleDefinitionId[builtInRoleType].id
    principalId: principalId
  }
}

tenantResourceId

tenantResourceId(resourceType, resourceName1, [resourceName2], ...)

Возвращает уникальный идентификатор ресурса, развернутого на уровне клиента.

Пространство имен: az.

Функция tenantResourceId доступна в Bicep файлах, но обычно она не нужна. Вместо этого используйте символьное имя для ресурса и получите доступ к свойству id.

Идентификатор возвращается в следующем формате:

/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

Определения встроенных политик — это ресурсы уровня клиента. Чтобы развернуть назначение политики, ссылающееся на встроенное определение политики, используйте функцию tenantResourceId.

@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'

@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2025-03-01' = {
  name: policyAssignmentName
  properties: {
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
  }
}

toLogicalZone

toLogicalZone(subscriptionId, location, physicalZone)

Возвращает логическую зону доступности (например, 1, 2 или 3), соответствующую физической зоне доступности для указанной подписки в заданном регионе Azure.

Пространство имен: az

Параметры

Параметр Обязательное поле Тип Описание
ID подписки Да строка Идентификатор подписки Azure (например, 12345678-1234-1234-1234-1234567890ab).
расположение Да строка Регион Azure, поддерживающий зоны доступности (например, westus2).
physicalZone Да строка Идентификатор физической зоны доступности (например, идентификатор westus2-az1конкретного центра обработки данных).

Возвращаемое значение

Строка, представляющая логическую зону доступности (например, 1или23), соответствующую указанной физической зоне в заданном регионе и подписке. Если физическая зона недопустима или не поддерживается, возвращается пустая строка ('').

Замечания

  • Функция toLogicalZone извлекает сопоставление логических зон на основе конфигурации зоны подписки в указанном регионе.
  • Логические зоны — это стандартизированные идентификаторы (например, 1, 2, 3) для обеспечения согласованных назначений зон в службах Azure.
  • Идентификаторы физической зоны зависят от региона и могут отличаться между подписками. Используйте функцию для обратного toPhysicalZone сопоставления.
  • Эта функция требует, чтобы регион поддерживал зоны доступности. Список поддерживаемых регионов см. в разделе Azure службы, поддерживающие зоны доступности.
  • Если физическая зона не существует или не сопоставлена для подписки, функция возвращает пустую строку.
  • Эта функция полезна для выравнивания развертываний физической зоны с конфигурациями логических зон в шаблонах, особенно для сценариев между подписками или несколькими регионами.

Примеры

В следующем примере извлекается логическая зона для физической зоны в западной части США 2 для конкретной подписки:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'

output logicalZone string = toLogicalZone(subscriptionId, 'westus2', physicalZone)

Ожидаемые выходные данные:

Имя. Тип значение
логическая зона Струна 1

В следующем примере используется toLogicalZone для настройки виртуальной машины с правильной логической зоной:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZone string = 'westus2-az1'
param location string = 'westus2'

var logicalZone = toLogicalZone(subscriptionId, location, physicalZone)

resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
  name: 'myVM'
  location: location
  zones: logicalZone != '' ? [logicalZone] : []
  properties: {
    // VM properties
  }
}

output logicalZone string = logicalZone

Ожидаемые выходные данные:

Имя. Тип значение
логическая зона Струна 1

toLogicalZones

toLogicalZones(subscriptionId, location, physicalZones)

Возвращает зоны логической доступности (например, 1, 2 или 3), соответствующие физическим зонам доступности для указанной подписки в заданном регионе Azure. Чтобы преобразовать одну физическую зону, используйте функцию toLogicalZone .

Пространство имен: az

Параметры

Параметр Обязательное поле Тип Описание
ID подписки Да строка Идентификатор подписки Azure (например, 12345678-1234-1234-1234-1234567890ab).
расположение Да строка Регион Azure, поддерживающий зоны доступности (например, westus2).
physicalZones Да массив Массив имен физических зон для преобразования в логические зоны (например, идентификатор конкретного центра обработки данных, например westus2-az1, westus2-az2...).

Возвращаемое значение

Массив имен логических зон, соответствующих предоставленным физическим зонам (например, 1или23). Если физическая зона недопустима или не поддерживается, возвращается пустая строка ('').

Замечания

Функция toLogicalZones сопоставляет имена физических зон с эквивалентами логической зоны для указанной подписки и региона Azure. Это полезно для настройки или запроса ресурсов на основе логических зон в Azure регионе. Для функции требуется допустимый идентификатор подписки, поддерживаемое Azure расположение и массив имен физических зон. Если физическая зона недопустима или недоступна в указанном расположении, функция может вернуть пустую строку для этой зоны или вызвать ошибку в зависимости от контекста.

Примеры

В следующем примере извлекаются логические зоны для списка физических зон в западной части США 2 для конкретной подписки:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param physicalZones array = ['westus2-az1', 'westus2-az2', 'westus2-az3']

output logicalZones array = toLogicalZones(subscriptionId, 'westus2', physicalZones)

Ожидаемые выходные данные:

Имя. Тип значение
логическая зона массив ["1","2","3"]

toPhysicalZone

toPhysicalZone(subscriptionId, location, logicalZone)

Возвращает идентификатор зоны физической доступности (например, идентификатор конкретного центра обработки данных, например westus2-az1), соответствующий логической зоне доступности для указанной подписки в заданном регионе Azure.

Пространство имен: az

Параметры

Параметр Обязательное поле Тип Описание
ID подписки Да строка Идентификатор подписки Azure (например, 12345678-1234-1234-1234-1234567890ab).
расположение Да строка Регион Azure, поддерживающий зоны доступности (например, westus2).
логическая зона Да строка Зона логической доступности (например, 1или23).

Возвращаемое значение

Строка, представляющая идентификатор зоны физической доступности (например, westus2-az1), соответствующий указанной логической зоне в заданном регионе и подписке. Если логическая зона недопустима или не поддерживается, возвращается пустая строка ('').

Замечания

  • Функция toPhysicalZone извлекает сопоставление физической зоны на основе конфигурации зоны подписки в указанном регионе.
  • Физические зоны — это идентификаторы центра обработки данных, которые могут отличаться между подписками, а логические зоны (например, 1, 2) 3стандартизированы для конфигураций ресурсов.
  • toLogicalZone Используйте функцию для отмены этого сопоставления, преобразуя физическую зону в его логический эквивалент.
  • Эта функция требует, чтобы регион поддерживал зоны доступности. Список поддерживаемых регионов см. в разделе Azure службы, поддерживающие зоны доступности.
  • Если логическая зона не существует или не сопоставлена для подписки, функция возвращает пустую строку.
  • Эта функция полезна для сценариев, требующих идентификаторов физической зоны, таких как ведение журнала, аудит или выравнивание между зонами в развертываниях с несколькими регионами.

Примеры

В следующем примере извлекается физическая зона для логической зоны в западной части США 2 для конкретной подписки:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'

output physicalZone string = toPhysicalZone(subscriptionId, 'westus2', logicalZone)

Ожидаемые выходные данные (при условии, что логическая зона 1 сопоставляется с westus2-az1):

Имя. Тип значение
physicalZone Струна westus2-az1

В следующем примере используется toPhysicalZone для регистрации физической зоны для развертывания виртуальной машины:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZone string = '1'
param location string = 'westus2'

var physicalZone = toPhysicalZone(subscriptionId, location, logicalZone)

resource vm 'Microsoft.Compute/virtualMachines@2025-04-01' = {
  name: 'myVM'
  location: location
  zones: [logicalZone]
  properties: {
    // VM properties
  }
}

output physicalZone string = physicalZone

Ожидаемые выходные данные:

Имя. Тип значение
physicalZone Струна westus2-az1

toPhysicalZones

toPhysicalZones(subscriptionId, location, logicalZones)

Возвращает идентификаторы физической зоны доступности (например, идентификатор конкретного центра обработки данных, например westus2-az1), соответствующий зонам логической доступности для указанной подписки в заданном регионе Azure. Чтобы преобразовать одну логическую зону, используйте функцию toPhysicalZone .

Пространство имен: az

Параметры

Параметр Обязательное поле Тип Описание
ID подписки Да строка Идентификатор подписки Azure (например, 12345678-1234-1234-1234-1234567890ab).
расположение Да строка Регион Azure, поддерживающий зоны доступности (например, westus2).
логическая зона Да строка[] Зоны логической доступности (например, 1или23) для преобразования в физические зоны.

Возвращаемое значение

Массив имен физических зон (например, westus2-az1), westus2-az2 соответствующий предоставленным логическим зонам. Если логическая зона недопустима или не поддерживается, возвращается пустая строка ('').

Замечания

Функция toPhysicalZones сопоставляет имена логических зон с эквивалентами физической зоны для указанной подписки и региона Azure. Это полезно для развертывания или настройки ресурсов в определенных физических зонах в Azure регионе. Для функции требуется допустимый идентификатор подписки, поддерживаемое Azure расположение и массив имен логических зон. Если логическая зона недопустима или недоступна в указанном расположении, функция может вернуть пустую строку для этой зоны или вызвать ошибку в зависимости от контекста.

Примеры

В следующем примере извлекаются физические зоны для списка логических зон в западной части США 2 для конкретной подписки:

param subscriptionId string = '12345678-1234-1234-1234-1234567890ab'
param logicalZones array = ['1', '2', '3']

output physicalZones array = toPhysicalZones(subscriptionId, 'westus2', logicalZones)

Ожидаемые выходные данные (при условии, что логическая зона 1 сопоставляется с , логические зоны westus2-az1 сопоставляется с 1westus2-az1и логическими зонами 3 сопоставляется с westus2-az3):

Имя. Тип значение
physicalZone массив ["westus2-az1","westus2-az2","westus2-az3"]

Следующие шаги