Partager via


Fonctions de fichier pour Bicep

Cet article décrit les fonctions Bicep pour le chargement de contenu à partir de fichiers externes.

loadFileAsBase64

loadFileAsBase64(filePath)

Télécharge le fichier comme une chaîne base64.

Espace de noms : sys.

Paramètres

Paramètre Obligatoire Type Description
filePath Oui string Chemin d'accès vers le fichier à charger. Le chemin d’accès est relatif au fichier Bicep déployé. Il ne peut pas inclure de variables.

Remarques

Utilisez cette fonction lorsque vous souhaitez inclure du contenu binaire au déploiement. Au lieu d’encoder manuellement le fichier dans une chaîne Base64 et de l’ajouter à votre fichier Bicep, chargez le fichier avec cette fonction. Le fichier est chargé lorsque le fichier Bicep est compilé dans un modèle JSON. Vous ne pouvez pas utiliser de variables dans le chemin d’accès du fichier, car elles n’ont pas été résolues lors de la compilation sur le modèle. Pendant le déploiement, le modèle JSON contient le contenu du fichier sous la forme d’une chaîne codée en dur.

Cette fonction nécessite Bicep CLI version 0.4.X ou ultérieure.

La taille maximale autorisée du fichier est de 96 Ko.

Valeur de retour

Le fichier est sous la forme d’une chaîne base64.

loadJsonContent

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

Charge le fichier JSON spécifié en tant qu’objet Any.

Espace de noms : sys.

Paramètres

Paramètre Obligatoire Type Description
filePath Oui string Chemin d'accès vers le fichier à charger. Le chemin d’accès est relatif au fichier Bicep déployé. Il ne peut pas inclure de variables.
jsonPath Non string Expression JSONPath pour spécifier que seule une partie du fichier est chargée.
encodage Non string Encodage du fichier. La valeur par défaut est utf-8. Les options disponibles sont : iso-8859-1 , us-ascii , utf-16 , utf-16BE ou utf-8.

Remarques

Utilisez cette fonction quand vous avez du contenu JSON ou du contenu JSON minifié qui est stocké dans un fichier séparé. Au lieu de dupliquer le contenu JSON dans votre fichier Bicep, chargez le contenu avec cette fonction. Vous pouvez charger une partie d’un fichier JSON en spécifiant un chemin JSON. Le fichier est chargé lorsque le fichier Bicep est compilé dans un modèle JSON. Vous ne pouvez pas inclure de variables dans le chemin d’accès du fichier, car elles n’ont pas été résolues lors de la compilation sur le modèle. Pendant le déploiement, le modèle JSON contient le contenu du fichier sous la forme d’une chaîne codée en dur.

Dans VS Code, les propriétés de l’objet chargé sont disponibles dans intellisense. Par exemple, vous pouvez créer un fichier avec des valeurs à partager entre plusieurs fichiers Bicep. Un exemple est présenté dans cet article.

Cette fonction nécessite Bicep CLI version 0.7.X ou ultérieure.

La taille maximale autorisée du fichier est de 1 048 576 caractères, y compris les fins de ligne.

Valeur retournée

Contenu du fichier en tant qu’objet Any.

Exemples

L’exemple suivant crée un fichier JSON qui contient des valeurs pour un groupe de sécurité réseau.

{
  "description": "Allows SSH traffic",
  "protocol": "Tcp",
  "sourcePortRange": "*",
  "destinationPortRange": "22",
  "sourceAddressPrefix": "*",
  "destinationAddressPrefix": "*",
  "access": "Allow",
  "priority": 100,
  "direction": "Inbound"
}

Vous chargez ce fichier et vous le convertissez en un objet JSON. Vous utilisez l’objet pour assigner des valeurs à la ressource.

param location string = resourceGroup().location

var nsgconfig = loadJsonContent('nsg-security-rules.json')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

Vous pouvez réutiliser le fichier de valeurs dans d’autres fichiers Bicep qui déploient un groupe de sécurité réseau.

loadYamlContent

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

