Benutzerdefinierte Funktionen in ARM-Vorlagen
In Ihrer Vorlage können Sie Ihre eigenen Funktionen erstellen. Diese Funktionen stehen dann zur Verwendung in der Vorlage zur Verfügung. Benutzerdefinierte Funktionen sind von den standardmäßigen Vorlagenfunktionen getrennt, die automatisch in der Vorlage verfügbar sind. Erstellen Sie eigene Funktionen, wenn Sie über komplizierte Ausdrücke verfügen, die in Ihrer Vorlage wiederholt verwendet werden.
Dieser Artikel beschreibt, wie benutzerdefinierte Funktionen in einer Azure Resource Manager-Vorlage (ARM-Vorlage) hinzugefügt werden.
Definieren der Funktion
Für benutzerdefinierte Funktionen müssen Namespacewerte verwendet werden, um Namenskonflikte mit Vorlagenfunktionen zu vermeiden. Im folgenden Beispiel wird eine Funktion veranschaulicht, 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 weist einen Parameter namens storageNamePrefix
auf, 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": "[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
}
}
]
}
Während der Bereitstellung wird der Parameter storageNamePrefix
an die-Funktion übergeben:
- Die Vorlage definiert einen Parameter namens
storageNamePrefix
. - Die Funktion verwendet
namePrefix
, weil Sie nur Parameter verwenden können, die in der Funktion definiert sind. Weitere Informationen finden Sie unter Einschränkungen. - Im Abschnitt
resources
der Vorlage verwendet das-name
-Element die Funktion und übergibt denstorageNamePrefix
-Wert an dasnamePrefix
der Funktion.
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. Bei Verwendung der parameters-Funktion innerhalb einer benutzerdefinierten Funktion 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
- Weitere Informationen zu den verfügbaren Eigenschaften für benutzerdefinierte Funktionen finden Sie unter Verstehen der Struktur und Syntax von ARM-Vorlagen.
- Eine Liste der verfügbaren Funktionen in einer Vorlage finden Sie unter Funktionen von ARM-Vorlagen.