Funções definidas pelo utilizador no modelo do ARM
No seu modelo, pode criar as suas próprias funções. Estas funções estão disponíveis para utilização no seu modelo. As funções definidas pelo utilizador são separadas das funções de modelo padrão que estão automaticamente disponíveis no seu modelo. Crie as suas próprias funções quando tiver expressões complicadas que são utilizadas repetidamente no seu modelo.
Este artigo descreve como adicionar funções definidas pelo utilizador no modelo de Resource Manager do Azure (modelo do ARM).
Definir a função
As suas funções requerem um valor de espaço de nomes para evitar conflitos de nomenclatura com funções de modelo. O exemplo seguinte mostra uma função que devolve um nome exclusivo:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Utilizar a função
O exemplo seguinte mostra um modelo que inclui uma função definida pelo utilizador para obter um nome exclusivo para uma conta de armazenamento. O modelo tem um parâmetro com o nome storageNamePrefix
que é transmitido como um parâmetro para a função.
{
"$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": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
"location": "South Central US",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Durante a implementação, o storageNamePrefix
parâmetro é transmitido para a função:
- O modelo define um parâmetro com o nome
storageNamePrefix
. - A função é utilizada
namePrefix
porque só pode utilizar parâmetros definidos na função. Para obter mais informações, veja Limitações. - Na secção do
resources
modelo, oname
elemento utiliza a função e transmite ostorageNamePrefix
valor para .namePrefix
Limitações
Ao definir uma função de utilizador, existem algumas restrições:
- A função não consegue aceder a variáveis.
- A função só pode utilizar parâmetros definidos na função. Quando utiliza a função parâmetros numa função definida pelo utilizador, está restrito aos parâmetros dessa função.
- A função não pode chamar outras funções definidas pelo utilizador.
- A função não pode utilizar a função de referência ou qualquer uma das funções de lista .
- Os parâmetros da função não podem ter valores predefinidos.
Passos seguintes
- Para saber mais sobre as propriedades disponíveis para funções definidas pelo utilizador, veja Compreender a estrutura e a sintaxe dos modelos do ARM.
- Para obter uma lista das funções de modelo disponíveis, veja Funções de modelo do ARM.