Cet article explique comment définir des valeurs de sortie dans un fichier Bicep. Vous utilisez des sorties quand vous devez retourner des valeurs à partir des ressources déployées. Vous êtes limité à 64 sorties dans un fichier Bicep. Pour plus d’informations, consultez Limites du modèle.
Définir les sorties
La syntaxe permettant de définir une valeur de sortie est la suivante :
L’exemple suivant montre comment renvoyer une propriété à partir d’une ressource déployée. Dans l’exemple, publicIP est le nom symbolique d’une adresse IP publique déployée dans le fichier Bicep. La valeur de sortie obtient le nom de domaine complet pour l’adresse IP publique.
Si vous avez besoin de générer une propriété dont le nom comporte un trait d’union, utilisez des crochets autour du nom au lieu de la notation par points. Par exemple, utilisez ['property-name'] au lieu de .property-name.
Les éléments décoratifs sont écrits au format @expression et sont placés au-dessus des déclarations de sorties. Le tableau suivant présente les décorateurs disponibles pour des sorties.
Utilisez cet élément décoratif pour vous assurer que la sous-classe appropriée est identifiée et gérée. Pour plus d’informations, consultez Type de données union étiqueté personnalisé.
Élever BCP089 d’avertissement à erreur lorsqu’un nom de propriété d’un type de données défini par l’utilisateur est probablement une faute de frappe. Pour plus d’informations, consultez Élever le niveau d’erreur.
Les éléments décoratifs se trouvent dans l’espace de noms sys. Si vous devez différencier un élément décoratif d'un autre élément portant le même nom, faites précéder l’élément décoratif de sys. Par exemple, si votre fichier Bicep contient un paramètre nommé description, vous devez ajouter l’espace de noms sys lors de l’utilisation de l’élément décoratif description.
Bicep
@sys.description('The name of the instance.')paramnamestring
@sys.description('The description of the instance to display.')paramdescriptionstring
Description
Pour ajouter une explication, ajoutez une description aux déclarations de sorties. Par exemple :
Bicep
@description('Conditionally output the endpoint.')outputendpointstring = deployStorage ? myStorageAccount.properties.primaryEndpoints.blob : ''
Du texte au format Markdown peut être utilisé pour le texte de description.
Vous pouvez spécifier des longueurs minimale et maximale pour les sorties de chaîne et de tableau. Vous pouvez définir une contrainte ou les deux. Pour les chaînes, la longueur indique le nombre de caractères. Pour les tableaux, la longueur indique le nombre d’éléments dans le tableau.
L’exemple suivant déclare deux sorties. Une sortie est destinée à un nom de compte de stockage qui doit compter entre 3 et 24 caractères. L’autre sortie est un tableau qui doit compter entre 1 et 5 éléments.
Si vous disposez de propriétés personnalisées que vous souhaitez appliquer à une sortie, ajoutez un élément décoratif de métadonnées. Dans les métadonnées, définissez un objet avec des noms et valeurs personnalisés. L’objet que vous définissez pour les métadonnées peut contenir des propriétés de n’importe quel nom et type.
Vous pouvez utiliser cet élément décoratif pour suivre les informations relatives à la sortie qu'il n'est pas utile d'ajouter à la description.
Bicep
varobj = {}
@description('Configuration values that are applied when the application starts.')
@metadata({
source: 'database'contact: 'Web team'
})outputsettingsobject = obj
Lorsque vous fournissez un @metadata() élément décoratif avec une propriété qui est en conflit avec un autre élément décoratif, cet élément décoratif est toujours prioritaire sur tout ce qui se passe dans @metadata() l’élément décoratif. Par conséquent, la propriété en conflit dans la valeur @metadata() est redondante et sera remplacée. Pour plus d’informations, consultez Aucune métadonnée en conflit.
En général, vous utilisez une sortie conditionnelle quand vous avez déployé de manière conditionnelle une ressource. L’exemple suivant montre comment retourner de façon conditionnelle l’ID de ressource pour une adresse IP publique si une nouvelle a été déployée.
Pour spécifier une sortie conditionnelle dans Bicep, utilisez l'opérateur ?. L’exemple suivant renvoie une URL de point de terminaison ou une chaîne vide en fonction d’une condition.
Dans certains scénarios, vous ne connaissez pas le nombre d’instances d’une valeur que vous devez retourner lors de la création du modèle. Vous pouvez retourner un nombre variable de valeurs à l’aide de l’expression for.
az deployment group show \
-g<resource-group-name> \
-n<deployment-name> \
--query properties.outputs.resourceID.value
Tri d’objets dans les sorties
Dans JSON, un objet est une collection non ordonnée de zéro ou plus paires clé/valeur. L’ordre peut être différent selon les implémentations. Par exemple, la fonction Bicep items() trie les objets par ordre alphabétique. Dans d’autres endroits, l’ordre d’origine peut être conservé. En raison de ce non-déterminisme, évitez de faire des hypothèses sur l’ordre des clés des objets lors de l’écriture du code, ce qui interagit avec les paramètres et les sorties des déploiements.
Créez des modèles Bicep avancés en utilisant des conditions pour déployer des ressources de manière conditionnelle et en utilisant des boucles pour déployer plusieurs instances de ressources.