Aracılığıyla paylaş


Azure portalı ve Azure Event Grid ile özel olayları web uç noktasına yönlendirme

Event Grid, birçok farklı Azure hizmeti ve uygulamasındaki olayları kolayca yönetmenizi sağlayan tam olarak yönetilen bir hizmettir. Olay odaklı ve sunucusuz uygulamalar derlemeyi kolaylaştırır. Hizmete genel bakış için bkz . Event Grid'e genel bakış.

Bu makalede, aşağıdaki görevleri gerçekleştirmek için Azure portalını kullanırsınız:

  1. Özel bir konu oluşturun.
  2. Özel konuya abone olun.
  3. Olayı tetikleme.
  4. Sonucu görüntüleyin. Normalde olayları, olay verilerini işleyen ve eylemler gerçekleştiren bir uç noktaya gönderirsiniz. Bununla birlikte, bu makaleyi basitleştirmek için olayları iletilerin toplandığı ve görüntülendiği bir web uygulamasına gönderirsiniz.

Önkoşullar

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Event Grid kaynak sağlayıcısını kaydetme

Event Grid'i daha önce kullanmadıysanız Event Grid kaynak sağlayıcısını kaydetmeniz gerekir. Event Grid'i daha önce kullandıysanız sonraki bölüme geçin.

Azure portalında aşağıdaki adımları uygulayın:

  1. Soldaki menüde Abonelikler'i seçin.

  2. Abonelik listesinden Event Grid için kullanmak istediğiniz aboneliği seçin.

  3. Abonelik sayfasında, soldaki menüden Ayarlar altında Kaynak sağlayıcıları'nı seçin.

  4. Microsoft.EventGrid'i arayın ve Durum'un Kayıtlı Olmadığını onaylayın.

  5. Sağlayıcı listesinden Microsoft.EventGrid'i seçin.

  6. Komut çubuğunda Kaydet'i seçin.

    Microsoft.EventGrid sağlayıcısının Azure aboneliğine kaydını gösteren görüntü.

  7. Microsoft.EventGrid'in durumunun Kayıtlı olarak değiştirildiğinden emin olmak için yenileyin.

    Microsoft.EventGrid sağlayıcısının Azure aboneliğine başarıyla kaydedilmesini gösteren görüntü.

Özel konu oluşturma

Event Grid konusu, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar.

  1. Azure portalda oturum açın.

  2. Konu başlığındaki arama çubuğuna Event Grid Konuları yazın ve açılan listeden Event Grid Konuları'nı seçin.

    Event Grid konularını aramak için Azure bağlantı noktası arama çubuğunu gösteren ekran görüntüsü.

  3. Event Grid Konuları sayfasında araç çubuğunda + Oluştur'u seçin.

    Event Grid konuları sayfasındaki Konu Oluştur düğmesini gösteren ekran görüntüsü.

  4. Konu Oluştur sayfasında şu adımları izleyin:

    1. Azure aboneliğinizi seçin.

    2. Mevcut bir kaynak grubunu seçin veya Yeni oluştur'u seçin ve kaynak grubu için bir ad girin.

    3. Özel konu için benzersiz bir ad sağlayın. Konu adı bir DNS girdisi ile temsil edildiğinden konu adı benzersiz olmalıdır. Görüntüde gösterilen adı kullanmayın. Bunun yerine kendi adınızı oluşturun; 3-50 karakter arasında olmalı ve yalnızca a-z, A-Z, 0-9 ve "-" değerlerini içermelidir.

    4. Event Grid konusu için bir konum seçin.

    5. Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.

      Konu Oluştur sayfası

    6. Konu başlığı oluştur sayfasının Gözden geçir + oluştur sekmesinde Oluştur'u seçin.

      Ayarları gözden geçirme ve oluşturma

  5. Dağıtım başarılı olduktan sonra Kaynağa git'i seçerek konunuzun Event Grid Konu sayfasına gidin. Bu sayfayı açık tutun. Bunu daha sonra hızlı başlangıçta kullanacaksınız.

    Event Grid konu başlığının giriş sayfasını gösteren ekran görüntüsü.

    Not

    Hızlı başlangıcı basit tutmak için yalnızca Temel Bilgiler sayfasını kullanarak bir konu oluşturacaksınız. Sihirbazın diğer sayfalarında ağ, güvenlik ve veri yerleşimi ayarlarını yapılandırma hakkında ayrıntılı adımlar için bkz . Özel konu oluşturma.

