Delen via


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 van resources de functie en wordt de storageNamePrefix waarde doorgegeven aan de van de functie namePrefix.

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