Udostępnij za pośrednictwem


Funkcje do użycia z usługą Azure Blueprints

Ważne

11 lipca 2026 r. strategia (wersja zapoznawcza) zostanie wycofana. Przeprowadź migrację istniejących definicji strategii i przypisań do szablonów specyfikacji i stosów wdrażania. Artefakty strategii mają być konwertowane na szablony JSON usługi ARM lub pliki Bicep używane do definiowania stosów wdrażania. Aby dowiedzieć się, jak utworzyć artefakt jako zasób usługi ARM, zobacz:

Usługa Azure Blueprints udostępnia funkcje, dzięki czemu definicja strategii jest bardziej dynamiczna. Te funkcje są używane z definicjami strategii i artefaktami strategii. Artefakt szablonu usługi Azure Resource Manager (szablon usługi ARM) obsługuje pełne użycie funkcji Resource Manager oprócz pobierania wartości dynamicznej za pomocą parametru strategii.

Obsługiwane są następujące funkcje:

Artefakty

artifacts(artifactName)

Zwraca obiekt właściwości wypełniony za pomocą tych artefaktów strategii wyjściowych.

Uwaga

Nie artifacts() można użyć funkcji z poziomu szablonu usługi ARM. Funkcja może być używana tylko w formacie JSON definicji strategii lub w formacie JSON artefaktu podczas zarządzania strategią przy użyciu Azure PowerShell lub interfejsu API REST w ramach kodu Blueprints-as-code.

Parametry

Parametr Wymagane Typ Opis
artifactName Tak ciąg Nazwa artefaktu strategii.

Wartość zwracana

Obiekt właściwości wyjściowych. Właściwości danych wyjściowych zależą od typu przywoływanego artefaktu strategii. Wszystkie typy są zgodne z formatem:

{
  "outputs": {collectionOfOutputProperties}
}

Artefakt przypisania zasad

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

Artefakt szablonu usługi ARM

Właściwości wyjściowe zwracanego obiektu są definiowane w szablonie usługi ARM i zwracane przez wdrożenie.

Artefakt przypisania roli

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

Przykład

Artefakt szablonu usługi ARM z identyfikatorem myTemplateArtifact zawierającym następującą przykładową właściwość wyjściową:

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

Oto kilka przykładów pobierania danych z przykładu myTemplateArtifact :