İleti uç noktası oluşturma

Özel konu için bir abonelik oluşturmadan önce olay iletisi için bir uç nokta oluşturun. Normalde, olay verileri temelinde uç nokta eylemleri gerçekleştirir. Bu hızlı başlangıcı basitleştirmek için, olay iletilerini görüntüleyen önceden oluşturulmuş bir web uygulaması dağıtacaksınız. Dağıtılan çözüm bir App Service planı, App Service web uygulaması ve GitHub'dan kaynak kod içerir.

  1. Çözümü aboneliğinize dağıtmak için makale sayfasında Azure'a dağıt'ı seçin. Azure portalında parametre değerlerini girin.

    Resource Manager şablonunu Azure'a dağıtma düğmesi.

  2. Özel dağıtım sayfasında aşağıdaki adımları uygulayın:

    1. Kaynak grubu için mevcut bir kaynak grubunu seçin veya bir kaynak grubu oluşturun.

    2. Site Adı için web uygulaması için bir ad girin.

    3. Barındırma planı adı için, web uygulamasını barındırmak için kullanılacak App Service planı için bir ad girin.

    4. Gözden geçir ve oluştur’u seçin.

      Özel dağıtım sayfasını gösteren ekran görüntüsü.

  3. Gözden Geçir + oluştur sayfasında Oluştur'u seçin.

  4. Dağıtımın tamamlanması birkaç dakika sürebilir. Portalda Uyarılar 'ı (zil simgesi) ve ardından Kaynak grubuna git'i seçin.

    Kaynak grubuna gitmek için bir bağlantı içeren başarılı dağıtım iletisini gösteren ekran görüntüsü.

  5. Kaynak grubu sayfasındaki kaynak listesinde, oluşturduğunuz web uygulamasını (aşağıdaki örnekte contosoegriviewer) seçin.

    Dağıtılan kaynakları içeren Kaynak Grubu sayfasını gösteren ekran görüntüsü.

  6. Web uygulamanızın App Service sayfasında, web sitesine gitmek için URL'yi seçin. URL şu biçimde olmalıdır: https://<your-site-name>.azurewebsites.net.

    Site bağlantısının vurgulandığı App Service sayfasını gösteren ekran görüntüsü.

  7. Siteyi gördüğünüzden ancak henüz hiçbir olay gönderilmediğinden emin olun.

    Event Grid Görüntüleyicisi örnek uygulamasını gösteren ekran görüntüsü.

Özel konuya abone olma

Event Grid konusuna abone olarak Event Grid'e hangi olayları izlemek istediğinizi ve olayların nereye gönderileceği açıklanır.

  1. Şimdi, özel konunuzun Event Grid Konu sayfasında araç çubuğunda + Olay Aboneliği'ni seçin.

    Olay aboneliği ekle düğmesi

  2. Olay Aboneliği Oluştur sayfasında şu adımları izleyin:

    1. Olay aboneliği için bir ad girin.

    2. Uç nokta türü için Web Kancası'nı seçin.

    3. Uç nokta seçin'i seçin.

      Olay abonelik değerlerini sağlama

    4. Web kancası uç noktası için web uygulamanızın URL'sini girin ve ana sayfa URL'sine api/updates ekleyin. Seçimi Onayla'yı seçin.

      Uç nokta URL'si sağlama

    5. Olay Aboneliği Oluştur sayfasına dönüp Oluştur'u seçin.

  3. Web uygulamanızı yeniden görüntüleyin ve buna bir abonelik doğrulama olayının gönderildiğine dikkat edin. Göz simgesini seçerek olay verilerini genişletin. Uç noktanın olay verilerini almak istediğini doğrulayabilmesi için Event Grid doğrulama olayını gönderir. Web uygulaması aboneliği doğrulamak için kod içerir.

    Abonelik Doğrulanmış olayını içeren Event Grid Görüntüleyicisi uygulamasının ekran görüntüsü.

Konunuza olay gönderme

Şimdi, Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim. Özel konunuza bir test olayı göndermek için Azure CLI veya PowerShell kullanın. Normalde olay verilerini bir uygulama veya Azure hizmeti gönderir.

