Bildirimlerle Azure tarafından yönetilen uygulamalar

Azure yönetilen uygulama bildirimleri, yayımcıların yönetilen uygulama örneklerinin yaşam döngüsü olaylarına göre eylemleri otomatikleştirmesine olanak tanır. Yayımcılar, yeni ve mevcut yönetilen uygulama örnekleri hakkında olay bildirimleri almak için özel bir bildirim web kancası uç noktası belirtebilir. Yayımcılar uygulama sağlama, güncelleştirmeler ve silme sırasında özel iş akışları ayarlayabilir.

Başlarken

Yönetilen uygulama bildirimlerini almaya başlamak için genel bir HTTPS uç noktası oluşturun. Hizmet kataloğu uygulama tanımını veya Microsoft Azure Market teklifini yayımladığınızda uç noktayı belirtin.

Hızlı bir başlangıç yapmak için önerilen adımlar şunlardır:

  1. Gelen POST isteklerini günlüğe kaydeden ve döndüren 200 OKbir genel HTTPS uç noktası oluşturun.
  2. Uç noktayı bu makalenin devamında açıklandığı gibi hizmet kataloğu uygulama tanımına veya Azure Market teklifine ekleyin.
  3. Uygulama tanımına veya Azure Market teklifine başvuran bir yönetilen uygulama örneği oluşturun.
  4. Bildirimlerin alındığını doğrulayın.
  5. Bu makalenin Uç nokta kimlik doğrulaması bölümünde açıklandığı gibi yetkilendirmeyi etkinleştirin.
  6. Bildirim isteklerini ayrıştırmak ve bildirime göre iş mantığınızı uygulamak için bu makalenin Bildirim şeması bölümündeki yönergeleri izleyin.

Hizmet kataloğu uygulama tanımı bildirimleri ekleme

Aşağıdaki örneklerde portalı veya REST API'yi kullanarak bildirim uç noktası URI'sinin nasıl ekleneceği gösterilmektedir.

Azure portal

Başlamak için bkz . Hızlı Başlangıç: Azure Yönetilen Uygulama tanımı oluşturma ve yayımlama.

Hizmet kataloğu yönetilen uygulama tanımını ve bildirim uç noktasını gösteren Azure portal ekran görüntüsü.

REST API

Not

Yönetilen uygulama tanımının notificationEndpoints özelliğinde yalnızca bir uç nokta sağlayabilirsiniz.

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

yönetilen Azure Market uygulama bildirimleri ekleme

Daha fazla bilgi için bkz. Azure uygulama teklifi oluşturma.

Azure portal yönetilen Azure Market uygulama bildirimlerinin ekran görüntüsü.

Olay tetikleyicileri

Aşağıdaki tabloda ve provisioningState tetikleyicilerinin olası tüm bileşimleri eventType açıklanmaktadır:

Olay türü ProvisioningState Bildirim tetikleyicisi
PUT Kabul edildi Yönetilen kaynak grubu, uygulama PUT'sinin ardından (yönetilen kaynak grubu içindeki dağıtım başlatılmadan önce) başarıyla oluşturuldu ve yansıtıldı.
PUT Başarılı Yönetilen uygulamanın put sonrasında tam sağlanması başarılı oldu.
PUT Başarısız Herhangi bir noktada uygulama örneği sağlamanın PUT hatası.
YAMA Başarılı Etiketleri, JIT erişim ilkesini veya yönetilen kimliği güncelleştirmek için yönetilen uygulama örneğinde başarılı bir PATCH sonrasında.
DELETE Siliniyor Kullanıcı yönetilen bir uygulama örneğinin DELETE'ini başlattığı anda.
DELETE Silindi Yönetilen uygulama tam ve başarılı bir şekilde silindikten sonra.
DELETE Başarısız Sağlamayı kaldırma işlemi sırasında silme işlemini engelleyen herhangi bir hatadan sonra.

Bildirim şeması

Bildirimleri işlemek için web kancası uç noktanızı oluşturduğunuzda, önemli özellikleri almak için yükü ayrıştırarak bildirim üzerinde işlem yapmanız gerekir. Hizmet kataloğu ve Azure Market yönetilen uygulama bildirimleri aynı özelliklerin birçoğunu sağlar, ancak bazı farklılıklar vardır. applicationDefinitionId özelliği yalnızca hizmet kataloğu için geçerlidir. billingDetails ve plan özellikleri yalnızca Azure Market için geçerlidir.

Azure, /resource yönetilen uygulama tanımında sağladığınız bildirim uç noktası URI'sine ekler. Web kancası uç noktasının URI'de /resource bildirimleri işleyebilmesi gerekir. Örneğin, gibi https://fabrikam.com bir bildirim uç noktası URI'sini sağladıysanız web kancası uç noktası URI'sine sahip olursunuz https://fabrikam.com/resource.

Hizmet kataloğu uygulama bildirim şeması

Aşağıdaki örnekte, yönetilen uygulama örneğinin başarıyla sağlanmasından sonra bir hizmet kataloğu bildirimi gösterilmektedir.

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

Sağlama başarısız olursa, hata ayrıntılarını içeren bir bildirim belirtilen uç noktaya gönderilir.

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"
      }
    ]
  }
}

Uygulama bildirim şemasını Azure Market

Aşağıdaki örnekte, yönetilen uygulama örneğinin başarıyla sağlanmasından sonra bir hizmet kataloğu bildirimi gösterilmektedir.

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

Sağlama başarısız olursa, hata ayrıntılarını içeren bir bildirim belirtilen uç noktaya gönderilir.

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"
      }
    ]
  }
}
Özellik Açıklama
eventType Bildirimi tetikleyen olayın türü. (Örneğin, PUT, PATCH, DELETE.)
applicationId Bildirimin tetiklendiği yönetilen uygulamanın tam kaynak tanımlayıcısı.
eventTime Bildirimi tetikleyen olayın zaman damgası. (UTC ISO 8601 biçiminde tarih ve saat.)
provisioningState Yönetilen uygulama örneğinin sağlama durumu. Örneğin Başarılı, Başarısız, Silme, Silme.
applicationDefinitionId Yalnızca hizmet kataloğu yönetilen uygulamaları için belirtilir. Yönetilen uygulama örneğinin sağlandığı uygulama tanımının tam kaynak tanımlayıcısını temsil eder.
billingDetails Yalnızca yönetilen Azure Market uygulamalar için belirtilir. Yönetilen uygulama örneğinin faturalama ayrıntıları. resourceUsageId Kullanım ayrıntıları için Azure Market sorgulamak için kullanabileceğiniz öğesini içerir.
plan Yalnızca yönetilen Azure Market uygulamalar için belirtilir. Yönetilen uygulama örneğinin yayımcısını, teklifini, SKU'sunu ve sürümünü temsil eder.
error Yalnızca provisioningState Başarısız olduğunda belirtilir. Hataya neden olan sorunun hata kodunu, iletisini ve ayrıntılarını içerir.

Uç nokta kimlik doğrulaması

Web kancası uç noktasının güvenliğini sağlamak ve bildirimin orijinalliğini sağlamak için:

  1. Web kancası URI'sinin üstünde şu şekilde bir sorgu parametresi sağlayın: https://your-endpoint.com?sig=Guid. Her bildirimde sorgu parametresinin sig beklenen değere Guidsahip olup olmadığını denetleyin.
  2. kullanarak applicationIdyönetilen uygulama örneğinde bir GET oluşturun. Tutarlılığı sağlamak için bildirimin ile eşleştigini provisioningStateprovisioningState doğrulayın.

Bildirim yeniden denemeleri

Yönetilen uygulama bildirim hizmeti, web kancası uç noktasından bildirime bir 200 OK yanıt bekler. Web kancası uç noktası 500'den büyük veya buna eşit bir HTTP hata kodu döndürürse, 429 hata kodu döndürürse veya uç noktaya geçici olarak ulaşılamıyorsa bildirim hizmeti yeniden dener. Web kancası uç noktası 10 saat içinde kullanılabilir duruma gelmezse, bildirim iletisi bırakılır ve yeniden denemeler durur.