Azure İlkesi durum değişikliği olaylarına tepki verme

Azure İlkesi olaylar, uygulamaların durum değişikliklerine tepki vermesine olanak tanır. Bu tümleştirme, karmaşık koda veya pahalı ve verimsiz yoklama hizmetlerine gerek kalmadan gerçekleştirilir. Bunun yerine olaylar Azure Event Grid aracılığıyla Azure İşlevleri, Azure Logic Apps gibi abonelere ve hatta kendi özel HTTP dinleyicinize iletilir. Kritik olarak, yalnızca kullandığınız kadar ödersiniz.

Azure İlkesi olayları, zengin yeniden deneme ilkeleri ve teslim edilemeyen teslim aracılığıyla uygulamalarınıza güvenilir teslim hizmetleri sağlayan Azure Event Grid'e gönderilir. Event Grid, Event Grid abonelikleri aracılığıyla olayların hedeflere doğru şekilde yönlendirilmesi, filtrelenmesi ve çok noktaya yayınlanmasıyla ilgilenir. Daha fazla bilgi edinmek için bkz . Event Grid ileti teslimi ve yeniden deneme.

Not

Azure İlkesi durum değişikliği olayları, bir değerlendirme tetikleyicisi kaynak değerlendirmesini tamamladıktan sonra Event Grid'e gönderilir.

Kaynak uyumluluk durumu değişiklikleri için Event Grid bildirimleri 20 dakikaya kadar sürebilir.

Event Grid Avantajları

Event Grid'in Azure ekosistemindeki müşteriler ve hizmetler için birkaç avantajı vardır:

  • Otomasyon: İlke ortamınızla güncel kalmak için Event Grid, uyumluluk durumlarına bağlı olarak uyarılar oluşturmak ve görevleri tetikleyen otomatik bir mekanizma sunar.
  • Dayanıklı teslim: Hizmetlerin ve kullanıcı uygulamalarının ilke uyumluluğu olaylarına gerçek zamanlı olarak yanıt verebilmesi için Event Grid, en düşük gecikme süresine sahip ilke olayları sunmaya çalışır. Event Grid, abonenin uç noktasının alınıp alınmadığını kabul etmemesi durumunda veya önceden belirlenmiş bir yeniden deneme zamanlaması ve yeniden deneme ilkesine göre olayın iletimini yeniden dener.
  • Özel olay üreticisi: Event Grid olay üreticilerinin ve tüketicilerinin Azure veya Microsoft hizmetleri olması gerekmez. Dış uygulamalar bir uyarı alabilir, düzeltme görevinin oluşturulmasını gösterebilir veya durum değişikliğine kimin yanıt verdiğine ilişkin iletiler toplayabilir. Tam öğretici için bkz . Azure CLI ile ilke durumu değişiklik olaylarını Event Grid'e yönlendirme.

Event Grid kullanılırken iki birincil varlık vardır:

  • Olaylar: Bu olaylar, bir kullanıcının tepki vermek isteyebileceği her şey olabilir; buna ilke uyumluluk durumu oluşturulup oluşturulmaması, değiştirilmesi ve vm veya depolama hesapları gibi bir kaynakta silinmesi de dahildir.
  • Event Grid Abonelikleri: Bu olay abonelikleri, bir yayımcıdan aboneye uygun olay kümesini yönlendiren kullanıcı tarafından yapılandırılmış varlıklardır. Olay abonelikleri olayları, olayın kaynak yoluna ve olay türüne göre filtreleyebilir. Ayrıca Olay Abonelikleri, Azure aboneliği ile Yönetim grubu arasındaki kapsama göre de filtreleyebilir.

yaygın bir Azure İlkesi olay senaryosu, ilke değerlendirmesi sırasında bir kaynağın uyumluluk durumunun ne zaman değiştiğini izlemektir. Olay tabanlı mimari, uyumluluk durumu değişikliklerine olay tabanlı tepkide bu değişikliklere ve yardımlara tepki vermenin etkili bir yoludur.

Bir diğer senaryo da, ilke sayfasında düzeltme oluşturma görevini el ile işaretlemeden düzeltme görevlerini otomatik olarak tetiklemedir. Event Grid uyumluluk durumunu denetler ve şu anda uyumsuz olan kaynaklar düzeltilebilir. Düzeltme yapısı hakkında daha fazla bilgi edinin. Düzeltme, yönetilen bir kimlik gerektirir ve ilkelerin Modify veya DeployIfNotExists etkisinde olması gerekir. Efekt türleri hakkında daha fazla bilgi edinin.

