Funzioni definite dall'utente nel modello di ARM
Nel modello è possibile creare funzioni personalizzate. Tali funzioni sono disponibili per usare il modello. Le funzioni definite dall'utente sono separate dalle funzioni standard del modello disponibili automaticamente nel modello. Creare funzioni personalizzate quando sono presenti espressioni complesse che vengono usate ripetutamente nel modello.
Questo articolo descrive come aggiungere funzioni definite dall'utente nel modello di Azure Resource Manager (modello di ARM).
Definire la funzione
Le funzioni richiedono che sia definito un valore dello spazio dei nomi per evitare conflitti di denominazione con le funzioni del modello. Nell'esempio seguente è illustrata una funzione che restituisce un nome univoco:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Usare la funzione
Nell'esempio seguente è illustrato un modello che include una funzione definita dall'utente per ottenere un nome univoco per un account di archiviazione. Il modello ha un parametro denominato storageNamePrefix
che viene passato come parametro alla funzione.
{
"$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 la distribuzione, il parametro storageNamePrefix
viene passato alla funzione:
- Il modello definisce un parametro denominato
storageNamePrefix
. - La funzione usa
namePrefix
perché è possibile usare solo i parametri definiti nella funzione. Per altre informazioni, vedere: Limitazioni. - Nella sezione
resources
del modello l'elementoname
usa la funzione e passa il valorestorageNamePrefix
alla funzionenamePrefix
.
Limiti
Quando si crea una funzione definita dall'utente, è necessario tenere presente alcune restrizioni:
- La funzione non può accedere alle variabili.
- La funzione può usare solo i parametri definiti in essa. Quando si usa la funzione parametri in una funzione definita dall'utente, è possibile usare solo i parametri per quella funzione.
- La funzione non può chiamare altre funzioni definite dall'utente.
- La funzione non può usare la funzione riferimento né una qualsiasi delle funzioni dielenco.
- I parametri della funzione non possono avere valori predefiniti.
Passaggi successivi
- Per informazioni sulle proprietà disponibili per le funzioni definite dall’utente, vedere Informazioni sulla struttura e sulla sintassi dei modelli di ARM.
- Per un elenco delle funzioni dei modelli disponibili, vedere Funzioni dei modelli di ARM.