Door de gebruiker gedefinieerde functies in ARM-sjabloon
In uw sjabloon kunt u uw eigen functies maken. Deze functies zijn beschikbaar voor gebruik in uw sjabloon. Door de gebruiker gedefinieerde functies staan los van de standaardsjabloonfuncties die automatisch beschikbaar zijn in uw sjabloon. Maak uw eigen functies wanneer u complexe expressies hebt die herhaaldelijk in uw sjabloon worden gebruikt.
In dit artikel wordt beschreven hoe u door de gebruiker gedefinieerde functies toevoegt aan uw Azure Resource Manager-sjabloon (ARM-sjabloon).
De functie definiƫren
Voor uw functies is een naamruimtewaarde vereist om naamconflicten met sjabloonfuncties te voorkomen. In het volgende voorbeeld ziet u een functie die een unieke naam retourneert:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
De functie gebruiken
In het volgende voorbeeld ziet u een sjabloon met een door de gebruiker gedefinieerde functie om een unieke naam voor een opslagaccount op te halen. De sjabloon heeft een parameter met de naam storageNamePrefix
die als parameter wordt doorgegeven aan de functie.
{
"$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
}
}
]
}
Tijdens de implementatie wordt de storageNamePrefix
parameter doorgegeven aan de functie:
- De sjabloon definieert een parameter met de naam
storageNamePrefix
. - De functie gebruikt
namePrefix
omdat u alleen parameters kunt gebruiken die in de functie zijn gedefinieerd. Zie Beperkingen voor meer informatie. - In de sectie van de sjabloon maakt het
name
-element gebruik vanresources
de functie en wordt destorageNamePrefix
waarde doorgegeven aan de van de functienamePrefix
.
Beperkingen
Bij het definiƫren van een gebruikersfunctie gelden enkele beperkingen:
- De functie heeft geen toegang tot variabelen.
- De functie kan alleen parameters gebruiken die zijn gedefinieerd in de functie. Wanneer u de functie parameters binnen een door de gebruiker gedefinieerde functie gebruikt, bent u beperkt tot de parameters voor die functie.
- De functie kan geen andere door de gebruiker gedefinieerde functies aanroepen.
- De functie kan de verwijzingsfunctie of een van de lijstfuncties niet gebruiken.
- Parameters voor de functie kunnen geen standaardwaarden hebben.
Volgende stappen
- Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor meer informatie over de beschikbare eigenschappen voor door de gebruiker gedefinieerde functies.
- Zie ARM-sjabloonfuncties voor een lijst met de beschikbare sjabloonfuncties.