Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describen las funciones de Bicep para cargar contenido desde archivos externos.
loadDirectoryFileInfo
loadDirectoryFileInfo(directoryPath, [searchPattern])
Carga información básica sobre los archivos de un directorio como objeto Bicep. La función carga archivos durante la compilación, no en tiempo de ejecución.
Espacio de nombres: sys.
Parámetros
| Parámetro | Obligatorio | Tipo | Description |
|---|---|---|---|
| directoryPath | Sí | cuerda / cadena | La ruta de acceso es relativa al archivo de Bicep que invoca esta función. Puedes usar variables si son constantes en tiempo de compilación, pero no puedes usar parámetros. |
| searchPattern | No | cuerda / cadena | Patrón de búsqueda que se va a usar al cargar archivos. Este patrón puede incluir comodines. |
Valor devuelto
Matriz de objetos, cada uno que representa un archivo en el directorio. Cada objeto contiene las siguientes propiedades:
| Propiedad | Tipo | Description |
|---|---|---|
| baseName | cuerda / cadena | El nombre del archivo. |
| extensión | cuerda / cadena | Extensión del archivo. |
| relativePath | cuerda / cadena | Ruta de acceso relativa a la plantilla actual. |
Examples
En el ejemplo siguiente se carga la información del archivo para todos los archivos de Bicep del ./modules/ directorio.
var dirFileInfo = loadDirectoryFileInfo('./modules/', '*.bicep')
output dirFileInfoOutput object[] = dirFileInfo
La carpeta solo contiene un archivo denominado appService.bicep. La salida es la siguiente:
[{"relativePath":"modules/appService.bicep","baseName":"appService.bicep","extension":".bicep"}]
loadFileAsBase64
loadFileAsBase64(filePath)
Carga el archivo como una cadena base64.
Espacio de nombres: sys.
Parámetros
| Parámetro | Obligatorio | Tipo | Description |
|---|---|---|---|
| filePath | Sí | cuerda / cadena | Ruta de acceso al archivo que se va a cargar. La ruta de acceso es relativa al archivo de Bicep implementado. No puede incluir variables. |
Observaciones
Usa esta función cuando tengas contenido binario que quieras incluir en el despliegue. En lugar de codificar manualmente el archivo en una cadena base64 y añadirlo a tu archivo Bicep, carga el archivo usando esta función. El archivo se carga cuando el archivo bicep se compila en una plantilla JSON. No puedes usar variables en la ruta del archivo porque el compilador no las resuelve al compilar en la plantilla. Durante la implementación, la plantilla JSON contiene el contenido del archivo como una cadena codificada de forma rígida.
Esta función requiere la versión 0.4.X o posterior de la CLI de Bicep.
El tamaño máximo permitido del archivo es de 96 KB.
Valor devuelto
El archivo como una cadena base64.
Examples
El siguiente ejemplo carga un script PowerShell como una cadena base64 y lo utiliza con la Extensión de Script Personalizado para una máquina virtual (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"""'
}
}
}
Nota:
Este ejemplo no utiliza el parámetro PowerShell -EncodedCommand .
-EncodedCommand espera un comando codificado en UTF-16LE. Este ejemplo, en cambio, pasa una cadena base64 a PowerShell y la decodifica explícitamente como UTF-8 antes de invocar el script.
El archivo de script se carga durante la compilación de Bicep y se incrusta en la plantilla JSON generada como una cadena codificada en base64. Cuando se ejecuta el despliegue, PowerShell decodifica la cadena e invoca el script en la VM. Este enfoque es útil al incrustar contenido de guion directamente en commandToExecute, porque evita muchos problemas de citas, escapes y nuevas líneas que pueden ocurrir con contenido de escritura multilínea.
También puedes codificar una cadena multilínea en línea y base64() pasar parámetros nombrados al script decodificado. Para más información, véase el literal de cadena multilínea.
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}\\""'
Nota:
Este ejemplo funciona porque el valor del argumento (MyValue) no contiene caracteres especiales. El constructor sencillo join/map no se escapa ni da valores. Fallará si algún valor contiene espacios (que deben estar envueltos entre comillas), comillas simples, comillas dobles u otros caracteres que sean especiales para el analizador de argumentos de línea de comandos de PowerShell (que debe escapar con replace()).
Para un ejemplo completo que maneja correctamente booleanos, enteros, cadenas con escape completo, arrays y objetos, véase Crear un script de despliegue con entradas y salidas complejas.
loadJsonContent
loadJsonContent(filePath, [jsonPath], [encoding])
Carga el archivo JSON especificado como un objeto Any.
Espacio de nombres: sys.
Parámetros
| Parámetro | Obligatorio | Tipo | Description |
|---|---|---|---|
| filePath | Sí | cuerda / cadena | Ruta de acceso al archivo que se va a cargar. La ruta de acceso es relativa al archivo de Bicep implementado. No puede incluir variables. |
| jsonPath | No | cuerda / cadena | Expresión JSONPath para especificar que solo se carga parte del archivo. |
| encoding | No | cuerda / cadena | Codificación de archivos. El valor predeterminado es utf-8. Las opciones disponibles son: iso-8859-1, us-ascii, utf-16, o utf-16BEutf-8. |
Observaciones
Usa esta función cuando tengas contenido JSON o contenido JSON minificado que almacenes en un archivo separado. En lugar de duplicar el contenido JSON en tu archivo Bicep, usa esta función para cargar el contenido. Puede cargar una parte de un archivo JSON especificando una ruta de acceso JSON. El compilador Bicep carga el archivo cuando compila el archivo Bicep a la plantilla JSON. No puedes incluir variables en la ruta del archivo porque el compilador no puede resolverlas al compilar en la plantilla. Durante la implementación, la plantilla JSON contiene el contenido del archivo como una cadena codificada de forma rígida.
En VS Code, IntelliSense está disponible para las propiedades del objeto cargado. Por ejemplo, puede crear un archivo con valores para compartirlos en muchos archivos de Bicep. En este artículo se muestra un ejemplo.
Esta función requiere la versión 0.7.X o posterior de la CLI de Bicep.
El tamaño máximo permitido del archivo es de 1048 576 caracteres, incluidos los finales de línea.
Valor devuelto
Contenido del archivo como un objeto Any.
Examples
En el ejemplo siguiente se crea un archivo JSON que contiene valores para un grupo de seguridad de red.
{
"description": "Allows SSH traffic",
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 100,
"direction": "Inbound"
}
Carga ese archivo y lo convierte en un objeto JSON. El objeto se usa para asignar valores al recurso.
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
}
]
}
}
Puede reutilizar el archivo de valores en otros archivos de Bicep que implementan un grupo de seguridad de red.
loadYamlContent
loadYamlContent(filePath, [pathFilter], [encoding])
Carga el archivo YAML especificado como un objeto Any.
Espacio de nombres: sys.
Parámetros
| Parámetro | Obligatorio | Tipo | Description |
|---|---|---|---|
| filePath | Sí | cuerda / cadena | Ruta de acceso al archivo que se va a cargar. La ruta de acceso es relativa al archivo de Bicep implementado. No puede incluir variables. |
| pathFilter | No | cuerda / cadena | El filtro de ruta de acceso es una expresión JSONPath para especificar que solo se carga parte del archivo. |
| encoding | No | cuerda / cadena | Codificación de archivos. El valor predeterminado es utf-8. Las opciones disponibles son: iso-8859-1, us-ascii, utf-16, o utf-16BEutf-8. |
Observaciones
Usa esta función cuando tengas contenido YAML o contenido YAML minificado que almacenes en un archivo separado. En lugar de duplicar el contenido YAML en tu archivo Bicep, usa esta función para cargar el contenido. Puede cargar una parte de un archivo YAML especificando un filtro de ruta de acceso. El compilador Bicep carga el archivo cuando compila el archivo Bicep a la plantilla YAML. No puedes incluir variables en la ruta del archivo porque el compilador no puede resolverlas al compilar en la plantilla. Durante la implementación, la plantilla YAML contiene el contenido del archivo como una cadena codificada de forma rígida.
En VS Code, IntelliSense está disponible para las propiedades del objeto cargado. Por ejemplo, puede crear un archivo con valores para compartirlos en muchos archivos de Bicep. En este artículo se muestra un ejemplo.
Esta función requiere la versión 0.16.X o posterior de la CLI de Bicep.
El tamaño máximo permitido del archivo es de 1048 576 caracteres, incluidos los finales de línea.
Valor devuelto
Contenido del archivo como un objeto Any.
Examples
En el ejemplo siguiente se crea un archivo YAML que contiene valores para un grupo de seguridad de red.
description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"
Carga ese archivo y lo convierte en un objeto JSON. El objeto se usa para asignar valores al recurso.
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
}
]
}
}
Puede reutilizar el archivo de valores en otros archivos de Bicep que implementan un grupo de seguridad de red.
loadTextContent
loadTextContent(filePath, [encoding])
Carga el contenido del archivo especificado como una cadena.
Espacio de nombres: sys.
Parámetros
| Parámetro | Obligatorio | Tipo | Description |
|---|---|---|---|
| filePath | Sí | cuerda / cadena | Ruta de acceso al archivo que se va a cargar. La ruta de acceso es relativa al archivo de Bicep implementado. No puede contener variables. |
| encoding | No | cuerda / cadena | Codificación de archivos. El valor predeterminado es utf-8. Las opciones disponibles son: iso-8859-1, us-ascii, utf-16, o utf-16BEutf-8. |
Observaciones
Use esta función cuando tenga contenido almacenado en un archivo independiente. Puede cargar el contenido en lugar de duplicarlo en el archivo de Bicep. Por ejemplo, puede cargar un script de implementación desde un archivo. El archivo se carga cuando el archivo de Bicep se compila en la plantilla JSON. No puedes incluir ninguna variable en la ruta del archivo porque no se resuelven al compilar en la plantilla. Durante la implementación, la plantilla JSON contiene el contenido del archivo como una cadena codificada de forma rígida.
Para cargar archivos JSON, usa la loadJsonContent() función.
Esta función requiere la versión 0.4.X o posterior de la CLI de Bicep.
El tamaño máximo permitido del archivo es de 131 072 caracteres, incluidos los finales de línea.
Valor devuelto
Contenido del archivo como una cadena.
Examples
El siguiente ejemplo muestra cómo cargar un script desde un archivo y usarlo para un script de despliegue.
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'
}
}
Pasos siguientes
Puede encontrar una descripción de las secciones de un archivo de Bicep en Nociones sobre la estructura y la sintaxis de los archivos de Bicep.