وظائف للاستخدام مع Azure Blueprints

هام

في 11 يوليو 2026، سيتم إهمال المخططات (إصدار أولي). قم بترحيل تعريفات المخطط الحالي وتعييناته إلى مواصفات القالبومكدسات التوزيع. سيتم تحويل البيانات الاصطناعية للمخطط إلى قوالب ARM JSON أو ملفات Bicep المستخدمة لتعريف مكدسات التوزيع. لمعرفة كيفية تأليف أداة كمورد ARM، راجع:

توفر Azure Blueprints وظائف تجعل تعريف المخطط أكثر ديناميكية. تُستخدم هذه الوظائف مع تعريفات المخطط والبيانات الاصطناعية للمخطط. تدعم أداة قالب Azure Resource Manager (قالب ARM) الاستخدام الكامل لوظائف إدارة الموارد بالإضافة إلى الحصول على قيمة ديناميكية من خلال معلمة مخطط.

يتم دعم الوظائف التالية:

الأدوات

artifacts(artifactName)

يقوم بإرجاع عنصر من الخصائص تم ملؤه بمخرجات اصطناعية للمخطط.

ملاحظة

لا يمكن استخدام الوظيفة artifacts() من داخل قالب ARM. يمكن استخدام الوظيفة فقط في تعريف المخطط JSON أو في الأداة JSON عند إدارة المخطط باستخدام Azure PowerShell أو REST API كجزء من Blueprints-as-code.

المعلمات

المعلمة مطلوب النوع الوصف
artifactName نعم سلسلة اسم بيانات اصطناعية للمخطط.

القيمة المُرجعة

عنصر من خصائص الإخراج. تعتمد خصائص outputs على نوع عنصر المخطط الذي يتم الرجوع إليه. جميع الأنواع تتبع التنسيق:

{
  "outputs": {collectionOfOutputProperties}
}

أداة تعيين النهج

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

بيانات اصطناعية لقالب ARM

يتم تحديد خصائص outputs للعنصر الذي تم إرجاعه في قالب ARM ويتم إرجاعها بواسطة التوزيع.

بيانات اصطناعية لتعيين الدور

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

مثال

عنصر قالب ARM بالمعرف myTemplateArtifact يحتوي على خاصية الإخراج القالبية التالية:

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

بعض الأمثلة لاسترداد البيانات من عينة myTemplateArtifact هي:

Expression النوع القيمة
[artifacts("myTemplateArtifact").outputs.myArray] صفيف ["first"، "second"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] سلسلة "first"
[artifacts("myTemplateArtifact").outputs.myString] سلسلة "my string value"
[artifacts("myTemplateArtifact").outputs.myObject] العنصر { "myproperty": "my value"، "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] سلسلة "my value"
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] مجموعة صواب

Concat

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

يدمج قيم سلسلة متعددة ويعيد السلسلة المتسلسلة.

المعلمات

المعلمة مطلوب النوع الوصف
string1 نعم سلسلة القيمة الأولى للتسلسل.
وسائط إضافية لا سلسلة القيم الإضافية بالترتيب التسلسلي للتسلسل

القيمة المُرجعة

سلسلة من القيم المتسلسلة.

الملاحظات

تختلف وظيفة Azure Blueprints عن وظيفة قالب ARM من حيث إنها تعمل فقط مع السلاسل.

مثال

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

المعلمات

parameters(parameterName)

ترجع قيمة معلمة المخطط. يجب تحديد اسم المعلمة المحددة في تعريف المخطط أو في البيانات الاصطناعية المخطط.

المعلمات

المعلمة مطلوب النوع الوصف
اسم المعلمة نعم سلسلة اسم المعلمة التي يجب إرجاعها.

القيمة المُرجعة

قيمة المعلمة المحددة للمخطط أو أثر المخطط المحدد.

الملاحظات

تختلف وظيفة Azure Blueprints عن وظيفة قالب ARM من حيث إنها تعمل فقط مع معلمات المخطط.

مثال

حدد المعلمة parentIds في تعريف المخطط:

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

ثم استخدم parentIds كوسيطة لـ parameters() في عنصر مخطط:

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

resourceGroup

resourceGroup()

