Partager via


Fonctions de comparaison pour les modèles ARM

Resource Manager fournit plusieurs fonctions pour effectuer des comparaisons dans votre modèle Azure Resource Manager (modèle ARM) :

Conseil

Nous recommandons Bicep, parce qu’il offre les mêmes fonctionnalités que les modèles ARM et que la syntaxe est plus facile d’utilisation. Pour plus d’informations, consultez l’opérateur logique coalesce et les opérateurs de comparaison.

coalesce

coalesce(arg1, arg2, arg3, ...)

Retourne la première valeur non null à partir des paramètres. Les chaînes vides, les tableaux vides et les objets vides ne sont pas null.

Dans Bicep, utilisez plutôt l’opérateur ??. Voir Fusionner ??.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui int, string, array ou object La première valeur dans laquelle rechercher des valeurs null.
plus d’arguments Non int, string, array ou object Plus de valeurs dans lesquelles rechercher des valeurs null.

Valeur retournée

Valeur des premiers paramètres non null. Il peut s’agir d’une chaîne, d’un entier, d’un tableau ou d’un objet. Null si tous les paramètres sont null.

Exemple

L’exemple de modèle suivant montre la sortie de différentes utilisations de la fonction coalesce.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "null1": null,
        "null2": null,
        "string": "default",
        "int": 1,
        "object": { "first": "default" },
        "array": [ 1 ]
      }
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').string)]"
    },
    "intOutput": {
      "type": "int",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').int)]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').object)]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').array)]"
    },
    "emptyOutput": {
      "type": "bool",
      "value": "[empty(coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
stringOutput String default
intOutput Int 1
objectOutput Object {"first": "default"}
arrayOutput Array [1]
emptyOutput Bool True

equals

equals(arg1, arg2)

Vérifie si deux valeurs sont identiques. La comparaison respecte la casse.

Dans Bicep, utilisez plutôt l’opérateur ==. Consultez Égal à ==.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui int, string, array ou object Première valeur dont l’égalité est à vérifier.
arg2 Oui int, string, array ou object Deuxième valeur dont l’égalité est à vérifier.

Valeur de retour

Retourne True si les valeurs sont égales ; sinon, renvoie False.

Remarques

La fonction equals est souvent utilisée avec l’élément condition pour tester si une ressource est déployée.

{
  "condition": "[equals(parameters('newOrExisting'),'new')]",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[variables('storageAccountName')]",
  "apiVersion": "2022-09-01",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[variables('storageAccountType')]"
  },
  "kind": "Storage",
  "properties": {}
}

Exemple

L’exemple suivant vérifie que les différents types de valeurs sont égaux. Toutes les valeurs par défaut retournent la valeur True.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 1
    },
    "firstString": {
      "type": "string",
      "defaultValue": "demo"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "Demo"
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "a", "b" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "a", "b" ]
    },
    "firstObject": {
      "type": "object",
      "defaultValue": { "a": "b" }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": { "a": "b" }
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[equals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[equals(parameters('firstString'), parameters('secondString'))]"
    },
    "checkArrays": {
      "type": "bool",
      "value": "[equals(parameters('firstArray'), parameters('secondArray'))]"
    },
    "checkObjects": {
      "type": "bool",
      "value": "[equals(parameters('firstObject'), parameters('secondObject'))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Value Remarque
checkInts Bool True
checkStrings Bool False Le résultat est false dû au fait que la comparaison respecte la casse.
checkArrays Bool True
checkObjects Bool True

L’exemple de modèle suivant utilise not avec equals.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
checkNotEquals Bool True

greater

greater(arg1, arg2)

Vérifie si la première valeur est supérieure à la deuxième valeur.

Dans Bicep, utilisez plutôt l’opérateur >. Consultez Supérieur à >.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui entier ou chaîne Première valeur pour la comparaison « supérieur à ».
arg2 Oui entier ou chaîne Seconde valeur pour la comparaison « supérieur à ».

Valeur de retour

Retourne True si la première valeur est supérieure à la seconde ; sinon, renvoie False.

Exemple

L’exemple suivant vérifie si une valeur est supérieure à l’autre.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[greater(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[greater(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
checkInts Bool False
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

Vérifie si la première valeur est supérieure ou égale à la deuxième valeur.

Dans Bicep, utilisez plutôt l’opérateur >=. Consultez Supérieur ou égal à >=.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui entier ou chaîne Première valeur pour la comparaison « supérieur ou égal à ».
arg2 Oui entier ou chaîne Seconde valeur pour la comparaison « supérieur ou égal à ».

Valeur de retour

Retourne True si la première valeur est supérieure ou égale à la seconde ; sinon, renvoie False.

Exemple

L’exemple suivant vérifie si une valeur est supérieure ou égale à l’autre.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[greaterOrEquals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[greaterOrEquals(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
checkInts Bool False
checkStrings Bool True

less

less(arg1, arg2)

Vérifie si la première valeur est inférieure à la deuxième valeur.

Dans Bicep, utilisez plutôt l’opérateur <. Consultez Inférieur à <.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui entier ou chaîne Première valeur pour la comparaison « inférieur à ».
arg2 Oui entier ou chaîne Deuxième valeur pour la comparaison « inférieur à ».

Valeur de retour

Retourne True si la première valeur est inférieure à la seconde ; sinon, renvoie False.

Exemple

L’exemple suivant vérifie si une valeur est inférieure à l’autre.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[less(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[less(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
checkInts Bool True
checkStrings Bool False

lessOrEquals

lessOrEquals(arg1, arg2)

Vérifie si la première valeur est inférieure ou égale à la deuxième valeur.

Dans Bicep, utilisez plutôt l’opérateur <=. Consultez Inférieur ou égal à <=.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui entier ou chaîne Première valeur pour la comparaison « inférieur à ».
arg2 Oui entier ou chaîne Première valeur pour la comparaison « inférieur ou égal à ».

Valeur de retour

Retourne True si la première valeur est inférieure ou égale à la seconde ; sinon, renvoie False.

Exemple

L’exemple suivant vérifie si une valeur est inférieure ou égale à l’autre.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[lessOrEquals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[lessOrEquals(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
checkInts Bool True
checkStrings Bool False

Étapes suivantes