Funzioni da utilizzare con Azure Blueprints

Importante

Azure Blueprints (Preview) sarà ritirato il 31 gennaio 2027, con un pensionamento graduale a partire dal 31 luglio 2026. Migra le definizioni e le assegnazioni dei tuoi blueprint esistenti verso gli Stack di Distribuzione (consigliati) e le specifiche dei Template. Gli artefatti dei blueprint vengono convertiti in template ARM JSON o file Bicep utilizzati per definire gli stack di deployment. Per la timeline a fasi completa, l'impatto e le FAQ, vedi Azure Blueprints retirement oppure https://aka.ms/AzureBlueprintsRetirement. Per informazioni su come definire un artefatto come risorsa ARM, vedere:

Azure Blueprints fornisce funzioni che rendono la definizione di un blueprint più dinamica. Queste funzioni sono destinate all'uso con definizioni di blueprint e artefatti di blueprint. Un artefatto Azure Resource Manager Template (template ARM) supporta l'uso completo delle funzioni di Resource Manager oltre a ottenere un valore dinamico tramite un parametro blueprint.

Sono supportate le funzioni seguenti:

artifacts

artifacts(artifactName)

Restituisce un oggetto di proprietà popolato con quegli artefatti del blueprint.

Annotazioni

La artifacts() funzione non può essere utilizzata all'interno di un template ARM. La funzione può essere utilizzata solo nella definizione del blueprint JSON o nell'artefact JSON quando si gestisce il blueprint con Azure PowerShell o l'API REST come parte di Blueprints-as-code.

Parametri

Parametro Required Tipo Description
artifactName Yes string Il nome di un artefatto di progetto.

Valore restituito

Un oggetto delle proprietà di output. Le proprietà degli output dipendono dal tipo di artefatto del progetto a cui si fa riferimento. Tutti i tipi seguono il formato:

{
  "outputs": {collectionOfOutputProperties}
}

Artefatto sull'assegnazione delle policy

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

Artefatto del modello ARM

Le proprietà di output dell'oggetto restituito sono definite all'interno del template ARM e restituite dalla distribuzione.

Artefatto sull'assegnazione dei ruoli

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

Esempio

Un artefatto di template ARM con l'ID myTemplateArtifact contenente la seguente proprietà di output campione:

{
    "$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
            }
        }
    }
}

Alcuni esempi di recupero di dati dal campione myTemplateArtifact sono:

Espressione Tipo Value
[artifacts("myTemplateArtifact").outputs.myArray] Array ["prima", "seconda"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] String "Prima"
[artifacts("myTemplateArtifact").outputs.myString] String "il mio valore di stringa"
[artifacts("myTemplateArtifact").outputs.myObject] Object { "miaproprietà": "il mio valore", "un'altraProprietà": vero }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] String "Il mio valore"
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Bool True

concat

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

Combina più valori di stringhe e restituisce la stringa concatenata.

Parametri

Parametro Required Tipo Description
stringa1 Yes string Il primo valore per la concatenazione.
argomenti aggiuntivi No string Valori aggiuntivi in ordine sequenziale per la concatenazione

Valore restituito

Una stringa di valori concatenati.

Osservazioni:

La funzione Azure Blueprints si differenzia dalla funzione modello ARM perché funziona solo con stringhe.

Esempio

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

parametri

parameters(parameterName)

Restituisce un valore del parametro blueprint. Il nome del parametro specificato deve essere definito nella definizione del blueprint o negli artefatti del blueprint.

Parametri

Parametro Required Tipo Description
nomeparametro Yes string Nome del parametro da restituire.

Valore restituito

Il valore del parametro specificato del blueprint o dell'artefatto del blueprint.

Osservazioni:

La funzione Azure Blueprints si differenzia dalla funzione modello ARM in quanto funziona solo con i parametri del blueprint.

Esempio

Definisci i principali Ids del parametro nella definizione del progetto:

