توسيع الموارد باستخدام موفري الموارد المخصصين
في هذا البرنامج التعليمي، سوف تقوم بالنشر موفر موارد مخصص إلى Azure لتوسعة واجهة برمجة تطبيقات إدارة موارد Azure بنوع مورد Microsoft.CustomProviders/associations. يوضح البرنامج التعليمي كيفية توسيع الموارد الموجودة خارج مجموعة الموارد حيث يوجد مثيل موفر الموارد المخصص. في هذا البرنامج التعليمي، يتم تشغيل موفر الموارد المخصصة بواسطة تطبيق منطق Azure، ولكن يمكنك استخدام أي نقطة نهاية واجهة برمجة التطبيقات عامة.
المتطلبات الأساسية
لإكمال هذا البرنامج التعليمي، تأكد من مراجعة التالي:
- قدرات موفري موارد Azure المخصصة.
- معلومات أساسية حول إلحاق الموارد بموفري الموارد المخصصين.
البدء في إعداد الموارد
في هذا البرنامج التعليمي، هناك قطعتان يجب توزيعهما: موفر الموارد المخصصوالاقتران. لتسهيل العملية، يمكنك اختياريًا استخدام قالب واحد ينشر كليهما.
سيستخدم القالب هذه الموارد:
- Microsoft.CustomProviders/resourceProviders
- Microsoft.Logic/workflows
- Microsoft.CustomProviders/associations
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"allowedValues": [
"australiaeast",
"eastus",
"westeurope"
],
"metadata": {
"description": "Location for the resources."
}
},
"logicAppName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the logic app to be created."
}
},
"customResourceProviderName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the custom resource provider to be created."
}
},
"customResourceProviderId": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The resource ID of an existing custom resource provider. Provide this to skip deployment of new logic app and custom resource provider."
}
},
"associationName": {
"type": "string",
"defaultValue": "myAssociationResource",
"metadata": {
"description": "Name of the custom resource that is being created."
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"condition": "[empty(parameters('customResourceProviderId'))]",
"name": "customProviderInfrastructureTemplate",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"logicAppName": {
"type": "string",
"defaultValue": "[parameters('logicAppName')]"
}
},
"resources": [
{
"type": "Microsoft.Logic/workflows",
"apiVersion": "2019-05-01",
"name": "[parameters('logicAppName')]",
"location": "[parameters('location')]",
"properties": {
"state": "Enabled",
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Switch": {
"cases": {
"Case": {
"actions": {
"CreateCustomResource": {
"inputs": {
"body": {
"properties": "@addProperty(triggerBody().Body['properties'], 'myDynamicProperty', 'myDynamicValue')"
},
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
},
"case": "CREATE"
}
},
"default": {
"actions": {
"DefaultHttpResponse": {
"inputs": {
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
}
},
"expression": "@triggerBody().operationType",
"type": "Switch"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"CustomProviderWebhook": {
"inputs": {
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/resourceProviders",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('customResourceProviderName')]",
"location": "[parameters('location')]",
"properties": {
"resourceTypes": [
{
"name": "associations",
"mode": "Secure",
"routingType": "Webhook,Cache,Extension",
"endpoint": "[[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), '/triggers/CustomProviderWebhook'), '2019-05-01').value]"
}
]
}
}
],
"outputs": {
"customProviderResourceId": {
"type": "string",
"value": "[resourceId('Microsoft.CustomProviders/resourceProviders', parameters('customResourceProviderName'))]"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/associations",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('associationName')]",
"location": "global",
"properties": {
"targetResourceId": "[if(empty(parameters('customResourceProviderId')), reference('customProviderInfrastructureTemplate').outputs.customProviderResourceId.value, parameters('customResourceProviderId'))]",
"myCustomInputProperty": "myCustomInputValue",
"myCustomInputObject": {
"Property1": "Value1"
}
}
}
],
"outputs": {
"associationResource": {
"type": "object",
"value": "[reference(parameters('associationName'), '2018-09-01-preview', 'Full')]"
}
}
}
توزيع البنية الأساسية لموفر الموارد المخصص
يوزع الجزء الأول من القالب البنية الأساسية لموفر الموارد المخصصة. تحدد هذه البنية الأساسية تأثير مورد الاقترانات. إذا لم تكن على دراية بموفري الموارد المخصصين، فشاهد نظرة عامة على موفري الموارد المخصصة في Azure.
لننشر البنية الأساسية لموفر الموارد المخصص. إما نسخ القالب السابق وحفظه ونشره، وإما اتباع البنية الأساسية ونشرها باستخدام مدخل Azure.
انتقل إلى مدخل Azure.
ابحث عن templates في All Services أو باستخدام مربع البحث الرئيسي:
حدد Add في جزء Templates:
ضمن General، أدخل Name وDescription القالب الجديد:
إنشاء قالب Resource Manager عن طريق النسخ في قالب JSON من قسم Get started with resource onboarding من هذه المقالة:
حدد Add لإنشاء القالب. إذا لم يظهر القالب الجديد، فحدد Refresh.
حدد القالب الذي تم إنشاؤه حديثًا ثم حدد Deploy:
أدخل إعدادات الحقول المطلوبة ثم حدد مجموعة الاشتراك والموارد. يمكنك ترك مربع Custom Resource Provider Id فارغًا.
اسم الإعداد مطلوب؟ الوصف الموقع نعم موقع الموارد في القالب. اسم تطبيق المنطق لا اسم تطبيق المنطق. اسم موفر الموارد المخصص لا اسم موفر الموارد المخصص. معرف موفر الموارد المخصص لا موفر موارد مخصص موجود يدعم مورد الاقتران. إذا حددت قيمة هنا، فسيتم تخطي تطبيق المنطق وتوزيع موفر الموارد المخصص. اسم الاقتران لا اسم مورد الاقتران. معلمات النموذج:
انتقِل إلى النشر وانتظر حتى يتم الانتهاء منه. يجب مراجعة شيء ما مثل لقطة الشاشة التالية. يجب أن تشاهد مورد الاقتران الجديد كإخراج:
إليك مجموعة الموارد، مع تحديد Show hidden types:
استكشف تطبيق المنطق بعلامة التبويب Runs history لمشاهدة الاستدعاءات لإنشاء الاقتران:
نشر اقترانات إضافية
بعد إعداد البنية الأساسية لموفر الموارد المخصص، يمكنك بسهولة نشر المزيد من الاقترانات. لا يجب أن تكون مجموعة الموارد للاقترانات الإضافية هي نفسها مجموعة الموارد حيث قمت بنشر البنية الأساسية لموفر الموارد المخصص. لإنشاء اقتران، تحتاج إلى أن تكون لديك أذونات Microsoft.CustomProviders/resourceproviders/write بمعرف موفر الموارد المخصص المحدد.
انتقل إلى مورد Microsoft.CustomProviders/resourceProviders لموفر الموارد المخصص في مجموعة الموارد للتوزيع السابق. ستحتاج إلى تحديد خانة الاختيار عرض الأنواع المخفية:
انسخ خاصية معرف المورد لموفر الموارد المخصص.
ابحث عن templates في All Services أو باستخدام مربع البحث الرئيسي:
حدد القالب الذي تم إنشاؤه مسبقًا ثم حدد Deploy:
أدخل إعدادات الحقول المطلوبة ثم حدد الاشتراك ومجموعة موارد مختلفة. بالنسبة لإعداد معرف موفر الموارد المخصص ، أدخل معرف المورد الذي نسخته من موفر الموارد المخصص الذي قمت بنشره سابقا.
انتقِل إلى النشر وانتظر حتى يتم الانتهاء منه. يجب الآن نشر مورد الاقترانات الجديدة فقط:
إذا كنت تريد ذلك، يمكنك العودة إلى تطبيق المنطق تشغيل المحفوظات ومراجعة إجراء استدعاء آخر أُجري على تطبيق المنطق. يمكنك تحديث تطبيق المنطق لزيادة الوظائف الإضافية لكل اقتران تم إنشاؤه.
الخطوات التالية
في هذه المقالة، نشرت موفر موارد مخصص إلى Azure لتوسعة واجهة برمجة تطبيقات إدارة موارد Azure بنوع مورد Microsoft.CustomProviders/associates. لمتابعة التعرف على موفري الموارد المخصصة، راجع: