Användardefinierade funktioner i ARM-mall
I mallen kan du skapa egna funktioner. De här funktionerna är tillgängliga för användning i mallen. Användardefinierade funktioner är separata från de standardmallfunktioner som automatiskt är tillgängliga i mallen. Skapa dina egna funktioner när du har komplicerade uttryck som används upprepade gånger i mallen.
Den här artikeln beskriver hur du lägger till användardefinierade funktioner i din Azure Resource Manager-mall (ARM-mall).
Definiera funktionen
Dina funktioner kräver ett namnområdesvärde för att undvika namngivningskonflikter med mallfunktioner. I följande exempel visas en funktion som returnerar ett unikt namn:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Använda funktionen
I följande exempel visas en mall som innehåller en användardefinierad funktion för att hämta ett unikt namn för ett lagringskonto. Mallen har en parameter med namnet storageNamePrefix
som skickas som en parameter till funktionen.
{
"$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
}
}
]
}
Under distributionen skickas parametern storageNamePrefix
till funktionen:
- Mallen definierar en parameter med namnet
storageNamePrefix
. - Funktionen använder
namePrefix
eftersom du bara kan använda parametrar som definierats i funktionen. Mer information finns i Begränsningar. - I mallavsnittet
resources
använder elementetname
funktionen och skickarstorageNamePrefix
värdet till funktionensnamePrefix
.
Begränsningar
När du definierar en användarfunktion finns det vissa begränsningar:
- Funktionen kan inte komma åt variabler.
- Funktionen kan bara använda parametrar som definieras i funktionen. När du använder parameterfunktionen i en användardefinierad funktion är du begränsad till parametrarna för den funktionen.
- Funktionen kan inte anropa andra användardefinierade funktioner.
- Funktionen kan inte använda referensfunktionen eller någon av listfunktionerna .
- Parametrar för funktionen kan inte ha standardvärden.
Nästa steg
- Mer information om tillgängliga egenskaper för användardefinierade funktioner finns i Förstå strukturen och syntaxen för ARM-mallar.
- En lista över tillgängliga mallfunktioner finns i ARM-mallfunktioner.