Aracılığıyla paylaş


Bildirimler içeren Azure 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 şekilde başlamak için önerilen adımlar şunlardır:

  1. Gelen POST isteklerini günlüğe kaydeden ve döndüren 200 OKgenel bir 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 yönetilen bir 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 dayalı olarak 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ının ekran görüntüsü.

REST API

Not

Yönetilen uygulama tanımının özelliğinde notificationEndpoints 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ında yönetilen Azure Market uygulama bildirimlerinin ekran görüntüsü.

Olay tetikleyicileri

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

EventType ProvisioningState Bildirim için tetikleyici
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ı Put sonrasında yönetilen uygulamanın tam sağlanması başarılı oldu.
PUT Başarısız Herhangi bir noktada uygulama örneği sağlamanın PUT hatası.
PATCH Başarılı Etiketleri, tam zamanında (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.
SİL Siliniyor Kullanıcı yönetilen bir uygulama örneğinin DELETE işlemini başlattığı anda.
SİL Silindi Yönetilen uygulamanın tam ve başarılı bir şekilde silinmesinden sonra.
SİL Başarısız Sağlamayı kaldırma işlemi sırasında silmeyi 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'si olur 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, belirtilen uç noktaya hata ayrıntılarını içeren bir bildirim 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, belirtilen uç noktaya hata ayrıntılarını içeren bir bildirim 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 Azure Market yönetilen 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 Azure Market yönetilen 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 kısmında şu şekilde bir sorgu parametresi sağlayın: https://your-endpoint.com?sig=Guid. Her bildirimde sorgu parametresinin sig beklenen değerine 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şdiğini provisioningState provisioningState 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üyorsa, 429 hata kodu döndürüyorsa veya uç noktaya geçici olarak ulaşılamıyorsa bildirim hizmeti yeniden denenir. Web kancası uç noktası 10 saat içinde kullanılamaz duruma gelirse, bildirim iletisi bırakılır ve yeniden denemeler durur.