تطبيقات Azure المدارة مع الإعلامات
تسمح إعلامات التطبيقات المدارة من Azure للناشرين بأتمتة الإجراءات استنادًا إلى أحداث دورة حياة مثيلات التطبيقات المدارة. يمكن للناشرين تحديد نقطة نهاية خطاف الويب لإعلام مخصص لتلقي إعلامات الأحداث حول طبعات التطبيق المُدارة الجديدة والحالية. يمكن للناشرين إعداد سير الأعمال المخصصة في وقت تزويد التطبيق، التحديثات، والحذف.
الشروع في العمل
لبدء تلقي إشعارات التطبيقات المُدارة، قم بإنشاء نقطة نهاية HTTPS عامة. حدد نقطة النهاية عند توزيع تعريف تطبيق كتالوج الخدمة أو عرض Microsoft Azure Marketplace.
فيما يلي الخطوات الموصى بها للبدء بسرعة:
- قم بإنشاء نقطة نهاية HTTPS عامة تسجل طلبات وعائدات POST الواردة
200 OK
. - إضافة نقطة النهاية إلى تعريف التطبيق كاتالوج الخدمة أو عرضAzure Marketplace كما هو موضح لاحقا في هذه المقالة.
- إنشاء مثيل تطبيق مدار يشير إلى تعريف التطبيق أو عرضAzure Marketplace.
- التحقق من تلقي الإعلامات.
- تمكين التخويل كما هو موضح فيقسم مصادقة نقطة النهايةفي هذه المقالة.
- متابعة التعليمات فيقسم مخطط الإخطارفي هذه المقالة لتوزيع طلبات الإخطار وتنفيذ منطق تسلسل العمل الخاص بك استنادًا إلى الإخطار.
إضافة إعلامات تعريف التطبيق كاتالوج الخدمة
توضح الأمثلة التالية كيفية إضافة URI لنقطة نهاية الإعلام باستخدام البوابة الإلكترونية أو REST API.
مدخل Azure
للبدء، راجع التشغيل السريع: إنشاء تعريف تطبيق مدار من Azure ونشره.
REST API
ملاحظة
يمكنك توفير نقطة نهاية واحدة فقط في خاصية notificationEndpoints
تعريف التطبيق المُدار.
{
"properties": {
"isEnabled": true,
"lockLevel": "ReadOnly",
"displayName": "Sample Application Definition",
"description": "Notification-enabled application definition.",
"notificationPolicy": {
"notificationEndpoints": [
{
"uri": "https://isv.azurewebsites.net:1214?sig=unique_token"
}
]
},
"authorizations": [
{
"principalId": "d6b7fbd3-4d99-43fe-8a7a-f13aef11dc18",
"roleDefinitionId": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
},
...
إضافة إعلامات تطبيقات Azure Marketplace المدارة
لمزيد من المعلومات، راجعإنشاء عرض تطبيق Azure.
مشغلات الحدث
يصف الجدول التالي جميع التركيبات الممكنة eventType
وprovisioningState
محفزاتها:
EventType | ProvisioningState | مشغل للإخطار |
---|---|---|
PUT | مقبول | تم إنشاء مجموعة المورد المدارة وإسقاطها بنجاح بعد تطبيق PUT (قبل بدء التوزيع داخل مجموعة المورد المدارة). |
PUT | Succeeded | نجح التزويد الكامل للتطبيق المدار بعد PUT. |
PUT | فشل | فشل PUT لتزويد مثيل التطبيق في أي نقطة. |
PATCH | Succeeded | بعد إجراء PATCH ناجح على مثيل التطبيق المدار لتحديث العلامات، نهج الوصول JIT، أو الهوية المدارة. |
DELETE | الحذف | بمجرد أن يبدأ المستخدم إجراء DELETE لمثيل تطبيق مدار. |
DELETE | محذوفة | بعد الحذف الكامل والناجح للتطبيق المدار. |
DELETE | فشل | بعد أي خطأ في أثناء عملية إلغاء التزويد التي تمنع الحذف. |
مخطط الإعلام
عند إنشاء نقطة نهاية خطاف الويب للتعامل مع الإشعارات، ستحتاج إلى تحليل الحمولة للحصول على خصائص مهمة للعمل بعد ذلك بناءً على الإشعار. يوفر كتالوج الخدمة وإعلامات التطبيق المُدارة في Azure Marketplace العديد من الخصائص نفسها، ولكن هناك بعض الاختلافات. الخاصية applicationDefinitionId
تنطبق فقط على كتالوج الخدمة. تنطبق الخصائص billingDetails
والخصائص plan
على Azure Marketplace فقط.
يلحق Azure بـ /resource
URI لنقطة نهاية الإعلام الذي قدمته في تعريف التطبيق المُدار. يجب أن تكون نقطة نهاية الرد التلقائي على الويب قادرة على التعامل مع الإشعارات على URI /resource
. وعلى سبيل المثال، إذا قمت بتوفير URI لنقطة نهاية الإعلام مثل https://fabrikam.com
URI لنقطة نهاية إخطار على الويب هو https://fabrikam.com/resource
.
مخطط إعلام تطبيق كاتالوج الخدمة
يُظهر النموذج التالي إعلام كتالوج الخدمة بعد التوفير الناجح لطبعة تطبيق مُدار.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Succeeded",
"applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>"
}
إذا فشل التزويد، فسيتم إرسال إعلام بتفاصيل الخطأ إلى نقطة النهاية المحددة.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Failed",
"applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>",
"error": {
"code": "ErrorCode",
"message": "error message",
"details": [
{
"code": "DetailedErrorCode",
"message": "error message"
}
]
}
}
مخطط إعلام تطبيق Azure Marketplace
يُظهر النموذج التالي إعلام كتالوج الخدمة بعد التوفير الناجح لطبعة تطبيق مُدار.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Succeeded",
"billingDetails": {
"resourceUsageId": "<resourceUsageId>"
},
"plan": {
"publisher": "publisherId",
"product": "offer",
"name": "skuName",
"version": "1.0.1"
}
}
إذا فشل التزويد، فسيتم إرسال إعلام بتفاصيل الخطأ إلى نقطة النهاية المحددة.
POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1
{
"eventType": "PUT",
"applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
"eventTime": "2019-08-14T19:20:08.1707163Z",
"provisioningState": "Failed",
"billingDetails": {
"resourceUsageId": "<resourceUsageId>"
},
"plan": {
"publisher": "publisherId",
"product": "offer",
"name": "skuName",
"version": "1.0.1"
},
"error": {
"code": "ErrorCode",
"message": "error message",
"details": [
{
"code": "DetailedErrorCode",
"message": "error message"
}
]
}
}
الخاصية | الوصف |
---|---|
eventType |
نوع الحدث الذي قام بتشغيل الإعلام. (على سبيل المثال، DELETE، PATCH، PUT.) |
applicationId |
معرف المورد المؤهل بالكامل للتطبيق المدار الذي تم تشغيل الإعلام عنه. |
eventTime |
الطابع الزمني للحدث الذي قام بتشغيل الإعلام. (التاريخ والوقت في تنسيق UTC ISO 8601.) |
provisioningState |
حالة التزويد لمثيل التطبيق المدار. على سبيل المثال، نجح، فشل، حذف، محذوف. |
applicationDefinitionId |
يتم تحديده فقط لتطبيقات كاتالوج الخدمة المدارة. يمثل معرف المورد المؤهل بالكامل لتعريف التطبيق الذي تم تزويد مثيل التطبيق المدار له. |
billingDetails |
يتم تحديده فقط لتطبيقات Azure Marketplace المدارة. تفاصيل الفوترة لمثيل التطبيق المدار. يحتوي resourceUsageId على ما يمكنك استخدامه للاستعلام عن Azure Marketplace للحصول على تفاصيل الاستخدام. |
plan |
يتم تحديده فقط لتطبيقات Azure Marketplace المدارة. يمثل الناشر، والعرض، وSKU، وإصدار لمثيل التطبيق المدار. |
error |
يتم تحديده فقط عند فشل provisioningState. يحتوي على رمز الخطأ، والرسالة، وتفاصيل المشكلة التي تسببت في الفشل. |
مصادقة نقطة النهاية
لتأمين نقطة النهاية webhook وضمان صحة الإخطار:
- قم بتوفير معامِل طلب البحث أعلى عنوان URI للخطاف على الويب، مثل هذا:
https://your-endpoint.com?sig=Guid
. مع كل إخطار، افحص معلمة الاستعلام للتأكد أنsig
لها القيمة المتوقعةGuid
. - قم بإصدار GET على طبعة التطبيق المُدار باستخدام
applicationId
. تحقق من مطابقةprovisioningState
الإشعارprovisioningState
لضمان الاتساق.
إعادة محاولة الإعلام
تتوقع خدمة إعلام التطبيق المُدار استجابة 200 OK
من نقطة نهاية خطاف الويب للإعلام. ستعيد خدمة الإعلام المحاولة إذا قامت نقطة نهاية خطاف الويب بإرجاع رمز خطأ HTTP أكبر من أو يساوي 500، أو تقوم بإرجاع رمز خطأ 429، أو إذا كانت نقطة النهاية غير قابلة للوصول مؤقتًا. إذا لم تصبح نقطة نهاية خطاف الويب متاحة في غضون 10 ساعات، فسيتم تجاهل رسالة الإشعار، وستتوقف عمليات إعادة المحاولة.