Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Dentro de la plantilla, puede crear sus propias funciones. Estas funciones están disponibles para su uso en la plantilla. Las funciones definidas por el usuario son independientes de las funciones de plantilla estándar que están disponibles automáticamente dentro de la plantilla. Cree sus propias funciones cuando tenga expresiones complicadas que se usan repetidamente en la plantilla.
En este artículo se describe cómo agregar funciones definidas por el usuario en la plantilla de Azure Resource Manager (plantilla de ARM).
Definición de la función
Sus funciones requieren un valor de espacio de nombres para evitar conflictos de nombres con funciones de plantilla. En el ejemplo siguiente se muestra una función que devuelve un nombre único:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
Uso de la función
En el ejemplo siguiente se muestra una plantilla que incluye una función definida por el usuario para obtener un nombre único para una cuenta de almacenamiento. La plantilla tiene un parámetro denominado storageNamePrefix
que se pasa como parámetro a la función.
{
"$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
}
}
]
}
Durante la implementación, el storageNamePrefix
parámetro se pasa a la función :
- La plantilla define un parámetro denominado
storageNamePrefix
. - La función usa
namePrefix
porque solo puede usar parámetros definidos en la función. Para más información, consulte las limitaciones. - En la sección
resources
de la plantilla, el elementoname
usa la función y pasa el valorstorageNamePrefix
a elnamePrefix
de la función.
Limitaciones
Al definir una función de usuario, hay algunas restricciones:
- La función no puede acceder a las variables.
- La función solo puede usar los parámetros que se definen en la función. Cuando se usa la función de parámetros dentro de una función definida por el usuario, está restringido a los parámetros de esa función.
- La función no puede llamar a otras funciones definidas por el usuario.
- La función no puede usar la función reference ni ninguna de las funciones list.
- Los parámetros de la función no pueden tener valores predeterminados.
Pasos siguientes
- Para obtener información sobre las propiedades disponibles para las funciones definidas por el usuario, consulte Descripción de la estructura y la sintaxis de las plantillas de ARM.
- Para obtener una lista de las funciones de plantilla disponibles, consulte Funciones de plantilla de ARM.