Funciones para usar con Azure Blueprints

Importante

El 11 de julio de 2026, Blueprints (versión preliminar) quedará en desuso. Migre las definiciones y asignaciones de planos técnicos existentes a Especificaciones de plantilla y Pilas de implementación. Los artefactos de plano técnico se convertirán en plantillas JSON de ARM o archivos de Bicep que se usan para definir pilas de implementación. Para obtener información sobre cómo crear un artefacto como un recurso de ARM, consulte:

Azure Blueprints proporciona funciones que aportan dinamismo a la definición de los planos técnicos. Estas funciones se usan con las definiciones y los artefactos de los planos técnicos. Un artefacto de la plantilla de Azure Resource Manager (plantilla de ARM) admite el uso completo de las funciones de Resource Manager, además de obtener un valor dinámico mediante un parámetro de plano técnico.

Se admiten las siguientes funciones:

artifacts

artifacts(artifactName)

Devuelve un objeto de propiedades rellenadas con los resultados de los artefactos de ese plano técnico.

Nota

No se puede usar la función artifacts() desde dentro de una plantilla de ARM. La función solo se puede usar en el JSON de definición de plano técnico o en el JSON del artefacto al administrar el plano técnico con Azure PowerShell o la API REST como parte de planos técnicos como código.

Parámetros

Parámetro Obligatorio Tipo Descripción
artifactName string El nombre de un artefacto de plano técnico.

Valor devuelto

Un objeto de propiedades de salida. Las propiedades outputs dependen del tipo de artefacto de plano técnico al que se hace referencia. Todos los tipos tienen este formato:

{
  "outputs": {collectionOfOutputProperties}
}

Artefacto de la asignación de directiva

{
    "outputs": {
        "policyAssignmentId": "{resourceId-of-policy-assignment}",
        "policyAssignmentName": "{name-of-policy-assignment}",
        "policyDefinitionId": "{resourceId-of-policy-definition}",
    }
}

Artefacto de plantilla de ARM

Las propiedades outputs del objeto devuelto se definen en la plantilla de ARM y las devuelve la implementación.

Artefacto de asignación de roles

{
    "outputs": {
        "roleAssignmentId": "{resourceId-of-role-assignment}",
        "roleDefinitionId": "{resourceId-of-role-definition}",
        "principalId": "{principalId-role-is-being-assigned-to}",
    }
}

Ejemplo

Un artefacto de plantilla de ARM con el identificador myTemplateArtifact que contenga la siguiente propiedad de salida de ejemplo:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    ...
    "outputs": {
        "myArray": {
            "type": "array",
            "value": ["first", "second"]
        },
        "myString": {
            "type": "string",
            "value": "my string value"
        },
        "myObject": {
            "type": "object",
            "value": {
                "myProperty": "my value",
                "anotherProperty": true
            }
        }
    }
}

Algunos ejemplos de recuperación de datos de la plantilla myTemplateArtifact son los siguientes:

Expression Tipo Value
[artifacts("myTemplateArtifact").outputs.myArray] Array ["first", "second"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] String "first"
[artifacts("myTemplateArtifact").outputs.myString] String "my string value"
[artifacts("myTemplateArtifact").outputs.myObject] Object { "myproperty": "my value", "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] String "my value"
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Bool True

concat

concat(string1, string2, string3, ...)

Combina varios valores de cadena y devuelve la cadena concatenada.

Parámetros

Parámetro Obligatorio Tipo Descripción
string1 string El primer valor para la concatenación.
argumentos adicionales No string Valores adicionales en orden secuencial para la concatenación

Valor devuelto

Una cadena de valores concatenados.

Observaciones

La función Azure Blueprints difiere de la función de plantilla de ARM en que solo admite cadenas.

Ejemplo

concat(parameters('organizationName'), '-vm')

parámetros

parameters(parameterName)

Devuelve un valor de parámetro de plano técnico. El nombre del parámetro especificado debe estar definido en la definición o en los artefactos del plano técnico.

Parámetros

Parámetro Obligatorio Tipo Descripción
parameterName string El nombre del parámetro que se va a devolver.

Valor devuelto

El valor del parámetro del plano técnico o del artefacto de plano técnico especificado.

Observaciones

La función Azure Blueprints difiere de la función de la plantilla de ARM en que solo admite parámetros de plano técnico.

Ejemplo

Defina el parámetro principalIds en la definición del plano técnico:

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "parameters": {
            "principalIds": {
                "type": "array",
                "metadata": {
                    "displayName": "Principal IDs",
                    "description": "This is a blueprint parameter that any artifact can reference. We'll display these descriptions for you in the info bubble. Supply principal IDs for the users,groups, or service principals for the Azure role assignment.",
                    "strongType": "PrincipalId"
                }
            }
        },
        ...
    }
}