Charge le fichier YAML spécifié en tant qu’objet Any.

Espace de noms : sys.

Paramètres

Paramètre Obligatoire Type Description
filePath Oui string Chemin d'accès vers le fichier à charger. Le chemin d’accès est relatif au fichier Bicep déployé. Il ne peut pas inclure de variables.
pathFilter Non string Le filtre de chemin est une expression JSONPath pour spécifier que seule une partie du fichier est chargée.
encodage Non string Encodage du fichier. La valeur par défaut est utf-8. Les options disponibles sont : iso-8859-1 , us-ascii , utf-16 , utf-16BE ou utf-8.

Remarques

Utilisez cette fonction quand vous avez du contenu YAML (ou du contenu YAML minifié) stocké dans un fichier distinct. Au lieu de dupliquer le contenu YAML de votre fichier Bicep, chargez le contenu avec cette fonction. Vous pouvez charger une partie d’un fichier YAML en spécifiant un chemin de chemin d’accès. Le fichier est chargé pendant la compilation du fichier Bicep dans le modèle YAML. Vous ne pouvez pas inclure de variables dans le chemin d’accès du fichier, car elles n’ont pas été résolues lors de la compilation sur le modèle. Pendant le déploiement, le modèle YAML contient le contenu du fichier sous la forme d’une chaîne codée en dur.

Dans VS Code, les propriétés de l’objet chargé sont disponibles dans intellisense. Par exemple, vous pouvez créer un fichier avec des valeurs à partager entre plusieurs fichiers Bicep. Un exemple est présenté dans cet article.

Cette fonction nécessite Bicep CLI version 0.16.X ou ultérieure.

La taille maximale autorisée du fichier est de 1 048 576 caractères, y compris les fins de ligne.

Valeur retournée

Contenu du fichier en tant qu’objet Any.

Exemples

L’exemple suivant crée un fichier YAML contenant des valeurs pour un groupe de sécurité réseau.

description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"

Vous chargez ce fichier et vous le convertissez en un objet JSON. Vous utilisez l’objet pour assigner des valeurs à la ressource.

param location string = resourceGroup().location

var nsgconfig = loadYamlContent('nsg-security-rules.yaml')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

Vous pouvez réutiliser le fichier de valeurs dans d’autres fichiers Bicep qui déploient un groupe de sécurité réseau.

loadTextContent

loadTextContent(filePath, [encoding])

Charge le contenu du fichier spécifié sous forme de chaîne.

Espace de noms : sys.

Paramètres

Paramètre Obligatoire Type Description
filePath Oui string Chemin d'accès vers le fichier à charger. Le chemin d’accès est relatif au fichier Bicep déployé. Il ne peut pas contenir de variables.
encodage Non string Encodage du fichier. La valeur par défaut est utf-8. Les options disponibles sont : iso-8859-1 , us-ascii , utf-16 , utf-16BE ou utf-8.

Remarques

Utilisez cette fonction lorsque vous avez du contenu stocké dans un fichier séparé. Vous pouvez charger le contenu plutôt que de le dupliquer dans votre fichier Bicep. Par exemple, vous pouvez charger un script de déploiement à partir d’un fichier. Le fichier est chargé lorsque le fichier Bicep est compilé dans un modèle JSON. Vous ne pouvez pas inclure de variables dans le chemin d’accès du fichier, car elles n’ont pas été résolues lors de la compilation sur le modèle. Pendant le déploiement, le modèle JSON contient le contenu du fichier sous la forme d’une chaîne codée en dur.

Utilisez la fonction loadJsonContent() pour charger des fichiers JSON.

Cette fonction nécessite Bicep CLI version 0.4.X ou ultérieure.

La taille maximale autorisée du fichier est de 131 072 caractères, y compris les fins de ligne.

Valeur de retour

Contenu du fichier sous la forme d'une chaîne.

Exemples

L’exemple suivant charge un script à partir d’un fichier et l’utilise pour un script de déploiement.

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: '8.3'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

Étapes suivantes