Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Användardefinierade funktioner förenklar och återanvänder komplexa uttryck i ARM-mallar. Genom att kapsla in logik i anpassade funktioner kan du förbättra mallens läsbarhet, underhåll och skalbarhet, särskilt när samma logik visas på flera platser. Dessa funktioner skiljer sig från de inbyggda mallfunktioner som alltid är tillgängliga. Information om hur du definierar användardefinierade funktioner i Bicep finns i Användardefinierade funktioner i Bicep.
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": "[format('{0}{1}', toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-01-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
namePrefixeftersom du bara kan använda parametrar som definierats i funktionen. Mer information finns i Begränsningar. - I mallens
resourcesavsnitt använder elementetnamefunktionen och skickarstorageNamePrefixvä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.