Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje funkce Bicep pro načítání obsahu z externích souborů.
loadDirectoryFileInfo
loadDirectoryFileInfo(directoryPath, [searchPattern])
Načte základní informace o souborech adresáře jako objekt Bicep. Funkce načítá soubory během kompilace, ne za běhu.
Obor názvů: sys.
Parametry
| Parameter | Povinné | Typ | Description |
|---|---|---|---|
| directoryPath | Ano | řetězec | Cesta je relativní vzhledem k souboru Bicep, který tuto funkci vyvolává. Můžete použít proměnné, pokud jsou to konstanty v době kompilace, ale parametry použít ne. |
| searchPattern | Ne | řetězec | Vzor hledání, který se má použít při načítání souborů. Tento vzorec může zahrnovat divoké karty. |
Návratová hodnota
Pole objektů, z nichž každý představuje soubor v adresáři. Každý objekt obsahuje následující vlastnosti:
| Vlastnictví | Typ | Description |
|---|---|---|
| Basename | řetězec | Název souboru. |
| přípona | řetězec | Přípona souboru. |
| relativepath (Relativní cesta) | řetězec | Relativní cesta k aktuální šabloně. |
Examples
Následující příklad načte informace o souboru pro všechny soubory Bicep v ./modules/ adresáři.
var dirFileInfo = loadDirectoryFileInfo('./modules/', '*.bicep')
output dirFileInfoOutput object[] = dirFileInfo
Složka obsahuje pouze jeden soubor s názvem appService.bicep. Výstup je:
[{"relativePath":"modules/appService.bicep","baseName":"appService.bicep","extension":".bicep"}]
loadFileAsBase64
loadFileAsBase64(filePath)
Načte soubor jako řetězec base64.
Obor názvů: sys.
Parametry
| Parameter | Povinné | Typ | Description |
|---|---|---|---|
| Cesta k souboru | Ano | řetězec | Cesta k souboru, který se má načíst. Cesta je relativní vzhledem k nasazeného souboru Bicep. Nemůže obsahovat proměnné. |
Poznámky
Tuto funkci použijte, když chcete binární obsah zahrnout do nasazení. Místo ručního kódování souboru do řetězce base64 a přidávání do Bicep souboru načtěte soubor pomocí této funkce. Soubor se načte při kompilaci souboru Bicep do šablony JSON. Nemůžeš použít proměnné v cestě k souboru, protože kompilátor je při kompilaci do šablony nevyřeší. Během nasazování obsahuje šablona JSON obsah souboru jako pevně zakódovaný řetězec.
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.4.X nebo vyšší.
Maximální povolená velikost souboru je 96 KB.
Návratová hodnota
Soubor jako řetězec base64.
Examples
Následující příklad načítá PowerShell skript jako base64 string a používá jej s rozšířením Custom Script Extension for a virtual machine (VM).
param vmName string
param location string
resource vmExtension 'Microsoft.Compute/virtualMachines/extensions@2024-07-01' = {
name: '${vmName}/CustomScriptExtension'
location: location
properties: {
publisher: 'Microsoft.Compute'
type: 'CustomScriptExtension'
typeHandlerVersion: '1.10'
autoUpgradeMinorVersion: true
forceUpdateTag: 'true'
protectedSettings: {
commandToExecute: 'powershell.exe -ExecutionPolicy Unrestricted -Command "iex ""& { $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(\'${loadFileAsBase64('vm-provisioning.ps1')}\'))) } -ParamX foo -ParamY bar"""'
}
}
}
Note
Tento příklad nepoužívá parametr PowerShell -EncodedCommand .
-EncodedCommand očekává příkaz kódovaný UTF-16LE. Tento příklad místo toho předá do PowerShellu řetězec base64 a explicitně jej dekóduje jako UTF-8 před vyvoláním skriptu.
Skriptový soubor se načte během kompilace Bicep a vloží se do generované JSON šablony jako řetězec kódovaný v base64. Když nasazení běží, PowerShell řetězec dekóduje a spustí skript na VM. Tento přístup je užitečný při přímém vkládání obsahu skriptu do commandToExecute, protože se vyhýbá mnoha problémům s citacemi, úniky a novými řádky, které mohou nastat u víceřádkového skriptu.
Můžete také zakódovat inline víceřádkový řetězec a base64() předat pojmenované parametry dekódovanému skriptu. Pro více informací viz víceřádkový stringový literál.
var scriptContent = '''
param(
[string] $Name
)
Write-Host "Hello $Name!"
'''
var scriptArgs = {
Name: 'MyValue'
}
// Builds a string of the form '-ArgA ValA -ArgB ValB'
var argumentString = join(map(items(scriptArgs), i => '-${i.key} ${i.value}'), ' ')
var commandToExecute = 'powershell.exe -ExecutionPolicy Unrestricted -Command "iex \\"& { $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(\'${base64(scriptContent)}\'))) } ${argumentString}\\""'
Note
Tento příklad funguje, protože hodnota argumentu (MyValue) neobsahuje žádné speciální znaky. Jednoduchý join/map stavitel neuniká ani neuvádí hodnoty. Selže, pokud jakákoli hodnota obsahuje mezery (které musí být zabaleny do uvozovek), nebo jednoduché uvozovky, dvojité uvozovky či jiné znaky, které jsou specifické pro PowerShellův příkazový parser argumentů (který musí být ukázán pomocí replace()).
Pro kompletní příklad, který správně zpracovává booleany, celá čísla, řetězce s plným escapingem, pole a objekty, viz Vytvořte skript pro nasazení s komplexními vstupy a výstupy.
loadJsonContent
loadJsonContent(filePath, [jsonPath], [encoding])
Načte zadaný soubor JSON jako libovolný objekt.
Obor názvů: sys.
Parametry
| Parameter | Povinné | Typ | Description |
|---|---|---|---|
| Cesta k souboru | Ano | řetězec | Cesta k souboru, který se má načíst. Cesta je relativní vzhledem k nasazeného souboru Bicep. Nemůže obsahovat proměnné. |
| jsonPath | Ne | řetězec | Výraz JSONPath k určení, že se načte pouze část souboru. |
| kódování | Ne | řetězec | Kódování souboru. Výchozí hodnota je utf-8. Dostupné možnosti: iso-8859-1, us-ascii, utf-16, utf-16BE, nebo utf-8. |
Poznámky
Tuto funkci použijte, když máte JSON nebo minifikovaný JSON obsah, který ukládáte do samostatného souboru. Místo duplikování JSON obsahu ve vašem Bicep souboru použijte tuto funkci k načtení obsahu. Část souboru JSON můžete načíst zadáním cesty JSON. Kompilátor Bicep načte soubor při kompilaci Bicep souboru do šablony JSON. Nemůžete zahrnout proměnné do cesty k souboru, protože kompilátor je nedokáže vyřešit při kompilaci do šablony. Během nasazování obsahuje šablona JSON obsah souboru jako pevně zakódovaný řetězec.
Ve VS Code je IntelliSense dostupný pro vlastnosti načteného objektu. Můžete například vytvořit soubor s hodnotami, které se mají sdílet v mnoha souborech Bicep. Příklad je uvedený v tomto článku.
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.7.X nebo vyšší.
Maximální povolená velikost souboru je 1 048 576 znaků včetně zakončení řádků.
Návratová hodnota
Obsah souboru jako libovolný objekt.
Examples
Následující příklad vytvoří soubor JSON, který obsahuje hodnoty pro skupinu zabezpečení sítě.
{
"description": "Allows SSH traffic",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
}
Tento soubor načtete a převedete ho na objekt JSON. Objekt slouží k přiřazení hodnot k prostředku.
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
}
]
}
}
Soubor hodnot můžete znovu použít v jiných souborech Bicep, které nasazují skupinu zabezpečení sítě.
loadYamlContent
loadYamlContent(filePath, [pathFilter], [encoding])
Načte zadaný soubor YAML jako libovolný objekt.
Obor názvů: sys.
Parametry
| Parameter | Povinné | Typ | Description |
|---|---|---|---|
| Cesta k souboru | Ano | řetězec | Cesta k souboru, který se má načíst. Cesta je relativní vzhledem k nasazeného souboru Bicep. Nemůže obsahovat proměnné. |
| pathFilter | Ne | řetězec | Filtr cesty je výraz JSONPath, který určuje, že se načte pouze část souboru. |
| kódování | Ne | řetězec | Kódování souboru. Výchozí hodnota je utf-8. Dostupné možnosti: iso-8859-1, us-ascii, utf-16, utf-16BE, nebo utf-8. |
Poznámky
Použijte tuto funkci, když máte YAML nebo minifikovaný YAML obsah, který ukládáte do samostatného souboru. Místo duplikování YAML obsahu ve vašem Bicep souboru použijte tuto funkci k načtení obsahu. Část souboru YAML můžete načíst zadáním filtru cesty. Kompilátor Bicep načte soubor při kompilaci souboru Bicep do šablony YAML. Nemůžete zahrnout proměnné do cesty k souboru, protože kompilátor je nedokáže vyřešit při kompilaci do šablony. Během nasazování obsahuje šablona YAML obsah souboru jako pevně zakódovaný řetězec.
Ve VS Code je IntelliSense dostupný pro vlastnosti načteného objektu. Můžete například vytvořit soubor s hodnotami, které se mají sdílet v mnoha souborech Bicep. Příklad je uvedený v tomto článku.
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.16.X nebo vyšší.
Maximální povolená velikost souboru je 1 048 576 znaků včetně zakončení řádků.
Návratová hodnota
Obsah souboru jako libovolný objekt.
Examples
Následující příklad vytvoří soubor YAML, který obsahuje hodnoty pro skupinu zabezpečení sítě.
description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"
Tento soubor načtete a převedete ho na objekt JSON. Objekt slouží k přiřazení hodnot k prostředku.
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
}
]
}
}
Soubor hodnot můžete znovu použít v jiných souborech Bicep, které nasazují skupinu zabezpečení sítě.
loadTextContent
loadTextContent(filePath, [encoding])
Načte obsah zadaného souboru jako řetězec.
Obor názvů: sys.
Parametry
| Parameter | Povinné | Typ | Description |
|---|---|---|---|
| Cesta k souboru | Ano | řetězec | Cesta k souboru, který se má načíst. Cesta je relativní vzhledem k nasazeného souboru Bicep. Nemůže obsahovat proměnné. |
| kódování | Ne | řetězec | Kódování souboru. Výchozí hodnota je utf-8. Dostupné možnosti: iso-8859-1, us-ascii, utf-16, utf-16BE, nebo utf-8. |
Poznámky
Tuto funkci použijte, pokud máte obsah uložený v samostatném souboru. Obsah můžete načíst místo duplikování v souboru Bicep. Můžete například načíst skript nasazení ze souboru. Soubor se načte při kompilaci souboru Bicep do šablony JSON. Do cesty k souboru nemůžete zahrnout žádné proměnné, protože se při kompilaci do šablony nevyřeší. Během nasazování obsahuje šablona JSON obsah souboru jako pevně zakódovaný řetězec.
Pro načtení JSON souborů použijte funkci.loadJsonContent()
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.4.X nebo vyšší.
Maximální povolená velikost souboru je 131 072 znaků, včetně zakončení řádků.
Návratová hodnota
Obsah souboru jako řetězec.
Examples
Následující příklad ukazuje, jak načíst skript ze souboru a použít ho pro deployment skript.
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'
}
}
Další kroky
Popis oddílů v souboru Bicep najdete v tématu Vysvětlení struktury a syntaxe souborů Bicep.