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ı
storageNamePrefix
bir 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ündename
öğesi işlevini kullanır ve değerini işlevinnamePrefix
öğ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
- 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.