Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi yang ditentukan pengguna membantu menyederhanakan dan menggunakan kembali ekspresi kompleks di templat ARM Anda. Dengan merangkum logika dalam fungsi kustom, Anda dapat meningkatkan keterbacaan templat, keberlanjutan, dan skalabilitas-terutama ketika logika yang sama muncul di beberapa tempat. Fungsi-fungsi ini berbeda dari fungsi templat bawaan yang selalu tersedia. Untuk menentukan fungsi yang ditentukan pengguna di Bicep, lihat Fungsi yang ditentukan pengguna di Bicep.
Tentukan fungsi
Fungsi Anda memerlukan nilai namespace untuk menghindari konflik penamaan dengan fungsi template. Contoh berikut menunjukkan fungsi yang mengembalikan nama unik:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Gunakan fungsi
Contoh berikut menunjukkan templat yang menyertakan fungsi yang ditentukan pengguna untuk mendapatkan nama unik untuk akun penyimpanan. Templat memiliki parameter bernama storageNamePrefix yang diteruskan sebagai parameter ke fungsi.
{
"$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
}
}
]
}
Selama penyebaran, storageNamePrefix parameter diteruskan ke fungsi:
- Templat mendefinisikan parameter bernama
storageNamePrefix. - Fungsi ini digunakan
namePrefixkarena Anda hanya dapat menggunakan parameter yang ditentukan dalam fungsi. Untuk informasi selengkapnya, lihat Batasan. - Di bagian templat
resources, elemen menggunakannamefungsi dan meneruskanstorageNamePrefixnilai ke fungsinamePrefix.
Keterbatasan
Saat mendefinisikan fungsi pengguna, ada beberapa batasan:
- Fungsi tidak dapat mengakses variabel.
- Fungsi tersebut hanya dapat menggunakan parameter yang ditentukan dalam fungsi. Saat Anda menggunakan fungsi parameter dalam fungsi yang ditentukan pengguna, Anda dibatasi pada parameter untuk fungsi tersebut.
- Fungsi ini tidak dapat memanggil fungsi lain yang ditentukan pengguna.
- Fungsi ini tidak dapat menggunakan fungsi referensi atau fungsi daftar apapun.
- Parameter untuk fungsi tidak dapat memiliki nilai default.
Langkah selanjutnya
- Untuk mempelajari tentang properti yang tersedia untuk fungsi yang ditentukan pengguna, lihat Memahami struktur dan sintaks templat ARM.
- Untuk daftar fungsi templat yang tersedia, lihat fungsi templat ARM.