Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Benutzerdefinierte Funktionen vereinfachen und wiederverwenden komplexe Ausdrücke in Ihren ARM-Vorlagen. Durch Kapselung von Logik in benutzerdefinierten Funktionen können Sie die Lesbarkeit, Wartung und Skalierbarkeit von Vorlagen verbessern, insbesondere, wenn die gleiche Logik an mehreren Stellen angezeigt wird. Diese Funktionen unterscheiden sich von den integrierten Vorlagenfunktionen , die immer verfügbar sind. Informationen zum Definieren benutzerdefinierter Funktionen in Bicep finden Sie unter Benutzerdefinierte Funktionen in Bicep.
Definieren der Funktion
Ihre Funktionen erfordern einen Namespacewert, um Namenskonflikte mit Vorlagenfunktionen zu vermeiden. Das folgende Beispiel zeigt eine Funktion, die einen eindeutigen Namen zurückgibt:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Verwenden der Funktion
Das folgende Beispiel zeigt eine Vorlage, die eine benutzerdefinierte Funktion enthält, um einen eindeutigen Namen für ein Speicherkonto abzurufen. Die Vorlage hat einen Parameter namens storageNamePrefix , der als Parameter an die Funktion übergeben wird.
{
"$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
}
}
]
}
Während der Bereitstellung wird der storageNamePrefix Parameter an die Funktion übergeben:
- Die Vorlage definiert einen Parameter mit dem Namen
storageNamePrefix. - Die Funktion verwendet
namePrefix, da Sie nur parameter verwenden können, die in der Funktion definiert sind. Weitere Informationen finden Sie unter Einschränkungen. - Im Abschnitt der Vorlage
resourcesverwendet dasnameElement die Funktion und übergibt denstorageNamePrefixWert an die FunktionnamePrefix.
Einschränkungen
Beim Definieren einer benutzerdefinierten Funktion gelten einige Einschränkungen:
- Die Funktion kann nicht auf Variablen zugreifen.
- Die Funktion kann nur Parameter verwenden, die in der Funktion definiert sind. Wenn Sie die Parameterfunktion in einer benutzerdefinierten Funktion verwenden, sind Sie auf die Parameter für diese Funktion beschränkt.
- Die Funktion kann keine anderen benutzerdefinierten Funktionen aufrufen.
- Die Funktion kann nicht die reference-Funktion oder eine der list-Funktionen verwenden.
- Für die Parameter der Funktion können keine Standardwerte verwendet werden.
Nächste Schritte
- Informationen zu den verfügbaren Eigenschaften für benutzerdefinierte Funktionen finden Sie unter Grundlegendes zur Struktur und Syntax von ARM-Vorlagen.
- Eine Liste der verfügbaren Vorlagenfunktionen finden Sie unter ARM-Vorlagenfunktionen.