{
    "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"
                }
            }
        },
        ...
    }
}

Poi usa i principalIds come argomento per parameters() un artefatto di progetto:

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

resourceGroup

resourceGroup()

Restituisce un oggetto che rappresenta il gruppo di risorse corrente.

Valore restituito

L'oggetto restituito è nel seguente formato:

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

Osservazioni:

La funzione Azure Blueprints differisce dalla funzione modello ARM. La resourceGroup() funzione non può essere usata in un artefatto a livello di abbonamento o nella definizione del blueprint. Può essere utilizzato solo negli artefatti dei progetti che fanno parte di un artefatto di un gruppo di risorse.

Un uso comune della resourceGroup() funzione è creare risorse nella stessa posizione dell'artefatto del gruppo risorse.

Esempio

Per usare la posizione del gruppo risorse, impostata nella definizione del blueprint o durante l'assegnazione, come posizione per un altro artefatto, dichiara un oggetto segnaposto del gruppo risorse nella definizione del tuo blueprint. In questo esempio, NetworkingPlaceholder è il nome del gruppo risorse, che rappresenta il segnaposto.

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

Poi usa la resourceGroup() funzione nel contesto di un artefatto di blueprint che mira a un oggetto placeholder del gruppo risorse. In questo esempio, l'artefatto del template viene distribuito nel gruppo di risorse NetworkingPlaceholder e fornisce il parametro resourceLocation popolato dinamicamente con la posizione del gruppo risorse NetworkingPlaceholder al template. La posizione del gruppo di risorse NetworkingPlaceholder potrebbe essere stata definita staticamente sulla definizione del blueprint o definita dinamicamente durante l'assegnazione. In entrambi i casi, l'artefatto template riceve quell'informazione come parametro e la utilizza per distribuire le risorse nella posizione corretta.

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

gruppi di risorse

resourceGroups(placeholderName)

Restituisce un oggetto che rappresenta l'artefatto specificato del gruppo di risorse. A differenza di , che richiede il contesto dell'artefatto, questa funzione viene usata per ottenere le proprietà di un specifico gruppo di risorse come resourceGroup()segnaposto quando non si trova nel contesto di quel gruppo di risorse.

Parametri

Parametro Required Tipo Description
Nome segnaposto Yes string Il nome provvisorio dell'artefatto del gruppo risorse da restituire.

Valore restituito

L'oggetto restituito è nel seguente formato:

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

Esempio

Per usare la posizione del gruppo risorse, impostata nella definizione del blueprint o durante l'assegnazione, come posizione per un altro artefatto, dichiara un oggetto segnaposto del gruppo risorse nella definizione del tuo blueprint. In questo esempio, NetworkingPlaceholder è il nome del gruppo risorse, che rappresenta il segnaposto.

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

Poi usa la resourceGroups() funzione dal contesto di qualsiasi artefatto di progetto per ottenere un riferimento all'oggetto segnaposto del gruppo risorse. In questo esempio, l'artefatto del template viene distribuito al di fuori del gruppo di risorse NetworkingPlaceholder e fornisce l'artefacto dei parametri Popolata dinamicamente con la posizione del gruppo risorse NetworkingPlaceholder al template. La posizione del gruppo di risorse NetworkingPlaceholder potrebbe essere stata definita staticamente sulla definizione del blueprint o definita dinamicamente durante l'assegnazione. In entrambi i casi, l'artefatto template riceve quell'informazione come parametro e la utilizza per distribuire le risorse nella posizione corretta.

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

subscription

subscription()

Restituisce dettagli sull'abbonamento per l'assegnazione attuale del progetto.

Valore restituito

L'oggetto restituito è nel seguente formato:

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

Esempio

Usa il nome visualizzato dell'abbonamento e la concat() funzione per creare una convenzione di denominazione passata come parametro resourceName all'artefatto del template.

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

Passaggi successivi