この記事では、外部ファイルからコンテンツを読み込むための 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-1、 us-ascii、 utf-16、 utf-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-1、 us-ascii、 utf-16、 utf-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-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: '14.0'
scriptContent: loadTextContent('myscript.ps1')
retentionInterval: 'P1D'
}
}
次のステップ
- Bicep ファイルのセクションの説明は、Bicep ファイルの構造と構文に関する記事をご覧ください。