Birinci örnekte, Azure CLI kullanılmaktadır. Özel konunun URL’si ve anahtarı ile örnek olay verilerini alır. <topic name> yerine özel konunuzun adını yazın. Örnek olay verileri oluşturulur. JSON’un data öğesi, olayınızın yüküdür. Bu alana doğru oluşturulmuş herhangi bir JSON gelebilir. Ayrıca, gelişmiş yönlendirme ve filtreleme için konu alanını da kullanabilirsiniz. CURL, HTTP istekleri gönderen bir yardımcı programdır.

Azure CLI

  1. Azure portalında Cloud Shell'i seçin. Cloud Shell, web tarayıcısının alt bölmesinde açılır.

    Cloud Shell simgesini seçin

  2. Cloud Shell penceresinin sol üst köşesindeki Bash'i seçin.

    Sol üst köşede Bash'in seçili olduğu Cloud Shell'i gösteren ekran görüntüsü.

  3. Konunun uç noktasını almak için aşağıdaki komutu çalıştırın: Komutu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin. Örnek olayları bu konu uç noktasına yayımlarsınız.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Özel konunun anahtarını almak için aşağıdaki komutu çalıştırın: Komutu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin. Event Grid konusunun birincil anahtarıdır. Bu anahtarı Azure portalından almak için Event Grid Konu Sayfasının Erişim anahtarları sekmesine geçin. Bir olayı özel bir konuya gönderebilmek için erişim anahtarına ihtiyacınız vardır.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Olay tanımıyla aşağıdaki deyimi kopyalayın ve ENTER tuşuna basın.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
    
  6. Olayı göndermek için aşağıdaki Curl komutunu çalıştırın: Komutun üst bilgisi daha aeg-sas-key önce edindiğiniz erişim anahtarına ayarlanır.

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

İkinci örnek, benzer adımları gerçekleştirmek için PowerShell'i kullanır.

  1. Azure portalında Cloud Shell'i seçin (alternatif olarak adresine https://shell.azure.com/gidin). Cloud Shell, web tarayıcısının alt bölmesinde açılır.

    Cloud Shell simgesini seçin

  2. Cloud Shell'de Cloud Shell penceresinin sol üst köşesindeki PowerShell'i seçin. Azure CLI bölümündeki örnek Cloud Shell pencere görüntüsüne bakın.

  3. Aşağıdaki değişkenleri ayarlayın. Her komutu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin:

    Kaynak grubu:

    $resourceGroupName = "<resource group name>"
    

    Event Grid konu adı:

    $topicName = "<topic name>"
    
  4. Konunun uç noktasını ve anahtarlarını almak için aşağıdaki komutları çalıştırın:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. Olayı hazırlayın. Cloud Shell penceresinde deyimleri kopyalayın ve çalıştırın.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  6. Olayı göndermek için Invoke-WebRequest cmdlet'ini kullanın.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Event Grid Görüntüleyicisi'nde doğrulama

Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi. Az önce gönderdiğiniz olayı görmek için web uygulamanızı görüntüleyin.

Event Grid Görüntüleyicisi

Kaynakları temizleme

Bu olayla çalışmaya devam etmeyi planlıyorsanız bu makalede oluşturulan kaynakları temizlemeyin. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silin.

  1. Soldaki menüden Kaynak Grupları'nı seçin. Sol menüde görmüyorsanız, soldaki menüden Tüm Hizmetler'i ve kaynak grupları'nı seçin.

    Kaynak Grupları sayfasını gösteren ekran görüntüsü.

  2. Kaynak grubu sayfasını başlatmak için kaynak grubunu seçin.

  3. Araç çubuğunda Kaynak grubunu sil'i seçin.

  4. Kaynak grubunun adını girerek silme işlemini onaylayın ve Sil'i seçin.

    Görüntüde gördüğünüz diğer kaynak grubu Cloud Shell penceresi tarafından oluşturulmuş ve kullanılmıştır. Cloud Shell penceresini daha sonra kullanmayı planlamıyorsanız silin.

Sonraki adımlar

Özel konu ve olay abonelikleri oluşturma işlemini öğrendiğinize göre artık Event Grid’in size nasıl yardımcı olabileceği konusunda daha fazla bilgi edinebilirsiniz:

Event Grid'de olayları farklı programlama dilleri kullanarak yayımlama ve kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın.