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:
- Gelen POST isteklerini günlüğe kaydeden ve döndüren
200 OK
bir genel HTTPS uç noktası oluşturun. - Uç noktayı bu makalenin devamında açıklandığı gibi hizmet kataloğu uygulama tanımına veya Azure Market teklifine ekleyin.
- Uygulama tanımına veya Azure Market teklifine başvuran bir yönetilen uygulama örneği oluşturun.
- Bildirimlerin alındığını doğrulayın.
- Bu makalenin Uç nokta kimlik doğrulaması bölümünde açıklandığı gibi yetkilendirmeyi etkinleştirin.
- 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.
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.
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:
- Web kancası URI'sinin üstünde şu şekilde bir sorgu parametresi sağlayın:
https://your-endpoint.com?sig=Guid
. Her bildirimde sorgu parametresininsig
beklenen değereGuid
sahip olup olmadığını denetleyin. - kullanarak
applicationId
yönetilen uygulama örneğinde bir GET oluşturun. Tutarlılığı sağlamak için bildirimin ile eşleştiginiprovisioningState
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ü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.