Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As funções definidas pelo usuário ajudam a simplificar e reutilizar expressões complexas em seus modelos do ARM. Encapsulando a lógica em funções personalizadas, você pode melhorar a legibilidade, a manutenção e a escalabilidade do modelo, especialmente quando a mesma lógica aparece em vários lugares. Essas funções são distintas das funções de modelo internas que estão sempre disponíveis. Para definir funções definidas pelo usuário no Bicep, consulte as funções definidas pelo usuário no Bicep.
Definir a função
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))]"
}
}
}
}
],
Use 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": "[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
}
}
]
}
Durante a implantação, o storageNamePrefix parâmetro é passado para a função:
- O modelo define um parâmetro chamado
storageNamePrefix. - A função usa
namePrefixporque você só pode usar parâmetros definidos na função. Para obter mais informações, confira Limitações. - Na seção do
resourcesmodelo, onameelemento usa a função e passa ostorageNamePrefixvalor para 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. Ao usar a função de parâmetros em uma função definida pelo usuário, você 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, consulte Entender a estrutura e a sintaxe dos modelos do ARM.
- Para obter uma lista das funções de modelo disponíveis, consulte Funções de modelo do ARM.