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.
Dalam templat Anda, Anda dapat membuat fungsi Anda sendiri. Fungsi-fungsi ini tersedia untuk digunakan dalam templat Anda. Fungsi yang ditentukan pengguna terpisah dari fungsi templat standar yang tersedia secara otomatis dalam templat Anda. Buat fungsi Anda sendiri ketika Anda memiliki ekspresi rumit yang digunakan berulang kali dalam templat Anda.
Artikel ini menjelaskan cara menambahkan fungsi yang ditentukan pengguna dalam templat Azure Resource Manager (templat ARM) Anda.
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": "[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
}
}
]
}
Selama penyebaran, storageNamePrefix
parameter diteruskan ke fungsi:
- Templat mendefinisikan parameter bernama
storageNamePrefix
. - Fungsi ini digunakan
namePrefix
karena Anda hanya dapat menggunakan parameter yang ditentukan dalam fungsi. Untuk informasi selengkapnya, lihat Batasan. - Di bagian templat
resources
, elemen menggunakanname
fungsi dan meneruskanstorageNamePrefix
nilai 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.