إرجاع كائن يمثل مجموعة الموارد الحالية.

قيمة الإرجاع

الكائن الذي تم إرجاعه بالتنسيق التالي:

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

الملاحظات

تختلف وظيفة Azure Blueprints عن وظيفة قالب ARM. لا يمكن استخدام الوظيفة resourceGroup() في عنصر مستوى الاشتراك أو تعريف المخطط. يمكن استخدامه فقط في البيانات الاصطناعية المخطط التي تعد جزءاً من عنصر مجموعة الموارد.

الاستخدام المتداول لوظيفة resourceGroup() هو إنشاء موارد في نفس الموقع مثل عنصر مجموعة الموارد.

مثال

لاستخدام موقع مجموعة الموارد، قم بتعيين إما في تعريف المخطط أو أثناء التعيين، كموقع لبيانات اصطناعية أخرى، قم بتعريف عنصر نائب لمجموعة الموارد في تعريف المخطط الخاص بك. في هذا المثال، NetworkingPlaceholder هو اسم العنصر النائب لمجموعة الموارد.

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

ثم استخدم الوظيفة resourceGroup() في سياق بيانات اصطناعية للمخطط تستهدف عنصر نائب لمجموعة الموارد. في هذا المثال، يتم توزيع القالب في مجموعة موارد NetworkingPlaceholder ويوفر المعلمة ResourceLocation التي يتم ملؤها ديناميكياً باستخدام موقع مجموعة موارد NetworkingPlaceholder للقالب. يمكن تحديد موقع مجموعة موارد NetworkingPlaceholder بشكل ثابت في تعريف المخطط أو تحديده ديناميكياً أثناء التعيين. في كلتا الحالتين، يتم تزويد البيانات الاصطناعية الخاصة بالقالب بتلك المعلومات كمعامل وتستخدمها لتوزيع الموارد إلى الموقع الصحيح.

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

resourceGroups

resourceGroups(placeholderName)

إرجاع عنصر يمثل عنصر مجموعة الموارد المحدد. على عكس resourceGroup()، التي تتطلب سياق الأداة، يتم استخدام هذه الوظيفة للحصول على خصائص عنصر نائب لمجموعة موارد معينة عندما لا تكون في سياق مجموعة الموارد تلك.

المعلمات

المعلمة مطلوب النوع الوصف
placeholderName نعم سلسلة اسم العنصر النائب لعنصر مجموعة الموارد المراد إرجاعه.

قيمة الإرجاع

الكائن الذي تم إرجاعه بالتنسيق التالي:

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

مثال

لاستخدام موقع مجموعة الموارد، قم بتعيين إما في تعريف المخطط أو أثناء التعيين، كموقع لبيانات اصطناعية أخرى، قم بتعريف عنصر نائب لمجموعة الموارد في تعريف المخطط الخاص بك. في هذا المثال، NetworkingPlaceholder هو اسم العنصر النائب لمجموعة الموارد.

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

ثم استخدم الوظيفة resourceGroups() من سياق أي بيانات اصطناعية للمخطط للحصول على مرجع إلى العنصر النائب لمجموعة الموارد. في هذا المثال، يتم توزيع القالب خارج مجموعة موارد NetworkingPlaceholder ويوفر المعلمة artifactLocation ديناميكياً مع موقع مجموعة موارد NetworkingPlaceholder للقالب. يمكن تحديد موقع مجموعة موارد NetworkingPlaceholder بشكل ثابت في تعريف المخطط أو تحديده ديناميكياً أثناء التعيين. في كلتا الحالتين، يتم تزويد البيانات الاصطناعية الخاصة بالقالب بتلك المعلومات كمعامل وتستخدمها لتوزيع الموارد إلى الموقع الصحيح.

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

الاشتراك

subscription()

إرجاع تفاصيل بشأن الاشتراك لتعيين المخطط الحالي.

قيمة الإرجاع

الكائن الذي تم إرجاعه بالتنسيق التالي:

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

مثال

استخدم اسم عرض الاشتراك والوظيفة concat() لإنشاء اصطلاح تسمية تم تمريره كمعامل ResourceName إلى عنصر القالب.

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

الخطوات التالية