Bicep 的文件函数

本文介绍用于从外部文件加载内容的 Bicep 函数。

loadFileAsBase64

loadFileAsBase64(filePath)

将文件加载为 base64 字符串。

命名空间: sys

参数

参数 必选 类型 DESCRIPTION
文件路径 是的 字符串 要加载的文件的路径。 路径相对于已部署的 Bicep 文件。 它不能包含变量。

注解

如果具有要包括在部署中的二进制内容,请使用此函数。 使用此函数加载文件,而不是将文件手动编码为 base64 字符串并将其添加到 Bicep 文件。 将 Bicep 文件编译为 JSON 模板时,将加载该文件。 不能在文件路径中使用变量,因为它们在编译到模板时尚未解析。 在部署期间,JSON 模板包含文件的内容作为硬编码字符串。

此函数需要 Bicep CLI 0.4.X 或更高版本

文件允许的最大大小为 96 Kb

返回值

该文件作为 base64 字符串。

loadJsonContent

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

将指定的 JSON 文件加载为 Any 对象。

命名空间: sys

参数

参数 必选 类型 DESCRIPTION
文件路径 是的 字符串 要加载的文件的路径。 路径相对于已部署的 Bicep 文件。 它不能包含变量。
jsonPath 字符串 用于指定仅加载文件的一部分的 JSONPath 表达式。
编码 字符串 文件编码。 默认值是 utf-8。 可用选项包括:iso-8859-1、、us-asciiutf-16utf-16BEutf-8

注解

如果具有存储在单独文件中的 JSON 内容或缩小的 JSON 内容,请使用此函数。 使用此函数加载内容,而不是复制 Bicep 文件中的 JSON 内容。 可以通过指定 JSON 路径来加载 JSON 文件的一部分。 将 Bicep 文件编译为 JSON 模板时,将加载该文件。 不能在文件路径中包含变量,因为它们在编译到模板时尚未解析。 在部署期间,JSON 模板包含文件的内容作为硬编码字符串。

在 VS Code 中,加载对象的属性是可用的 Intellisense。 例如,可以创建一个文件,其中包含要跨多个 Bicep 文件共享的值。 本文显示了一个示例。

此函数需要 Bicep CLI 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

参数

参数 必选 类型 DESCRIPTION
文件路径 是的 字符串 要加载的文件的路径。 路径相对于已部署的 Bicep 文件。 它不能包含变量。
pathFilter 字符串 路径筛选器是一个 JSONPath 表达式,用于指定仅加载文件的一部分。
编码 字符串 文件编码。 默认值是 utf-8。 可用选项包括:iso-8859-1、、us-asciiutf-16utf-16BEutf-8

注解

当你具有存储在单独文件中的 YAML 内容或缩小的 YAML 内容时,请使用此函数。 使用此函数加载内容,而不是复制 Bicep 文件中的 YAML 内容。 可以通过指定路径筛选器来加载 YAML 文件的一部分。 将 Bicep 文件编译到 YAML 模板时,将加载该文件。 不能在文件路径中包含变量,因为它们在编译到模板时尚未解析。 在部署期间,YAML 模板包含文件的内容作为硬编码字符串。

在 VS Code 中,加载对象的属性是可用的 Intellisense。 例如,可以创建一个文件,其中包含要跨多个 Bicep 文件共享的值。 本文显示了一个示例。

此函数需要 Bicep CLI 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

参数

参数 必选 类型 DESCRIPTION
文件路径 是的 字符串 要加载的文件的路径。 路径相对于已部署的 Bicep 文件。 它不能包含变量。
编码 字符串 文件编码。 默认值是 utf-8。 可用选项包括:iso-8859-1、、us-asciiutf-16utf-16BEutf-8

注解

如果内容存储在单独的文件中,请使用此函数。 可以加载内容,而不是在 Bicep 文件中复制它。 例如,可以从文件加载部署脚本。 将 Bicep 文件编译为 JSON 模板时,将加载该文件。 不能在文件路径中包含任何变量,因为它们在编译到模板时尚未解析。 在部署期间,JSON 模板包含文件的内容作为硬编码字符串。

使用该 loadJsonContent() 函数加载 JSON 文件。

此函数需要 Bicep CLI 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'
  }
}

后续步骤