Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcje zdefiniowane przez użytkownika upraszczają proces ponownego używania złożonych wyrażeń w szablonach ARM. Hermetyzując logikę w funkcjach niestandardowych, można zwiększyć czytelność szablonu, łatwość konserwacji i skalowalność, szczególnie gdy ta sama logika pojawia się w wielu miejscach. Te funkcje różnią się od wbudowanych funkcji szablonu , które są zawsze dostępne. Aby zdefiniować funkcje zdefiniowane przez użytkownika w aplikacji Bicep, zobacz Funkcje zdefiniowane przez użytkownika w Bicep.
Definiowanie funkcji
Funkcje wymagają wartości przestrzeni nazw, aby uniknąć konfliktów nazewnictwa z szablonowymi funkcjami. W poniższym przykładzie przedstawiono funkcję zwracającą unikatową nazwę:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Korzystanie z funkcji
W poniższym przykładzie przedstawiono szablon, który zawiera funkcję zdefiniowaną przez użytkownika do uzyskania unikalnej nazwy konta pamięci masowej. Szablon ma parametr o nazwie storageNamePrefix , który jest przekazywany jako parametr do funkcji.
{
"$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
}
}
]
}
Podczas wdrażania storageNamePrefix parametr jest przekazywany do funkcji:
- Szablon definiuje parametr o nazwie
storageNamePrefix. - Funkcja używa
namePrefix, ponieważ można używać tylko parametrów zdefiniowanych w niej. Aby uzyskać więcej informacji, zobacz Ograniczenia. - W sekcji
resourcesszablonu elementnameużywa funkcji i przekazuje wartośćstorageNamePrefixdonamePrefixfunkcji.
Ograniczenia
Podczas definiowania funkcji użytkownika istnieją pewne ograniczenia:
- Funkcja nie może uzyskać dostępu do zmiennych.
- Funkcja może używać tylko parametrów zdefiniowanych w funkcji. Jeśli używasz funkcji parameters w funkcji zdefiniowanej przez użytkownika, ograniczasz się do parametrów tej funkcji.
- Funkcja nie może wywoływać innych funkcji zdefiniowanych przez użytkownika.
- Funkcja nie może używać funkcji reference ani żadnej z funkcji listy .
- Parametry funkcji nie mogą mieć wartości domyślnych.
Dalsze kroki
- Aby dowiedzieć się więcej o dostępnych właściwościach funkcji zdefiniowanych przez użytkownika, zobacz Omówienie struktury i składni szablonów usługi ARM.
- Aby uzyskać listę dostępnych funkcji szablonu, zobacz Funkcje szablonu ARM.