Funções definidas pelo usuário no modelo do ARM
Dentro de seu modelo, você pode criar suas próprias funções. Essas funções estão disponíveis para uso em seu modelo. As funções definidas pelo usuário são separadas das funções de modelo padrão que estão automaticamente disponíveis no seu modelo. Crie suas próprias funções quando tiver expressões complicadas utilizadas repetidamente em seu modelo.
Este artigo descreve como adicionar funções definidas pelo usuário no modelo do Azure Resource Manager (modelo do ARM).
Definir a função
As suas funções exigem um valor de namespace para evitar conflitos de nomenclatura com funções de modelo. O exemplo a seguir mostra uma função que retorna um nome exclusivo:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Usar a função
O exemplo a seguir mostra um modelo que inclui uma função definida pelo usuário para obter um nome exclusivo para uma conta de armazenamento. O modelo tem um parâmetro chamado storageNamePrefix
que é passado 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 implantação, o parâmetro storageNamePrefix
é passado para a função:
- O modelo define um parâmetro chamado
storageNamePrefix
. - A função usa
namePrefix
porque você só pode usar parâmetros definidos na função. Para obter mais informações, confira Limitações. - Na seção do modelo
resources
, o elementoname
usa a função e passa o valorstorageNamePrefix
para a funçãonamePrefix
.
Limitações
Ao definir uma função de usuário, há algumas restrições:
- A função não pode acessar variáveis.
- A função só pode usar os parâmetros que são definidos na função. Quando você usa a função parameters dentro de uma função definida pelo usuário, fica restrito aos parâmetros dessa função.
- A função não pode chamar outras funções definidas pelo usuário.
- A função não pode usar a função de referência ou qualquer uma das funções de lista.
- Os parâmetros para a função não podem ter valores padrão.
Próximas etapas
- Para saber mais sobre as propriedades disponíveis para funções definidas pelo usuário, veja Entender a estrutura e a sintaxe de modelos do ARM.
- Para obter uma lista das funções de modelo disponíveis, veja Funções de modelos do ARM.