Ayrıca Event Grid, durum değişikliklerini depolamak ve zaman içinde uyumsuzluğun nedenini anlamak için bir denetim sistemi olarak yararlıdır. Event Grid senaryoları sonsuzdur ve motivasyona bağlı olarak Event Grid yapılandırılabilir.

Screenshot of Event Grid model of sources and handlers.

Kullanılabilir olay türleri

Azure İlkesi aşağıdaki olay türlerini yayar:

Olay türü Açıklama
Microsoft.Policy Analizler. PolicyStateCreated İlke uyumluluk durumu oluşturulduğunda oluşturulur.
Microsoft.Policy Analizler. PolicyStateChanged İlke uyumluluk durumu değiştirildiğinde oluşturulur.
Microsoft.Policy Analizler. PolicyStateDeleted İlke uyumluluk durumu silindiğinde oluşturulur.

Olay özellikleri

Bir olay aşağıdaki üst düzey verilere sahiptir:

Özellik Türü Veri Akışı Açıklaması
topic Dize Olay kaynağının tam kaynak yolu. Bu alan yazılabilir değil. Event Grid bu değeri sağlar.
subject Dize Kaynak adı ve kaynak türü de dahil olmak üzere uyumluluk durumu değişikliğinin olduğu kaynağın tam kimliği. Biçimini kullanır, /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>
eventType Dize Bu olay kaynağı için kayıtlı olay türlerinden biri.
eventTime Dize Sağlayıcının UTC saati temelinde olayın oluşturulduğu saat.
id Dize Olayın benzersiz tanımlayıcısı.
data nesne Olay verilerini Azure İlkesi.
dataVersion Dize Veri nesnesinin şema sürümü. Şema sürümünü yayımcı tanımlar.
metadataVersion Dize Olay meta verilerinin şema sürümü. Event Grid en üst düzey özelliklerin şemasını tanımlar. Event Grid bu değeri sağlar.

Veri nesnesi aşağıdaki özelliklere sahiptir:

Özellik Türü Veri Akışı Açıklaması
timestamp Dize Kaynağın Azure İlkesi tarafından tarandığı saat (UTC olarak). Olayları sıralamak için üst düzey eventTime veya time özellikler yerine bu özelliği kullanın.
policyAssignmentId Dize İlke atamasının kaynak kimliği.
policyDefinitionId Dize İlke tanımının kaynak kimliği.
policyDefinitionReferenceId Dize İlke ataması bir girişime yönelikse girişim tanımının içindeki ilke tanımının başvuru kimliği. Boş olabilir.
complianceState Dize İlke atamasıyla ilgili olarak kaynağın uyumluluk durumu.
subscriptionId Dize Kaynağın abonelik kimliği.
complianceReasonCode Dize Uyumluluk nedeni kodu. Boş olabilir.

Örnek olay

Aşağıdaki örnek, abonelik düzeyinde kapsamı belirlenmiş bir ilke durumu oluşturulan olayın şemasını gösterir:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Abonelik düzeyinde kapsamı değiştirilmiş bir ilke durumunun şeması benzerdir:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Aşağıdaki örnek, yönetim grubu düzeyinde kapsamı belirlenmiş bir ilke durumu oluşturulan olayın şemasını gösterir:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Yönetim grubu düzeyinde kapsamı değiştirilen bir ilke durumu olayının şeması benzerdir:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

Olayları kullanma yöntemleri

Azure İlkesi olayları işleyen uygulamalar şu önerilen uygulamaları izlemelidir:

  • Birden çok abonelik, olayları aynı olay işleyicisine yönlendirecek şekilde yapılandırılabilir, bu nedenle olayların belirli bir kaynaktan olduğunu varsaymayın. Bunun yerine, durum değişikliği olayının için ilke ataması, ilke tanımı ve kaynak olduğundan emin olmak için iletinin konusuna bakın.
  • eventType öğesini denetleyin ve aldığınız tüm olayların beklediğiniz tür olduğunu varsaymayın.
  • En üst düzey eventTime veya time özellikler yerine Azure İlkesi olaylarının sırasını belirlemek için kullanındata.timestamp.
  • İlke durumu değişikliği olan kaynağa erişmek için konu alanını kullanın.

Sonraki adımlar

Event Grid hakkında daha fazla bilgi edinin ve Azure İlkesi durum değişikliği olaylarını deneyin: