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

    Screenshot showing the select of Create link for a Function App.

  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. Size en yakın bölgeyi seçin.

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

      Screenshot showing the Basics tab of the Create Function App page.

  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.

    Screenshot showing the Storage tab of the Create Function App page.

  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ında, sağ bölmedeki Azure portalında oluştur bağlantısını seçin.

    Screenshot showing the selection of Create function link.

  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. Alt bölmedeki Şablon ayrıntıları bölümünde işlev için bir ad girin. Bu örnekte HandleEventsFunc'dır.

    4. Oluştur’u seçin.

      Screenshot showing select Event Grid trigger.

  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());
    }        
    

    Image showing the selection Code + Test menu for an Azure function.

  4. Soldaki menüden İzleyici'yi seçin ve alınan olay bilgilerini görebilmeniz için tarayıcının bu penceresini veya sekmesini açık tutun.

    Screenshot showing the Monitor view the Azure function.

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

    Image showing the selection of Event Grid topics.

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

    Screenshot showing the Create button to create an Event Grid topic.

  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.

      Screenshot showing the Create Topic page.

    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.

    Image showing the home page for your Event Grid custom topic.

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

    Image showing the selection of Add Event Subscription on the toolbar.

  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.

      Image showing event subscription values.

    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.

      Image showing the Select Azure Function page showing the selection of function you created earlier.

    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.

      Image showing batching settings for an event subscription.

    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.

    Image showing Cloud Shell - Bash window

  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.

    Screenshot showing the Invocations tab of the Monitor page.

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

    Screenshot showing the Invocation details.

  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.

    Image showing the Monitor view of the Azure function with a log.

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.

    Resource groups

    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.