Funções de comparação para modelos do ARM
O Resource Manager oferece diversas funções para fazer comparações no modelo do ARM (Azure Resource Manager):
Dica
Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, confira unir operador lógico e comparação de operadores.
coalesce
coalesce(arg1, arg2, arg3, ...)
Retorna o primeiro valor não nulo dos parâmetros. Cadeias de caracteres vazias, matrizes vazias e objetos vazios não são nulos.
No Bicep, use o operador ??
. Consulte Coalesce ??.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int, string, array ou object | O primeiro valor para testar se é nulo. |
mais argumentos | Não | int, string, array ou object | Valores adicionais para testar se são nulos. |
Valor retornado
O valor dos primeiros parâmetros não nulos, que pode ser uma cadeia de caracteres, inteiro, matriz ou objeto. Null se todos os parâmetros forem nulos.
Exemplo
O modelo de exemplo a seguir mostra a saída de diferentes usos de 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))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor |
---|---|---|
stringOutput | String | padrão |
intOutput | int | 1 |
objectOutput | Objeto | {"first": "default"} |
arrayOutput | Array | [1] |
emptyOutput | Bool | True |
equals
equals(arg1, arg2)
Verifica se dois valores são idênticos. A comparação diferencia maiúsculas de minúsculas.
No Bicep, use o operador ==
. Consulte Equals = =.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int, string, array ou object | O primeiro valor para verificar a igualdade. |
arg2 | Sim | int, string, array ou object | O segundo valor para verificar a igualdade. |
Valor retornado
Retorna True se os valores são iguais; caso contrário, False.
Comentários
A função equals é frequentemente usada com o elemento condition
para testar se um recurso está implantado.
{
"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": {}
}
Exemplo
O modelo de exemplo a seguir verifica os diferentes tipos de valores para igualdade. Todos os valores padrão retornam 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'))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor | Observação |
---|---|---|---|
checkInts | Bool | True | |
checkStrings | Bool | Falso | O resultado é false porque a comparação diferencia maiúsculas de minúsculas. |
checkArrays | Bool | True | |
checkObjects | Bool | True |
O modelo de exemplo a seguir usa not com 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))]"
}
}
}
O resultado do exemplo anterior é:
Nome | Tipo | Valor |
---|---|---|
checkNotEquals | Bool | True |
greater
greater(arg1, arg2)
Verifica se o primeiro valor é maior que o segundo valor.
No Bicep, use o operador >
. Consulte Maior que >.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int ou string | O primeiro valor da comparação de maior que. |
arg2 | Sim | int ou string | O segundo valor da comparação de maior que. |
Valor retornado
Retorna True se o primeiro valor é maior que o segundo valor; caso contrário, False.
Exemplo
O modelo de exemplo a seguir verifica se um valor é maior que o outro.
{
"$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'))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor |
---|---|---|
checkInts | Bool | Falso |
checkStrings | Bool | True |
greaterOrEquals
greaterOrEquals(arg1, arg2)
Verifica se o primeiro valor é maior que ou igual ao segundo valor.
No Bicep, use o operador >=
. Consulte Maior que ou igual a >=.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int ou string | O primeiro valor da comparação de maior que ou igual a. |
arg2 | Sim | int ou string | O segundo valor da comparação de maior que ou igual a. |
Valor retornado
Retorna True se o primeiro valor é maior que ou igual ao segundo valor; caso contrário, False.
Exemplo
O modelo de exemplo a seguir verifica se um valor é maior ou igual ao outro.
{
"$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'))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor |
---|---|---|
checkInts | Bool | Falso |
checkStrings | Bool | True |
less
less(arg1, arg2)
Verifica se o primeiro valor é menor que o segundo valor.
No Bicep, use o operador <
. Consulte Menor que <.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int ou string | O primeiro valor da comparação de menor que. |
arg2 | Sim | int ou string | O segundo valor da comparação de menor que. |
Valor retornado
Retorna True se o primeiro valor é menor que o segundo valor; caso contrário, False.
Exemplo
O modelo de exemplo a seguir verifica se um valor é menor que o outro.
{
"$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'))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor |
---|---|---|
checkInts | Bool | True |
checkStrings | Bool | Falso |
lessOrEquals
lessOrEquals(arg1, arg2)
Verifica se o primeiro valor é menor que ou igual ao segundo valor.
No Bicep, use o operador <=
. Consulte Menor que ou igual a <=.
Parâmetros
Parâmetro | Obrigatório | Type | Descrição |
---|---|---|---|
arg1 | Sim | int ou string | O primeiro valor da comparação de menor que ou igual a. |
arg2 | Sim | int ou string | O segundo valor da comparação de menor que ou igual a. |
Valor retornado
Retorna True se o primeiro valor é menor que ou igual ao segundo valor; caso contrário, False.
Exemplo
O modelo de exemplo a seguir verifica se um valor é menor ou igual ao outro.
{
"$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'))]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | Valor |
---|---|---|
checkInts | Bool | True |
checkStrings | Bool | Falso |
Próximas etapas
- Para obter uma descrição das seções de um modelo do ARM, confira Entender a estrutura e a sintaxe dos modelos do ARM.