Wyrażenie Typ Wartość
[artifacts("myTemplateArtifact").outputs.myArray] Tablica ["first", "second"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] Ciąg "first"
[artifacts("myTemplateArtifact").outputs.myString] Ciąg "moja wartość ciągu"
[artifacts("myTemplateArtifact").outputs.myObject] Obiekt { "myproperty": "moja wartość", "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] Ciąg "moja wartość"
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Wartość logiczna Prawda

concat

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

Łączy wiele wartości ciągów i zwraca połączony ciąg.

Parametry

Parametr Wymagane Typ Opis
ciąg1 Tak ciąg Pierwsza wartość łączenia.
dodatkowe argumenty Nie ciąg Dodatkowe wartości w kolejności sekwencyjnej dla łączenia

Wartość zwracana

Ciąg połączonych wartości.

Uwagi

Funkcja Azure Blueprints różni się od funkcji szablonu usługi ARM, ponieważ działa tylko z ciągami.

Przykład

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

parameters

parameters(parameterName)

Zwraca wartość parametru strategii. Określona nazwa parametru musi być zdefiniowana w definicji strategii lub w artefaktach strategii.

Parametry

Parametr Wymagane Typ Opis
Parametername Tak ciąg Nazwa parametru do zwrócenia.

Wartość zwracana

Wartość określonego parametru strategii lub artefaktu strategii.

Uwagi

Funkcja Azure Blueprints różni się od funkcji szablonu usługi ARM, ponieważ działa tylko z parametrami strategii.

Przykład

Zdefiniuj identyfikatory principalId parametrów w definicji strategii:

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

Następnie użyj identyfikatorów principalId jako argumentu w parameters() artefaktie strategii:

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

resourceGroup

resourceGroup()

Zwraca obiekt reprezentujący bieżącą grupę zasobów.

Wartość zwracana

Zwrócony obiekt ma następujący format:

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

Uwagi

Funkcja Azure Blueprints różni się od funkcji szablonu usługi ARM. Nie resourceGroup() można użyć funkcji w artefaktie na poziomie subskrypcji ani definicji strategii. Można go używać tylko w artefaktach strategii, które są częścią artefaktu grupy zasobów.

Typowym zastosowaniem resourceGroup() funkcji jest utworzenie zasobów w tej samej lokalizacji co artefakt grupy zasobów.

Przykład

Aby użyć lokalizacji grupy zasobów, ustaw w definicji strategii lub podczas przypisywania, jako lokalizację innego artefaktu, zadeklaruj obiekt zastępczy grupy zasobów w definicji strategii. W tym przykładzie element NetworkingPlaceholder jest nazwą symbolu zastępczego grupy zasobów.

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

Następnie użyj resourceGroup() funkcji w kontekście artefaktu strategii, który jest przeznaczony dla obiektu zastępczego grupy zasobów. W tym przykładzie artefakt szablonu jest wdrażany w grupie zasobów NetworkingPlaceholder i zapewnia zasób parametruLokalizacja dynamicznie wypełniana lokalizacją grupy zasobów NetworkingPlaceholder do szablonu. Lokalizacja grupy zasobów NetworkingPlaceholder mogła zostać statycznie zdefiniowana w definicji strategii lub dynamicznie zdefiniowana podczas przypisywania. W obu przypadkach artefakt szablonu jest dostarczany jako parametr i używa go do wdrożenia zasobów w odpowiedniej lokalizacji.

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

resourceGroups

resourceGroups(placeholderName)

Zwraca obiekt reprezentujący określony artefakt grupy zasobów. W przeciwieństwie do resourceGroup()elementu , który wymaga kontekstu artefaktu, ta funkcja służy do pobierania właściwości określonego symbolu zastępczego grupy zasobów, gdy nie w kontekście tej grupy zasobów.

Parametry

Parametr Wymagane Typ Opis
symbol zastępczyName Tak ciąg Nazwa symbolu zastępczego artefaktu grupy zasobów do zwrócenia.

Wartość zwracana

Zwrócony obiekt ma następujący format:

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

Przykład

Aby użyć lokalizacji grupy zasobów, ustaw w definicji strategii lub podczas przypisywania, jako lokalizację innego artefaktu, zadeklaruj obiekt zastępczy grupy zasobów w definicji strategii. W tym przykładzie element NetworkingPlaceholder jest nazwą symbolu zastępczego grupy zasobów.

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

Następnie użyj resourceGroups() funkcji z kontekstu dowolnego artefaktu strategii, aby uzyskać odwołanie do obiektu zastępczego grupy zasobów. W tym przykładzie artefakt szablonu jest wdrażany poza grupą zasobów NetworkingPlaceholder i zapewnia artefakt parametruLokalizacja dynamicznie wypełniana lokalizacją grupy zasobów NetworkingPlaceholder do szablonu. Lokalizacja grupy zasobów NetworkingPlaceholder mogła zostać statycznie zdefiniowana w definicji strategii lub dynamicznie zdefiniowana podczas przypisywania. W obu przypadkach artefakt szablonu jest dostarczany jako parametr i używa go do wdrożenia zasobów w odpowiedniej lokalizacji.

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

subskrypcja

subscription()

Zwraca szczegółowe informacje o subskrypcji dla bieżącego przypisania strategii.

Wartość zwracana

Zwrócony obiekt ma następujący format:

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

Przykład

Użyj nazwy wyświetlanej subskrypcji i concat() funkcji, aby utworzyć konwencję nazewnictwa przekazaną jako resourceName parametru do artefaktu szablonu.

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

Następne kroki