Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Uživatelem definované funkce pomáhají zjednodušit a opakovaně používat složité výrazy v šablonách ARM. Zapouzdřením logiky ve vlastních funkcích můžete zlepšit čitelnost šablon, udržovatelnost a škálovatelnost, a to zejména v případě, že se stejná logika vyskytuje na více místech. Tyto funkce se liší od předdefinovaných funkcí šablon , které jsou vždy k dispozici. Pokud chcete definovat uživatelem definované funkce v Bicep, přečtěte si téma Uživatelem definované funkce v Bicep.
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 předá funkci 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": "[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
}
}
]
}
Během nasazení storageNamePrefix se parametr předá funkci:
- Š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 části šablony
resourcespoužívá elementnamefunkci a předává hodnotustorageNamePrefixdonamePrefixtéto funkce.
Omezení
Při definování uživatelské funkce existují určitá omezení:
- Funkce nemá přístup k proměnným.
- Funkce může používat pouze parametry definované ve funkci. Pokud použijete funkci parametrů v rámci uživatelem definované funkce, budete omezeni na parametry této funkce.
- Funkce nemůže volat jiné uživatelem definované funkce.
- Funkce nemůže použít referenční funkci ani žádnou funkci seznamu .
- Parametry pro funkci nemůžou mít výchozí hodnoty.
Další kroky
- Další informace o dostupných vlastnostech pro uživatelem definované funkce najdete v tématu Vysvětlení struktury a syntaxe šablon ARM.
- Seznam dostupných funkcí šablon najdete v tématu Funkce šablony ARM.