Hızlı Başlangıç: Event Grid ile özel olayları azure işlevine yönlendirme

Azure Event Grid, bulut için bir olay oluşturma hizmetidir. Azure İşlevleri desteklenen olay işleyicilerinden biridir. Bu makalede, Azure portalını kullanarak özel bir konu oluşturur, bu özel konuya abone olur ve sonucu görüntülemek için olayı tetiklersiniz. Olayları bir Azure İşlevi'ne gönderirsiniz.

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

Azure işlev uygulaması oluşturma

  1. Azure Portal’ında oturum açın.

  2. Sol gezinti menüsünde Tüm hizmetler'i seçin.

  3. Kategoriler listesinde İşlem'i seçin.

  4. Fareyi İşlev Uygulaması'nın üzerine getirin (seçmeyin) ve öğesini seçin+.

    İşlev Uygulaması için Oluştur bağlantısı seçme işlemini gösteren ekran görüntüsü.

  5. İşlev Uygulaması Oluşturma sihirbazının Temel Bilgiler sayfasında şu adımları izleyin:

    1. İşlev uygulamasını oluşturmak istediğiniz Azure aboneliğinizi seçin.

    2. Yeni bir kaynak grubu oluşturun veya mevcut bir kaynak grubunu seçin.

    3. İşlev uygulaması için bir ad belirtin.

    4. Çalışma Zamanı yığını için .NET'i seçin.

    5. Sürüm için 6 (LTS), işlem içi model'i seçin.

    6. Size en yakın bölgeyi seçin.

    7. Sayfanın alt kısmındaki İleri: Depolama'yi seçin.

      İşlev Uygulaması Oluştur sayfasının Temel bilgiler sekmesini gösteren ekran görüntüsü.

  6. Depolama sayfasında yeni bir depolama hesabı oluşturun veya işlev uygulamasıyla ilişkilendirilecek mevcut bir depolama hesabını seçin ve ardından sayfanın alt kısmındaki Gözden Geçir ve oluştur'u seçin.

    İşlev Uygulaması Oluştur sayfasının Depolama sekmesini gösteren ekran görüntüsü.

  7. gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve sayfanın alt kısmındaki Oluştur'u seçerek işlev uygulamasını oluşturun.

  8. Dağıtım başarılı olduktan sonra kaynağa git'i seçerek işlev uygulamasının giriş sayfasına gidin.

İşlev oluşturma

Özel konuya abone olmadan önce olayları işlemek için bir işlev oluşturun.

  1. İşlev Uygulaması sayfasındaki Azure portalındaoluştur bölümünde sağ bölmedeki İşlev oluştur bağlantısı'nı seçin.

    İşlev oluştur bağlantısının seçimini gösteren ekran görüntüsü.

  2. İşlev Oluştur sayfasında şu adımları izleyin:

    1. Şablon seçin bölümünde, filtre veya arama kutusuna Azure Event Grid tetikleyicisi yazın.

    2. Şablon listesinden Azure Event Grid Tetikleyicisi şablonunu seçin.

    3. Sayfanın alt kısmındaki İleri'yi seçin.

      Event Grid tetikleyicisi seçmeyi gösteren ekran görüntüsü.

    4. Şablon ayrıntıları sayfasında işlev için bir ad girin. Bu örnekte HandleEventsFunc'dır.

    5. Oluştur'u belirleyin.

      Şablon ayrıntıları sayfasını gösteren ekran görüntüsü.

  3. HandleEventsFunc işlevinin İşlev sayfasında, sol gezinti menüsünde Kod + Test'i seçin, kodu aşağıdaki kodla değiştirin ve ardından komut çubuğunda Kaydet'i seçin.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

    Azure işlevi için Kod + Test menüsünü gösteren resim.

  4. Soldaki menüden İzleyici'yi seçin ve Günlükler sekmesine geçin. Alınan olay bilgilerini görebilmek için tarayıcının bu penceresini veya sekmesini açık tutun.

    azure işlevinin İzleyici görünümünü gösteren ekran görüntüsü.

