Funzioni definite dall'utente nel modello di Resource Manager
Nel modello è possibile creare funzioni personalizzate. Tali funzioni sono disponibili per usare il modello. Le funzioni definite dall'utente sono separate dalle funzioni modello standard disponibili automaticamente all'interno del modello. Creare le proprie funzioni quando sono presenti espressioni complesse usate ripetutamente nel modello.
Questo articolo descrive come aggiungere funzioni definite dall'utente nel modello di Azure Resource Manager (modello 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 viene 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 viene 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
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 storageNamePrefix
parametro 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 del
resources
modello l'elementoname
usa la funzione e passa ilstorageNamePrefix
valore anamePrefix
.
Limitazioni
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 dei parametri all'interno di una funzione definita dall'utente, si è limitati ai parametri per tale funzione.
- La funzione non può chiamare altre funzioni definite dall'utente.
- La funzione non può usare la funzione di riferimento o una qualsiasi delle funzioni di elenco .
- I parametri della funzione non possono avere valori predefiniti.
Passaggi successivi
- Per informazioni sulle proprietà disponibili per le funzioni definite dall'utente, vedere Comprendere la struttura e la sintassi dei modelli di Resource Manager.
- Per un elenco delle funzioni modello disponibili, vedere Funzioni modello di Resource Manager.