Поделиться через


Функции файлов для Bicep

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

loadDirectoryFileInfo

loadDirectoryFileInfo(directoryPath, [searchPattern])

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

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

Параметры

Параметр Обязательно Тип Description
directoryPath Да струна Путь относительно файла Bicep, вызывающего эту функцию. Он может использовать переменные, если они являются константами времени компиляции, но не могут использовать параметры.
searchPattern нет струна Шаблон поиска, используемый при загрузке файлов. Это может включать подстановочные знаки.

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

Массив объектов, каждый из которых представляет файл в каталоге. Каждый объект содержит следующие свойства:

Недвижимость Тип Description
baseName струна Имя файла.
Расширение струна Расширение файла.
relativePath струна Относительный путь к текущему шаблону.

Примеры

В следующем примере загружаются сведения о файле для всех файлов Bicep в каталоге ./modules/ .

var dirFileInfo = loadDirectoryFileInfo('./modules/', '*.bicep')

output dirFileInfoOutput object[] = dirFileInfo

Папка содержит только один файл с именем appService.bicep. Результат выглядит так:

[{"relativePath":"modules/appService.bicep","baseName":"appService.bicep","extension":".bicep"}]

loadFileAsBase64

loadFileAsBase64(filePath)

Загружает файл в виде строки base64.

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

Параметры

Параметр Обязательно Тип Description
filePath Да струна Путь к загружению файла. Путь относительно развернутого Bicep-файла. Не удается включить переменные.

Замечания

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

Для этой функции требуется интерфейс командной строки Bicep версии 0.4.X или более поздней.

Максимальный допустимый размер файла составляет 96 КБ.

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

Файл в виде строки base64.

loadJsonContent

loadJsonContent(filePath, [jsonPath], [encoding])

Загружает указанный JSON-файл в виде объекта Any.

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

Параметры

Параметр Обязательно Тип Description
filePath Да струна Путь к загружению файла. Путь относительно развернутого Bicep-файла. Не удается включить переменные.
jsonPath нет струна Выражение JSONPath, указывающее, что загружается только часть файла.
encoding нет струна Кодировка файла. Значение по умолчанию — utf-8. Доступны следующие варианты: iso-8859-1, , us-asciiutf-16, utf-16BEили utf-8.

Замечания

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

В VS Code свойства загруженного объекта доступны intellisense. Например, можно создать файл со значениями для общего доступа ко многим файлам Bicep. Пример показан в этой статье.

Для этой функции требуется интерфейс командной строки Bicep версии 0.7.X или более поздней.

Максимальный допустимый размер файла составляет 1 048 576 символов, включая окончания строки.

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

Содержимое файла как объекта Any.

Примеры

В следующем примере создается JSON-файл, содержащий значения для группы безопасности сети.

{
  "description": "Allows SSH traffic",
  "protocol": "Tcp",
  "sourcePortRange": "*",
  "destinationPortRange": "22",
  "sourceAddressPrefix": "*",
  "destinationAddressPrefix": "*",
  "access": "Allow",
  "priority": 100,
  "direction": "Inbound"
}

Вы загружаете этот файл и преобразуете его в объект JSON. Объект используется для назначения значений ресурсу.

param location string = resourceGroup().location

var nsgconfig = loadJsonContent('nsg-security-rules.json')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2025-01-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadYamlContent

loadYamlContent(filePath, [pathFilter], [encoding])

Загружает указанный ФАЙЛ YAML в виде объекта Any.

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

Параметры

Параметр Обязательно Тип Description
filePath Да струна Путь к загружению файла. Путь относительно развернутого Bicep-файла. Не удается включить переменные.
pathFilter нет струна Фильтр пути — это выражение JSONPath, указывающее, что загружается только часть файла.
encoding нет струна Кодировка файла. Значение по умолчанию — utf-8. Доступны следующие варианты: iso-8859-1, , us-asciiutf-16, utf-16BEили utf-8.

Замечания

Используйте эту функцию, если у вас есть содержимое YAML или минифицированное содержимое YAML, хранящееся в отдельном файле. Вместо дедупликации содержимого YAML в файле Bicep загрузите содержимое с помощью этой функции. Вы можете загрузить часть ФАЙЛА YAML, указав фильтр пути. Файл загружается при компиляции Bicep-файла в шаблон YAML. Невозможно включить переменные в путь к файлу, так как они не были разрешены при компиляции в шаблон. Во время развертывания шаблон YAML содержит содержимое файла как жестко закодированную строку.

В VS Code свойства загруженного объекта доступны intellisense. Например, можно создать файл со значениями для общего доступа ко многим файлам Bicep. Пример показан в этой статье.

Для этой функции требуется интерфейс командной строки Bicep версии 0.16.X или более поздней.

Максимальный допустимый размер файла составляет 1 048 576 символов, включая окончания строки.

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

Содержимое файла как объекта Any.

Примеры

В следующем примере создается ФАЙЛ YAML, содержащий значения для группы безопасности сети.

description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"

Вы загружаете этот файл и преобразуете его в объект JSON. Объект используется для назначения значений ресурсу.

param location string = resourceGroup().location

var nsgconfig = loadYamlContent('nsg-security-rules.yaml')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2025-01-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadTextContent

loadTextContent(filePath, [encoding])

Загружает содержимое указанного файла в виде строки.

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

Параметры

Параметр Обязательно Тип Description
filePath Да струна Путь к загружению файла. Путь относительно развернутого Bicep-файла. Он не может содержать переменные.
encoding нет струна Кодировка файла. Значение по умолчанию — utf-8. Доступны следующие варианты: iso-8859-1, , us-asciiutf-16, utf-16BEили utf-8.

Замечания

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

Используйте функцию loadJsonContent() для загрузки JSON-файлов.

Для этой функции требуется интерфейс командной строки Bicep версии 0.4.X или более поздней.

Максимальный допустимый размер файла составляет 131 072 символов, включая окончания строки.

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

Содержимое файла в виде строки.

Примеры

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

resource exampleScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'exampleScript'
  location: resourceGroup().location
  kind: 'AzurePowerShell'
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '/subscriptions/{sub-id}/resourcegroups/{rg-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{id-name}': {}
    }
  }
  properties: {
    azPowerShellVersion: '14.0'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

Дальнейшие шаги