Funkcje zdefiniowane przez użytkownika w szablonie usługi ARM
W szablonie możesz utworzyć własne funkcje. Te funkcje są dostępne do użycia w szablonie. Funkcje zdefiniowane przez użytkownika są oddzielone od standardowych funkcji szablonu , które są automatycznie dostępne w szablonie. Utwórz własne funkcje, gdy masz skomplikowane wyrażenia, które są używane wielokrotnie w szablonie.
W tym artykule opisano sposób dodawania funkcji zdefiniowanych przez użytkownika w szablonie usługi Azure Resource Manager (szablon usługi ARM).
Definiowanie funkcji
Funkcje wymagają wartości przestrzeni nazw, aby uniknąć konfliktów nazewnictwa z funkcjami szablonu. 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 zawierający funkcję zdefiniowaną przez użytkownika, aby uzyskać unikatową nazwę konta magazynu. 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": "[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
}
}
]
}
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 funkcji. Aby uzyskać więcej informacji, zobacz Ograniczenia. - W sekcji szablonu
resources
element używa funkcji i przekazujestorageNamePrefix
wartość do funkcjinamePrefix
.name
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, masz ograniczenie do parametrów dla 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.
Następne 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 usługi ARM.