Uživatelem definované funkce v šabloně ARM
V rámci šablony můžete vytvářet vlastní funkce. Tyto funkce jsou k dispozici pro použití v šabloně. Uživatelem definované funkce jsou oddělené od standardních funkcí šablon , které jsou automaticky dostupné v rámci šablony. Pokud máte složité výrazy, které se opakovaně používají v šabloně, můžete vytvářet vlastní funkce.
Tento článek popisuje, jak přidat uživatelem definované funkce do šablony Azure Resource Manager (šablona ARM).
Definování funkce
Vaše funkce vyžadují hodnotu oboru názvů, aby nedocházelo ke konfliktům názvů s funkcemi šablony. Následující příklad ukazuje funkci, která vrací jedinečný název:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Použití funkce
Následující příklad ukazuje šablonu, která obsahuje uživatelem definovanou funkci pro získání jedinečného názvu účtu úložiště. Šablona má parametr s názvem storageNamePrefix
, který se funkci předá jako parametr.
{
"$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
}
}
]
}
Během nasazení se storageNamePrefix
do funkce předá parametr:
- Šablona definuje parametr s názvem
storageNamePrefix
. - Funkce používá
namePrefix
, protože můžete použít pouze parametry definované ve funkci. Další informace najdete v tématu Omezení. - V oddílu šablony
resources
element použije funkci a předástorageNamePrefix
hodnotu do objektunamePrefix
.name
Omezení
Při definování uživatelské funkce platí určitá omezení:
- Funkce nemá přístup k proměnným.
- Funkce může používat pouze parametry, které jsou ve funkci definované. Když použijete funkci parametrů v rámci uživatelem definované funkce, budete omezeni na parametry pro tuto funkci.
- Funkce nemůže volat jiné uživatelem definované funkce.
- Funkce nemůže použít referenční funkci ani žádnou z funkcí seznamu .
- Parametry funkce nemohou mít výchozí hodnoty.
Další kroky
- Informace o dostupných vlastnostech uživatelem definovaných funkcí najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.
- Seznam dostupných funkcí šablon najdete v tématu Funkce šablony ARM.