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


Функции для работы с файлами в Bicep

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

loadFileAsBase64

loadFileAsBase64(filePath)

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

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

Параметры

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

Замечания

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

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

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

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

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

loadJsonContent

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

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

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

Параметры

Параметр Обязательное поле Type Описание
filePath Да строка Путь к загружаемому файлу. Путь задается относительно развернутого файла Bicep. Не удается включить переменные.
jsonPath Нет строка Выражение JSONPath, указывающее, что загружается только часть файла.
encoding Нет строка Кодирование файла. Значение по умолчанию — utf-8. Доступные параметры: iso-8859-1, us-ascii, utf-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@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadYamlContent

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

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

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

Параметры

Параметр Обязательное поле Type Описание
filePath Да строка Путь к загружаемому файлу. Путь задается относительно развернутого файла Bicep. Не удается включить переменные.
pathFilter Нет строка Фильтр пути — это выражение JSONPath, указывающее, что загружается только часть файла.
encoding Нет строка Кодирование файла. Значение по умолчанию — utf-8. Доступные параметры: iso-8859-1, us-ascii, utf-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@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadTextContent

loadTextContent(filePath, [encoding])

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

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

Параметры

Параметр Обязательное поле Type Описание
filePath Да строка Путь к загружаемому файлу. Путь задается относительно развернутого файла Bicep. Он не может содержать переменные.
encoding Нет строка Кодирование файла. Значение по умолчанию — utf-8. Доступные параметры: iso-8859-1, us-ascii, utf-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: '8.3'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

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