Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le funzioni Bicep per il caricamento di contenuto da file esterni.
loadDirectoryFileInfo
loadDirectoryFileInfo(directoryPath, [searchPattern])
Carica informazioni di base sui file di una directory come oggetto Bicep. La funzione carica i file durante la compilazione, non a runtime.
Spazio dei nomi: sys.
Parametri
| Parametro | Obbligatorio | TIPO | Description |
|---|---|---|---|
| directoryPath | Yes | corda | Il percorso è relativo al file Bicep che richiama questa funzione. Puoi usare variabili se sono costanti a tempo di compilazione, ma non puoi usare parametri. |
| searchPattern | NO | corda | Modello di ricerca da usare durante il caricamento dei file. Questo schema può includere le carte jolly. |
Valore restituito
Matrice di oggetti, ognuno dei quali rappresenta un file nella directory. Ogni oggetto contiene le proprietà seguenti:
| Proprietà | TIPO | Description |
|---|---|---|
| Basename | corda | Nome del file. |
| extension | corda | Estensione del file. |
| Percorso relativo | corda | Percorso relativo del modello corrente. |
Esempi
Nell'esempio seguente vengono caricate le informazioni sul file per tutti i file Bicep nella ./modules/ directory .
var dirFileInfo = loadDirectoryFileInfo('./modules/', '*.bicep')
output dirFileInfoOutput object[] = dirFileInfo
La cartella contiene solo un file denominato appService.bicep. L'output è il seguente:
[{"relativePath":"modules/appService.bicep","baseName":"appService.bicep","extension":".bicep"}]
loadFileAsBase64
loadFileAsBase64(filePath)
Carica il file come stringa base64.
Spazio dei nomi: sys.
Parametri
| Parametro | Obbligatorio | TIPO | Description |
|---|---|---|---|
| filePath | Yes | corda | Percorso del file da caricare. Il percorso è relativo al file Bicep distribuito. Non può includere variabili. |
Osservazioni:
Usa questa funzione quando hai contenuti binari da includere nella distribuzione. Invece di codificare manualmente il file in una stringa base64 e aggiungerlo al file Bicep, carica il file usando questa funzione. Il file viene caricato quando il file Bicep viene compilato in un modello JSON. Non puoi usare variabili nel percorso del file perché il compilatore non le risolve quando compila sul template. Durante la distribuzione, il modello JSON contiene il contenuto del file come stringa hardcoded.
Questa funzione richiede l'interfaccia della riga di comando di Bicep versione 0.4.X o successiva.
La dimensione massima consentita del file è di 96 KB.
Valore restituito
File come stringa base64.
Esempi
Il seguente esempio carica uno script PowerShell come stringa base64 e lo utilizza con l'estensione Custom Script per una macchina virtuale (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
Questo esempio non utilizza il parametro PowerShell -EncodedCommand .
-EncodedCommand si aspetta un comando codificato in UTF-16LE. Questo esempio invece passa una stringa base64 a PowerShell e la decodifica esplicitamente come UTF-8 prima di invocare lo script.
Il file script viene caricato durante la compilazione di Bicep e incorporato nel template JSON generato come stringa codificata base64. Quando la distribuzione viene eseguita, PowerShell decodifica la stringa e invoca lo script sulla VM. Questo approccio è utile quando si incorporano contenuti di script direttamente in commandToExecute, perché evita molti problemi di citazioni, escape e nuove linee che possono verificarsi con i contenuti di script a più linee.
Puoi anche codificare una stringa multi-linea inline e base64() passare parametri nominati allo script decodificato. Per maggiori informazioni, vedi il letterale della stringa multilinea.
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
Questo esempio funziona perché il valore dell'argomento (MyValue) non contiene caratteri speciali. Il costruttore semplice join/map non sfugge né indica valori. Fallirà se un valore contiene spazi (che devono essere avvolti tra virgolette), o virgolette singole, doppie virgolette o altri caratteri speciali per il parser di argomenti a riga di comandi di PowerShell (che deve essere scappato con replace()).
Per un esempio completo che gestisce correttamente booleani, interi, stringhe con escape completo, array e oggetti, vedi Crea uno script di distribuzione con input e output complessi.
loadJsonContent
loadJsonContent(filePath, [jsonPath], [encoding])
Carica il file JSON specificato come oggetto Any.
Spazio dei nomi: sys.
Parametri
| Parametro | Obbligatorio | TIPO | Description |
|---|---|---|---|
| filePath | Yes | corda | Percorso del file da caricare. Il percorso è relativo al file Bicep distribuito. Non può includere variabili. |
| jsonPath | NO | corda | Espressione JSONPath per specificare che viene caricata solo parte del file. |
| encoding | NO | corda | Codifica del file. Il valore predefinito è utf-8. Le opzioni disponibili sono: iso-8859-1, us-ascii, utf-16utf-16BE, o utf-8. |
Osservazioni:
Usa questa funzione quando hai contenuti JSON o JSON minificati che memorizzi in un file separato. Invece di duplicare il contenuto JSON nel file Bicep, usa questa funzione per caricare il contenuto. È possibile caricare una parte di un file JSON specificando un percorso JSON. Il compilatore Bicep carica il file quando compila il file Bicep nel template JSON. Non puoi includere variabili nel percorso del file perché il compilatore non può risolverle compilando sul template. Durante la distribuzione, il modello JSON contiene il contenuto del file come stringa hardcoded.
In VS Code, IntelliSense è disponibile per le proprietà dell'oggetto caricato. Ad esempio, è possibile creare un file con valori da condividere tra molti file Bicep. Un esempio è illustrato in questo articolo.
Questa funzione richiede l'interfaccia della riga di comando di Bicep versione 0.7.X o successiva.
La dimensione massima consentita del file è di 1.048.576 caratteri, incluse le terminazioni di riga.
Valore restituito
Contenuto del file come oggetto Any.
Esempi
L'esempio seguente crea un file JSON che contiene valori per un gruppo di sicurezza di rete.
{
"description": "Allows SSH traffic",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
}
Il file viene caricato e convertito in un oggetto JSON. Usare l'oggetto per assegnare valori alla risorsa.
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
}
]
}
}
È possibile riutilizzare il file di valori in altri file Bicep che distribuiscono un gruppo di sicurezza di rete.
loadYamlContent
loadYamlContent(filePath, [pathFilter], [encoding])
Carica il file YAML specificato come oggetto Any.
Spazio dei nomi: sys.
Parametri
| Parametro | Obbligatorio | TIPO | Description |
|---|---|---|---|
| filePath | Yes | corda | Percorso del file da caricare. Il percorso è relativo al file Bicep distribuito. Non può includere variabili. |
| pathFilter | NO | corda | Il filtro di percorso è un'espressione JSONPath per specificare che viene caricata solo parte del file. |
| encoding | NO | corda | Codifica del file. Il valore predefinito è utf-8. Le opzioni disponibili sono: iso-8859-1, us-ascii, utf-16utf-16BE, o utf-8. |
Osservazioni:
Usa questa funzione quando hai contenuti YAML o contenuti YAML minificati che memorizzi in un file separato. Invece di duplicare il contenuto YAML nel file Bicep, usa questa funzione per caricare il contenuto. È possibile caricare una parte di un file YAML specificando un filtro di percorso. Il compilatore Bicep carica il file quando compila il file Bicep nel template YAML. Non puoi includere variabili nel percorso del file perché il compilatore non può risolverle compilando sul template. Durante la distribuzione, il modello YAML contiene il contenuto del file come stringa hardcoded.
In VS Code, IntelliSense è disponibile per le proprietà dell'oggetto caricato. Ad esempio, è possibile creare un file con valori da condividere tra molti file Bicep. Un esempio è illustrato in questo articolo.
Questa funzione richiede l'interfaccia della riga di comando di Bicep versione 0.16.X o successiva.
La dimensione massima consentita del file è di 1.048.576 caratteri, incluse le terminazioni di riga.
Valore restituito
Contenuto del file come oggetto Any.
Esempi
Nell'esempio seguente viene creato un file YAML contenente valori per un gruppo di sicurezza di rete.
description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"
Il file viene caricato e convertito in un oggetto JSON. Usare l'oggetto per assegnare valori alla risorsa.
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
}
]
}
}
È possibile riutilizzare il file di valori in altri file Bicep che distribuiscono un gruppo di sicurezza di rete.
loadTextContent
loadTextContent(filePath, [encoding])
Carica il contenuto del file specificato come stringa.
Spazio dei nomi: sys.
Parametri
| Parametro | Obbligatorio | TIPO | Description |
|---|---|---|---|
| filePath | Yes | corda | Percorso del file da caricare. Il percorso è relativo al file Bicep distribuito. Non può contenere variabili. |
| encoding | NO | corda | Codifica del file. Il valore predefinito è utf-8. Le opzioni disponibili sono: iso-8859-1, us-ascii, utf-16utf-16BE, o utf-8. |
Osservazioni:
Usare questa funzione quando si dispone di contenuto archiviato in un file separato. È possibile caricare il contenuto anziché duplicarlo nel file Bicep. Ad esempio, è possibile caricare uno script di distribuzione da un file. Il file viene caricato quando il file Bicep viene compilato nel modello JSON. Non puoi includere nessuna variabile nel percorso del file perché non vengono risolte durante la compilazione sul template. Durante la distribuzione, il modello JSON contiene il contenuto del file come stringa hardcoded.
Per caricare file JSON, usa la loadJsonContent() funzione.
Questa funzione richiede l'interfaccia della riga di comando di Bicep versione 0.4.X o successiva.
La dimensione massima consentita del file è di 131.072 caratteri, incluse le terminazioni di riga.
Valore restituito
Contenuto del file come stringa.
Esempi
Il seguente esempio mostra come caricare uno script da un file e usarlo come script di distribuzione.
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'
}
}
Passaggi successivi
Per una descrizione delle sezioni in un file Bicep, vedere Informazioni sulla struttura e la sintassi dei file Bicep.