Share via


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-1us-asciiutf-16utf-16BEutf-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: nsgconfig
      }
    ]
  }
}

在部署網路安全性群組的其他 Bicep 檔案中,您可重複使用值的檔案。

loadYamlContent

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

將指定的 YAML 檔案載入為 Any 物件。

命名空間:sys (部分機器翻譯)。

參數

參數 必要 類型​ 描述
filePath Yes string 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包含變數。
pathFilter No string 路徑篩選條件是 JSONPath 運算式,指定只會載入檔案的一部分。
編碼 No string 檔案編碼。 預設值是 utf-8。 可用的選項為:iso-8859-1us-asciiutf-16utf-16BEutf-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 Yes string 要載入的檔案路徑。 該路徑相對於已部署的 Bicep 檔案。 不能包括變數。
編碼 No string 檔案編碼。 預設值是 utf-8。 可用的選項為:iso-8859-1us-asciiutf-16utf-16BEutf-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: '8.3'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

下一步