Bicep 的檔案函式
本文描述從外部檔案載入內容的 Bicep 函式。
loadFileAsBase64
loadFileAsBase64(filePath)
以 base64 字串形式載入檔案。
命名空間:sys (部分機器翻譯)。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
filePath | Yes | string | 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包含變數。 |
備註
若部署要包含二進位內容,請使用此函式。 請勿將檔案手動編碼成 base64 字串並新增至 Bicep 檔案,而是使用此函式來載入檔案。 將 Bicep 檔案編譯為 JSON 範本時,便會載入該檔案。 您無法在檔案路徑中使用變數,因為在編譯至範本時尚未解析變數。 在部署期間,JSON 範本會以硬式編碼字串的形式來包含檔案內容。
此函式需要 Bicep CLI 0.4.X 版或更高版本。
允許的檔案大小上限為 96 Kb。
傳回值
檔案 (base64 字串)。
loadJsonContent
loadJsonContent(filePath, [jsonPath], [encoding])
將指定的 JSON 檔案載入為 Any 物件。
命名空間:sys (部分機器翻譯)。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
filePath | Yes | string | 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包含變數。 |
jsonPath | No | string | JSONPath 運算式,指定只會載入檔案的一部分。 |
編碼 | No | string | 檔案編碼。 預設值是 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@2023-11-01' = {
name: 'example-nsg'
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: nsgconfig
}
]
}
}
在部署網路安全性群組的其他 Bicep 檔案中,您可重複使用值的檔案。
loadYamlContent
loadYamlContent(filePath, [pathFilter], [encoding])
將指定的 YAML 檔案載入為 Any 物件。
命名空間:sys (部分機器翻譯)。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
filePath | Yes | string | 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包含變數。 |
pathFilter | No | string | 路徑篩選條件是 JSONPath 運算式,指定只會載入檔案的一部分。 |
編碼 | No | string | 檔案編碼。 預設值是 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@2023-11-01' = {
name: 'example-nsg'
location: location
properties: {
securityRules: [
{
name: 'SSH'
properties: nsgconfig
}
]
}
}
在部署網路安全性群組的其他 Bicep 檔案中,您可重複使用值的檔案。
loadTextContent
loadTextContent(filePath, [encoding])
以字串形式載入指定檔案的內容。
命名空間:sys (部分機器翻譯)。
參數
參數 | 必要 | 類型 | 描述 |
---|---|---|---|
filePath | Yes | string | 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包括變數。 |
編碼 | No | string | 檔案編碼。 預設值是 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@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'
}
}
下一步
- 如需 Bicep 檔案中各區段的描述,請參閱了解 Bicep 檔案的結構和語法。