Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As funções definidas pelo usuário ajudam a simplificar e reutilizar expressões complexas em seus modelos ARM. Ao encapsular a lógica em funções personalizadas, pode melhorar a legibilidade, a manutenção e a escalabilidade do modelo — especialmente quando a mesma lógica aparece em vários locais. 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 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, consulte Limitações. - Na seção do modelo
resources, o elementonameutiliza a função e passa o valorstorageNamePrefixpara onamePrefixda função.
Limitações
Ao definir uma função de usuário, existem algumas restrições:
- A função não pode acessar variáveis.
- A função só pode usar parâmetros que são definidos na função. Quando você usa a função de parâmetros dentro de uma função definida pelo usuário, você está restrito aos parâmetros para essa 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óximos passos
- Para saber mais sobre as propriedades disponíveis para funções definidas pelo usuário, consulte Compreender a estrutura e a sintaxe dos modelos ARM.
- Para obter uma lista das funções de modelo disponíveis, consulte Funções de modelo ARM.