Felhasználó által definiált függvények AZ ARM-sablonban

A sablonon belül létrehozhatja saját függvényeit. Ezek a függvények a sablonban használhatók. A felhasználó által definiált függvények elkülönülnek a sablonban automatikusan elérhető szabványos sablonfüggvényektől . Hozzon létre saját függvényeket, ha bonyolult kifejezésekkel rendelkezik, amelyeket a sablonban többször is használ.

Ez a cikk bemutatja, hogyan vehet fel felhasználó által definiált függvényeket az Azure Resource Manager-sablonba (ARM-sablon).

A függvény definiálása

A függvényeknek névtérértékre van szükségük a sablonfüggvényekkel való elnevezési ütközések elkerülése érdekében. Az alábbi példa egy függvényt mutat be, amely egyedi nevet ad vissza:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

A függvény használata

Az alábbi példa egy felhasználó által definiált függvényt tartalmazó sablont mutat be egy tárfiók egyedi nevének lekéréséhez. A sablon rendelkezik egy nevű paraméterrel storageNamePrefix , amelyet paraméterként ad át a függvénynek.

{
 "$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
     }
   }
 ]
}

Az üzembe helyezés során a storageNamePrefix paraméter a függvénynek lesz átadva:

  • A sablon egy nevű storageNamePrefixparamétert definiál.
  • A függvény azért használatos namePrefix , mert csak a függvényben definiált paramétereket használhatja. További információ: Korlátozások.
  • A sablon szakaszában resources az name elem a függvényt használja, és átadja az storageNamePrefix értéket a függvénynek namePrefix.

Korlátozások

Felhasználói függvény definiálásakor bizonyos korlátozások vannak érvényben:

  • A függvény nem fér hozzá a változókhoz.
  • A függvény csak a függvényben definiált paramétereket használhatja. Ha a paraméterfüggvényt egy felhasználó által definiált függvényben használja, az adott függvény paramétereire korlátozódik.
  • A függvény nem tud más felhasználó által definiált függvényeket meghívni.
  • A függvény nem használhatja a referenciafüggvényt vagy a listafüggvényeket.
  • A függvény paraméterei nem tartalmazhatnak alapértelmezett értékeket.

Következő lépések