Después use principalIds como argumento para parameters() en un artefacto de plano técnico:

{
    "type": "Microsoft.Blueprint/blueprints/artifacts",
    "kind": "roleAssignment",
    ...
    "properties": {
        "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
        "principalIds": "[parameters('principalIds')]",
        ...
    }
}

resourceGroup

resourceGroup()

Devuelve un objeto que representa el grupo de recursos actual.

Valor devuelto

El objeto devuelto está en el formato siguiente:

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Observaciones

La función Azure Blueprints difiere de la función de la plantilla de ARM. La función resourceGroup() no se puede usar en un artefacto de nivel de suscripción ni en la definición del plano técnico. Solo puede usarse en artefactos de plano técnico que forman parte de un artefacto del grupo de recursos.

La función resourceGroup() acostumbra a usarse para crear recursos en la misma ubicación que artefacto del grupo de recursos.

Ejemplo

Para usar como ubicación de otro artefacto la ubicación del grupo de recursos, establecida en la definición del plano técnico o durante la asignación, indique un objeto de marcador de posición del grupo de recursos en la definición del plano técnico. En este ejemplo, NetworkingPlaceholder es el nombre del marcador de posición del grupo de recursos.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Después utilice la función resourceGroup() en el contexto de un artefacto de plano técnico destinado a un objeto de marcador de posición de grupo de recursos. En este ejemplo, el artefacto de la plantilla se implementa en el grupo de recursos NetworkingPlaceholder y proporciona el parámetro resourceLocation que se rellena dinámicamente con la ubicación del grupo de recursos NetworkingPlaceholder en la plantilla. La ubicación del grupo de recursos NetworkingPlaceholder puede haberse definido estáticamente en la definición del plano técnico o dinámicamente durante la asignación. En cualquier caso, el artefacto de la plantilla recibe esa información como un parámetro y lo usa para implementar los recursos en la ubicación correcta.

{
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "kind": "template",
  "properties": {
      "template": {
        ...
      },
      "resourceGroup": "NetworkingPlaceholder",
      ...
      "parameters": {
        "resourceLocation": {
          "value": "[resourceGroup().location]"
        }
      }
  }
}

resourceGroups

resourceGroups(placeholderName)

Devuelve un objeto que representa el artefacto del grupo de recursos especificado. A diferencia de resourceGroup(), que requiere el contexto del artefacto, esta función se utiliza para obtener las propiedades de un marcador de posición de grupo de recursos específico cuando no esté en el contexto de ese grupo de recursos.

Parámetros

Parámetro Obligatorio Tipo Descripción
placeholderName string El nombre de marcador de posición del artefacto del grupo de recursos que se va a devolver.

Valor devuelto

El objeto devuelto está en el formato siguiente:

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Ejemplo

Para usar como ubicación de otro artefacto la ubicación del grupo de recursos, establecida en la definición del plano técnico o durante la asignación, indique un objeto de marcador de posición del grupo de recursos en la definición del plano técnico. En este ejemplo, NetworkingPlaceholder es el nombre del marcador de posición del grupo de recursos.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Después utilice la función resourceGroups() en el contexto de un artefacto de plano técnico para obtener una referencia al objeto de marcador de posición de grupo de recursos. En este ejemplo, el artefacto de la plantilla se implementa fuera del grupo de recursos NetworkingPlaceholder y proporciona el parámetro artifactLocation que se rellena dinámicamente con la ubicación del grupo de recursos NetworkingPlaceholder en la plantilla. La ubicación del grupo de recursos NetworkingPlaceholder puede haberse definido estáticamente en la definición del plano técnico o dinámicamente durante la asignación. En cualquier caso, el artefacto de la plantilla recibe esa información como un parámetro y lo usa para implementar los recursos en la ubicación correcta.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "artifactLocation": {
          "value": "[resourceGroups('NetworkingPlaceholder').location]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

subscription

subscription()

Devuelve detalles sobre la suscripción para la asignación actual del plano técnico.

Valor devuelto

El objeto devuelto está en el formato siguiente:

{
    "id": "/subscriptions/{subscriptionId}",
    "subscriptionId": "{subscriptionId}",
    "tenantId": "{tenantId}",
    "displayName": "{name-of-subscription}"
}

Ejemplo

Utilice el nombre para mostrar de la suscripción y la función concat() para crear una convención de nomenclatura que pasa como el parámetro resourceName al artefacto de la plantilla.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "resourceName": {
          "value": "[concat(subscription().displayName, '-vm')]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

Pasos siguientes