تطبيقات Azure المدارة مع الإعلامات

تسمح إعلامات التطبيقات المدارة من Azure للناشرين بأتمتة الإجراءات استنادًا إلى أحداث دورة حياة مثيلات التطبيقات المدارة. يمكن للناشرين تحديد نقطة نهاية خطاف الويب لإعلام مخصص لتلقي إعلامات الأحداث حول طبعات التطبيق المُدارة الجديدة والحالية. يمكن للناشرين إعداد سير الأعمال المخصصة في وقت تزويد التطبيق، التحديثات، والحذف.

الشروع في العمل

لبدء تلقي إشعارات التطبيقات المُدارة، قم بإنشاء نقطة نهاية HTTPS عامة. حدد نقطة النهاية عند توزيع تعريف تطبيق كتالوج الخدمة أو عرض Microsoft Azure Marketplace.

فيما يلي الخطوات الموصى بها للبدء بسرعة:

  1. قم بإنشاء نقطة نهاية HTTPS عامة تسجل طلبات وعائدات POST الواردة 200 OK.
  2. إضافة نقطة النهاية إلى تعريف التطبيق كاتالوج الخدمة أو عرضAzure Marketplace كما هو موضح لاحقا في هذه المقالة.
  3. إنشاء مثيل تطبيق مدار يشير إلى تعريف التطبيق أو عرضAzure Marketplace.
  4. التحقق من تلقي الإعلامات.
  5. تمكين التخويل كما هو موضح في⁧⁩قسم مصادقة نقطة النهاية⁧⁩في هذه المقالة.
  6. متابعة التعليمات في⁧⁩قسم مخطط الإخطار⁧⁩في هذه المقالة لتوزيع طلبات الإخطار وتنفيذ منطق تسلسل العمل الخاص بك استنادًا إلى الإخطار.

إضافة إعلامات تعريف التطبيق كاتالوج الخدمة

توضح الأمثلة التالية كيفية إضافة URI لنقطة نهاية الإعلام باستخدام البوابة الإلكترونية أو REST API.

مدخل Azure

للبدء، راجع التشغيل السريع: إنشاء تعريف تطبيق مدار من Azure ونشره.

لقطة شاشة مدخل Microsoft 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⁧⁩.

لقطة شاشة لإعلامات التطبيق المُدارة في Azure Marketplace في مدخل Microsoft 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 وضمان صحة الإخطار:

  1. قم بتوفير معامِل طلب البحث أعلى عنوان URI للخطاف على الويب، مثل هذا: https://your-endpoint.com?sig=Guid. مع كل إخطار، افحص معلمة الاستعلام للتأكد أن⁧sig⁩لها القيمة المتوقعة⁧Guid⁩.
  2. قم بإصدار GET على طبعة التطبيق المُدار باستخدام applicationId. تحقق من مطابقة provisioningState الإشعار provisioningState لضمان الاتساق.

إعادة محاولة الإعلام

تتوقع خدمة إعلام التطبيق المُدار استجابة 200 OK من نقطة نهاية خطاف الويب للإعلام. ستعيد خدمة الإعلام المحاولة إذا قامت نقطة نهاية خطاف الويب بإرجاع رمز خطأ HTTP أكبر من أو يساوي 500، أو تقوم بإرجاع رمز خطأ 429، أو إذا كانت نقطة النهاية غير قابلة للوصول مؤقتًا. إذا لم تصبح نقطة نهاية خطاف الويب متاحة في غضون 10 ساعات، فسيتم تجاهل رسالة الإشعار، وستتوقف عمليات إعادة المحاولة.