Bicep 的文件函数
本文介绍用于从外部文件加载内容的 Bicep 函数。
loadFileAsBase64
loadFileAsBase64(filePath)
将文件加载为 base64 字符串。
命名空间:sys。
参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
filePath | 是 | 字符串 | 要加载的文件的路径。 该路径相对于已部署的 Bicep 文件。 它不能包含变量。 |
注解
当有要包含在部署中的二进制内容时,请使用此函数。 使用此函数加载文件,而不是手动将文件编码为 base64 字符串再将其添加到 Bicep 文件中。 将 Bicep 文件编译为 JSON 模板时,将加载该文件。 不能在文件路径中使用变量,因为它们在编译到模板时尚未进行解析。 在部署期间,JSON 模板将包含该文件的内容作为硬编码的字符串。
此函数需要 Bicep CLI 0.4.X 或更高版本。
允许的最大文件大小为 96 Kb。
返回值
base64 字符串形式的文件。
loadJsonContent
loadJsonContent(filePath, [jsonPath], [encoding])
将指定的 JSON 文件加载为 Any 对象。
命名空间:sys。
参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
filePath | 是 | 字符串 | 要加载的文件的路径。 该路径相对于已部署的 Bicep 文件。 它不能包含变量。 |
jsonPath | 否 | string | 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 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@2021-02-01' = {
name: 'example-nsg'
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: {
description: nsgconfig.description
protocol: nsgconfig.protocol
sourcePortRange: nsgconfig.sourcePortRange
destinationPortRange: nsgconfig.destinationPortRange
sourceAddressPrefix: nsgconfig.sourceAddressPrefix
destinationAddressPrefix: nsgconfig.destinationAddressPrefix
access: nsgconfig.access
priority: nsgconfig.priority
direction: nsgconfig.direction
}
}
]
}
}
可以在部署网络安全组的其他 Bicep 文件中重复使用值文件。
loadYamlContent
loadYamlContent(filePath, [pathFilter], [encoding])
将指定的 YAML 文件加载为 Any 对象。
命名空间:sys。
参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
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 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@2021-02-01' = {
name: 'example-nsg'
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: nsgconfig
}
]
}
}
可以在部署网络安全组的其他 Bicep 文件中重复使用值文件。
loadTextContent
loadTextContent(filePath, [encoding])
加载指定文件的字符串形式的内容。
命名空间:sys。
参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
filePath | 是 | 字符串 | 要加载的文件的路径。 该路径相对于已部署的 Bicep 文件。 它不能包含变量。 |
encoding | 否 | 字符串 | 文件编码。 默认值为 utf-8 。 可用选项为:iso-8859-1 、us-ascii 、utf-16 、utf-16BE 或 utf-8 。 |
注解
如果你的内容存储在单独的文件中,请使用此函数。 你可以加载内容,而不必在 Bicep 文件中复制它。 例如,可以从文件加载部署脚本。 将 Bicep 文件编译为 JSON 模板时,将加载该文件。 不能在文件路径中包含任何变量,因为它们在编译到模板时尚未进行解析。 在部署期间,JSON 模板将包含该文件的内容作为硬编码的字符串。
使用 loadJsonContent()
函数加载 JSON 文件。
此函数需要 Bicep CLI 0.4.X 或更高版本。
允许的最大文件大小为 131,072 个字符(包括行尾字符)。
返回值
字符串形式的文件内容。
示例
以下示例从文件加载脚本,并将它用作部署脚本。
resource exampleScript 'Microsoft.Resources/deploymentScripts@2020-10-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: '3.0'
scriptContent: loadTextContent('myscript.ps1')
retentionInterval: 'P1D'
}
}
后续步骤
- 有关 Bicep 文件中各部分的说明,请参阅了解 Bicep 文件的结构和语法。