Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
namePrefixkullanır çünkü yalnızca fonksiyonda tanımlanan parametreleri kullanabilirsiniz. Daha fazla bilgi için bkz . Sınırlamalar. - Şablonun
resourcesbölümündenameöğesi işlevini kullanır ve değerini işlevinstorageNamePrefixöğ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
- Kullanıcı tanımlı işlevlerin kullanılabilir özellikleri hakkında bilgi edinmek için bkz. ARM şablonlarının yapısını ve söz dizimini anlama.
- Kullanılabilir şablon işlevlerinin listesi için bkz. ARM şablonu işlevleri.