Aracılığıyla paylaş


ARM şablonunda kullanıcı tanımlı işlevler

Kullanıcı tanımlı işlevler, ARM şablonlarınızdaki karmaşık ifadeleri basitleştirmeye ve yeniden kullanmanıza yardımcı olur. Özel işlevlerdeki mantığı kapsülleyerek, şablon okunabilirliğini, sürdürülebilirliği ve ölçeklenebilirliği geliştirebilirsiniz; özellikle aynı mantık birden çok yerde göründüğünde. Bu işlevler, her zaman kullanılabilen yerleşik şablon işlevlerinden farklıdır. Bicep'te kullanıcı tanımlı işlevleri tanımlamak için bkz. Bicep'te kullanıcı tanımlı işlevler.

İşlevi tanımlama

İşlevleriniz, şablon işlevleriyle adlandırma çakışmalarını önlemek için bir ad alanı değeri gerektirir. Aşağıdaki örnekte benzersiz bir ad döndüren bir işlev gösterilmektedir:

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

Fonksiyonu kullan

Aşağıdaki örnekte, depolama hesabı için benzersiz bir ad almak için kullanıcı tanımlı bir işlev içeren bir şablon gösterilmektedir. Şablon, işleve parametre olarak geçirilen adlı storageNamePrefix bir parametreye sahiptir.

{
 "$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-06-01",
     "name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
     "location": "South Central US",
     "sku": {
       "name": "Standard_LRS"
     },
     "kind": "StorageV2",
     "properties": {
       "supportsHttpsTrafficOnly": true
     }
   }
 ]
}

Dağıtım sırasında storageNamePrefix parametresi işlevine geçirilir.

  • Şablon adlı storageNamePrefixbir parametre tanımlar.
  • Fonksiyonu namePrefix kullanır çünkü yalnızca fonksiyonda tanımlanan parametreleri kullanabilirsiniz. Daha fazla bilgi için bkz . Sınırlamalar.
  • Şablonun resources bölümünde name öğesi işlevini kullanır ve değerini işlevin storageNamePrefixöğesine geçirirnamePrefix.

Sınırlamalar

Kullanıcı işlevi tanımlarken bazı kısıtlamalar vardır:

  • İşlev değişkenlere erişemiyor.
  • İşlev yalnızca işlevde tanımlanan parametreleri kullanabilir. Kullanıcı tanımlı bir işlev içinde parameters işlevini kullandığınızda, bu işlevin parametreleriyle sınırlısınız demektir.
  • İşlev, kullanıcı tanımlı diğer işlevleri çağıramaz.
  • İşlev, başvuru işlevini veya liste işlevlerini kullanamaz.
  • İşlev parametreleri varsayılan değerlere sahip olamaz.

Sonraki Adımlar