Özel konu oluşturma

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

  1. Web tarayıcısı penceresinin yeni bir sekmesinde Azure portalında oturum açın.

  2. Konu başlığındaki arama çubuğunda Event Grid Konuları'nı arayın ve Event Grid Konuları'nı seçin.

    Event Grid konularının seçimini gösteren resim.

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

    Event Grid konu başlığı oluşturmak için 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. Önceki adımlardan aynı kaynak grubunu seçin.

    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. Gözden geçir ve oluştur’u seçin.

      Konu Oluştur sayfasını gösteren ekran görüntüsü.

    6. Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.

  5. Özel konu oluşturulduktan sonra, oluşturduğunuz konuya ilişkin aşağıdaki Event Grid konu sayfasını görmek için Kaynağa git bağlantısı'nı seçin.

    Event Grid özel konunuzun giriş sayfasını gösteren resim.

Ö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.

    Araç çubuğunda Olay Aboneliği Ekle seçimini gösteren resim.

  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 Azure İşlevi'ni seçin.

    3. Uç nokta yapılandır'ı seçin.

      Olay aboneliği değerlerini gösteren görüntü.

    4. İşlev uç noktası için İşlev Uygulamanızın içinde olduğu Azure Aboneliği ve Kaynak Grubu'na tıklayın ve ardından daha önce oluşturduğunuz İşlev Uygulaması ve işlevi seçin. Seçimi Onayla'yı seçin.

      Daha önce oluşturduğunuz işlev seçimini gösteren Azure İşlevi Seç sayfasını gösteren görüntü.

    5. Bu adım isteğe bağlıdır ancak üretim senaryoları için önerilir. Olay Aboneliği Oluştur sayfasında Gelişmiş Özellikler sekmesine geçin ve toplu iş başına en fazla olay ve Tercih edilen toplu iş boyutu değerlerini kilobayt olarak ayarlayın.

      Toplu işlem size yüksek aktarım hızı sağlayabilir. Toplu başına en fazla olay sayısı için, bir aboneliğin toplu işleme dahil edeceği en fazla olay sayısını ayarlayın. Tercih edilen toplu iş boyutu, toplu iş boyutunun tercih edilen üst sınırını kilo bayt cinsinden ayarlar, ancak tek bir olay bu eşikten büyükse aşılabilir.

      Olay aboneliği için toplu işlem ayarlarını gösteren resim.

    6. Olay Aboneliği Oluştur sayfasında Oluştur'u seçin.

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 penceresinin sol üst köşesindeki Bash'i seçin.

    Cloud Shell - Bash penceresini gösteren görüntü

  2. topicname Komutlarda kullanılacak ve resourcegroupname değişkenlerini ayarlayın.

    değerini Event Grid konunuzun adıyla değiştirin TOPICNAME .

    topicname="TOPICNAME"
    

    değerini Event Grid konusunu içeren Azure kaynak grubunun adıyla değiştirin RESOURCEGROUPNAME .

    resourcegroupname="RESOURCEGROUPNAME"
    
  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.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --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.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --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:

    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 penceresinin sol üst köşesinde PowerShell'i seçin. Azure CLI bölümündeki örnek Cloud Shell pencere görüntüsüne bakın.

  2. 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:

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. 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
    
  4. 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)+"]"
    
  5. 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}
    

İşlevin olayı aldığını doğrulayın

Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi.

  1. Azure işlevinizin İzleyici sayfasında bir çağrı görürsünüz.

    İzleyici sayfasının Çağrılar sekmesini gösteren ekran görüntüsü.

  2. Ayrıntıları görmek için çağrıyı seçin.

    Çağırma ayrıntılarını gösteren ekran görüntüsü.

  3. Ayrıca, konunun uç noktasına olay gönderirken günlüğe kaydedilen iletileri görmek için sağ bölmedeki Günlükler sekmesini de kullanabilirsiniz.

    Günlük içeren Azure işlevinin İzleyici görünümünü gösteren görüntü.

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.

  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.

    Kaynak grupları

    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

Artık konu oluşturma ve olay aboneliklerini öğrendiğinize göre, 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.