次の方法で共有


Bicep のファイル関数

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

loadDirectoryFileInfo

loadDirectoryFileInfo(directoryPath, [searchPattern])

ディレクトリのファイルに関する基本情報を Bicep オブジェクトとして読み込みます。 ファイルの読み込みは、実行時ではなくコンパイル中に発生します。

名前空間: sys

パラメーター

パラメーター 必須 タイプ Description
directoryPath イエス 文字列 パスは、この関数を呼び出す Bicep ファイルに対する相対パスです。 変数はコンパイル時定数の場合は使用できますが、パラメーターは使用できません。
searchPattern いいえ 文字列 ファイルを読み込むときに使用する検索パターン。 これにはワイルドカードを含めることができます。

戻り値

ディレクトリ内のファイルを表すオブジェクトの配列。 各オブジェクトには、次のプロパティが含まれています。

プロパティ タイプ Description
ベース 文字列 ファイルの名前。
拡張子 文字列 ファイルの拡張子。
relativePath (相対パス) 文字列 現在のテンプレートへの相対パス。

例示

次の例では、 ./modules/ ディレクトリ内のすべての Bicep ファイルのファイル情報を読み込みます。

var dirFileInfo = loadDirectoryFileInfo('./modules/', '*.bicep')

output dirFileInfoOutput object[] = dirFileInfo

フォルダーには、 appService.bicepという名前のファイルが 1 つだけ含まれています。 出力は次のようになります。

[{"relativePath":"modules/appService.bicep","baseName":"appService.bicep","extension":".bicep"}]

loadFileAsBase64

loadFileAsBase64(filePath)

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

名前空間: sys

パラメーター

パラメーター 必須 タイプ Description
filePath イエス 文字列 読み込むファイルへのパス。 パスは、デプロイされた Bicep ファイルに対する相対パスです。 変数を含めることはできません。

注釈

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

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

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

戻り値

base64 文字列としてのファイル。

loadJsonContent

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

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

名前空間: sys

パラメーター

パラメーター 必須 タイプ Description
filePath イエス 文字列 読み込むファイルへのパス。 パスは、デプロイされた Bicep ファイルに対する相対パスです。 変数を含めることはできません。
jsonPath いいえ 文字列 ファイルの一部のみが読み込まれるよう指定する JSONPath 式。
エンコード いいえ 文字列 ファイル エンコード。 既定値は 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@2025-01-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadYamlContent

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

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

名前空間: sys

パラメーター

パラメーター 必須 タイプ Description
filePath イエス 文字列 読み込むファイルへのパス。 パスは、デプロイされた Bicep ファイルに対する相対パスです。 変数を含めることはできません。
pathFilter いいえ 文字列 パス フィルターは、ファイルの一部のみが読み込まれるよう指定する JSONPath 式です。
エンコード いいえ 文字列 ファイル エンコード。 既定値は 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@2025-01-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

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

loadTextContent

loadTextContent(filePath, [encoding])

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

名前空間: sys

パラメーター

パラメーター 必須 タイプ Description
filePath イエス 文字列 読み込むファイルへのパス。 パスは、デプロイされた Bicep ファイルに対する相対パスです。 変数を含めることはできません。
エンコード いいえ 文字列 ファイル エンコード。 既定値は 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@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: '14.0'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

次のステップ