Bicep のファイル関数

この記事では、外部ファイルから内容を読み込むための Bicep 関数について説明します。

loadFileAsBase64

loadFileAsBase64(filePath)

ファイルを base64 文字列として読み込みます。

名前空間: sys

パラメーター

パラメーター 必須 タイプ 説明
filePath はい string 読み込むファイルのパス。 パスはデプロイされた Bicep ファイルからの相対パスです。 変数を含めることはできません。

注釈

この関数は、デプロイに含めるバイナリ コンテンツがある場合に使用します。 ファイルを手動で base64 文字列にエンコードして Bicep ファイルに追加するのではなく、この関数を使用してファイルを読み込みます。 このファイルは、Bicep ファイルが JSON テンプレートにコンパイルされるときに読み込まれます。 テンプレートにコンパイルするときに解決されていないため、ファイル パスで変数を使用することはできません。 デプロイ時に、JSON テンプレートには、ファイルの内容がハードコーディングされた文字列として含まれます。

この関数には、Bicep CLI バージョン 0.4.X 以上が必要です。

ファイルの最大許容サイズは 96 KB です。

戻り値

base64 文字列形式のファイル。

loadJsonContent

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

指定した JSON ファイルを Any オブジェクトとして読み込みます。

名前空間: sys

パラメーター

パラメーター 必須 タイプ 説明
filePath はい string 読み込むファイルのパス。 パスはデプロイされた Bicep ファイルからの相対パスです。 変数を含めることはできません。
jsonPath いいえ string ファイルの一部のみが読み込まれるよう指定する JSONPath 式。
encoding いいえ string ファイルのエンコード。 既定値は `utf-8` です。 使用できるオプションは、iso-8859-1us-asciiutf-16utf-16BE、または utf-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@2021-02-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

ネットワーク セキュリティ グループをデプロイする他の Bicep ファイルで、値のファイルを再利用できます。

loadYamlContent

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

指定した YAML ファイルを Any オブジェクトとして読み込みます。

名前空間: sys

パラメーター

パラメーター 必須 タイプ 説明
filePath はい string 読み込むファイルのパス。 パスはデプロイされた Bicep ファイルからの相対パスです。 変数を含めることはできません。
pathFilter いいえ string このパス フィルターはファイルの一部のみが読み込まれるように指定するための JSONPath 式です。
encoding いいえ string ファイルのエンコード。 既定値は `utf-8` です。 使用できるオプションは、iso-8859-1us-asciiutf-16utf-16BE、または utf-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@2021-02-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

ネットワーク セキュリティ グループをデプロイする他の Bicep ファイルで、値のファイルを再利用できます。

loadTextContent

loadTextContent(filePath, [encoding])

指定したファイルの内容を文字列として読み込みます。

名前空間: sys

パラメーター

パラメーター 必須 タイプ 説明
filePath はい string 読み込むファイルのパス。 パスはデプロイされた Bicep ファイルからの相対パスです。 変数を含めることはできません。
encoding いいえ string ファイルのエンコード。 既定値は `utf-8` です。 使用できるオプションは、iso-8859-1us-asciiutf-16utf-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: '8.3'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

次のステップ