وظائف محددة من قِبل المستخدم في قالب ARM
ضمن القالب الخاص بك، يمكنك إنشاء الوظائف الخاصة بك. هذه الوظائف متاحة للاستخدام في القالب الخاص بك. الوظائف التي يحددها المستخدم منفصلة عن وظائف النموذج القياسية المتوفرة تلقائياً داخل النموذج الخاص بك. قم بإنشاء الوظائف الخاصة بك عندما يكون لديك تعبيرات معقدة يتم استخدامها بشكل متكرر في القالب الخاص بك.
توضح هذه المقالة كيفية إضافة وظائف معرّفة من قِبل المستخدم في قالب Azure Resource Manager (قالب ARM).
حدد الوظيفة
تتطلب وظائفك قيمة مساحة الاسم لتجنب تعارض التسمية مع وظائف القالب. يُظهر المثال التالي دالة تُرجع اسماً فريداً:
"functions": [
{
"namespace": "contoso",
"members": {
"uniqueName": {
"parameters": [
{
"name": "namePrefix",
"type": "string"
}
],
"output": {
"type": "string",
"value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
}
}
}
}
],
استخدام الوظيفة
يوضح المثال التالي نموذجاً يتضمن وظيفة معرّفة من قِبل المستخدم للحصول على اسم فريد لحساب التخزين. يحتوي القالب على معلمة تسمى storageNamePrefix
يتم تمريرها كمعامل إلى الوظيفة.
{
"$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
}
}
]
}
أثناء التوزيع، يتم تمرير المعلمة storageNamePrefix
إلى الوظيفة:
- يعرّف القالب معلمة باسم
storageNamePrefix
. - تستخدم الوظيفة
namePrefix
لأنه يمكنك فقط استخدام المعلمات المحددة في الوظيفة. لمزيد من المعلومات، راجع القيود. - في قسم
resources
القالب، يستخدم العنصرname
الوظيفة ويمرر قيمةstorageNamePrefix
إلىnamePrefix
الدالة.
التقييدات
عند تحديد وظيفة المستخدم، هناك بعض القيود:
- لا يمكن للدالة الوصول إلى المتغيرات.
- يمكن للوظيفة فقط استخدام المعلمات التي تم تحديدها في الوظيفة. عندما تستخدم وظيفة المعلمات ضمن وظيفة محددة بواسطة المستخدم، فأنت مقيد بمعلمات هذه الوظيفة.
- لا يمكن للوظيفة استدعاء وظائف أخرى يحددها المستخدم.
- لا يمكن للدالة استخدام الوظيفة reference أو أي من وظائف list.
- لا يمكن أن تحتوي معلمات الوظيفة على قيم افتراضية.
الخطوات التالية
- للتعرف على الخصائص المتاحة للوظائف التي يحددها المستخدم، راجع فهم بنية وصياغة قوالب ARM.
- للحصول على قائمة بوظائف النموذج المتاحة، راجع وظائف قالب ARM.