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

Şablonunuzun içinde kendi işlevlerinizi oluşturabilirsiniz. Bu işlevler şablonunuzda kullanılabilir. Kullanıcı tanımlı işlevler, şablonunuzun içinde otomatik olarak kullanılabilen standart şablon işlevlerinden ayrıdır. Şablonunuzda tekrar tekrar kullanılan karmaşık ifadeleriniz olduğunda kendi işlevlerinizi oluşturun.

Bu makalede, Azure Resource Manager şablonunuza (ARM şablonu) kullanıcı tanımlı işlevlerin nasıl ekleneceği açıklanır.

İş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))]"
        }
      }
    }
  }
],

işlevini kullanma

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": "[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
     }
   }
 ]
}

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

  • Şablon adlı storageNamePrefixbir parametre tanımlar.
  • işlevini kullanır namePrefix çünkü yalnızca işlevde 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 namePrefixöğesine geçirirstorageNamePrefix.

Sınırlamalar

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

  • İşlev değişkenlere erişemiyor.
  • işlevi 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, diğer kullanıcı tanımlı işlevleri çağıramaz.
  • İşlev , başvuru işlevini veya liste işlevlerinden herhangi birini kullanamaz.
  • İşlev parametrelerinin varsayılan değerleri olamaz.

Sonraki adımlar