Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctions définies par l’utilisateur permettent de simplifier et de réutiliser des expressions complexes dans vos modèles ARM. Encapsulant la logique dans les fonctions personnalisées, vous pouvez améliorer la lisibilité, la facilité de maintenance et la scalabilité des modèles, en particulier lorsque la même logique apparaît à plusieurs emplacements. Ces fonctions sont distinctes des fonctions de modèle intégrées qui sont toujours disponibles. Pour définir des fonctions définies par l’utilisateur dans Bicep, consultez les fonctions définies par l’utilisateur dans Bicep.
Définir la fonction
Vos fonctions nécessitent une valeur d’espace de noms pour éviter les conflits de noms avec les fonctions de modèle. L’exemple suivant montre une fonction qui retourne un nom unique :
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Utiliser la fonction
L’exemple suivant montre un modèle qui inclut une fonction définie par l’utilisateur pour obtenir un nom unique pour un compte de stockage. Le modèle a un paramètre nommé storageNamePrefix qui est passé en tant que paramètre à la fonction.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageNamePrefix": {
"type": "string",
"maxLength": 11
}
},
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[format('{0}{1}', toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
"location": "South Central US",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Lors du déploiement, le storageNamePrefix paramètre est passé à la fonction :
- Le modèle définit un paramètre nommé
storageNamePrefix. - La fonction use
namePrefixcar vous ne pouvez utiliser que les paramètres définis dans la fonction. Pour plus d’informations, consultez Limitations. - Dans la section du
resourcesmodèle, l’élémentnameutilise la fonction et transmet lastorageNamePrefixvaleur à la .namePrefix
Limites
La définition d’une fonction utilisateur est soumise à certaines restrictions :
- La fonction ne peut pas accéder aux variables.
- La fonction ne peut utiliser que des paramètres définis dans l’autre fonction. Lorsque vous utilisez la fonction parameters dans une fonction définie par l’utilisateur, vous êtes limité aux paramètres de cette fonction.
- La fonction ne peut pas appeler d’autres fonctions définies par l’utilisateur.
- La fonction ne peut pas utiliser la fonction reference ni aucune des fonctions list.
- Les paramètres de la fonction ne peuvent pas avoir de valeur par défaut.
Étapes suivantes
- Pour en savoir plus sur les propriétés disponibles pour les fonctions définies par l’utilisateur, consultez Comprendre la structure et la syntaxe des modèles ARM.
- Pour obtenir la liste des fonctions de modèle disponibles, consultez Fonctions de modèle ARM.