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 Iş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 Işlevine gönderirsiniz.

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

Azure İşlevi oluşturma

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

  1. İşlev uygulaması oluşturmayönergelerini kullanarak bir işlev uygulaması oluşturun.

  2. İşlev uygulaması sayfasında, Sol menüdeki işlevler ' i seçin.

  3. Bir işlev oluşturmak için araç çubuğunda + Oluştur ' u seçin.

  4. Işlev oluştur sayfasında, aşağıdaki adımları izleyin:

    1. Bu adım isteğe bağlıdır. Geliştirme ortamı için, işlev koduyla çalışmak üzere kullanmak istediğiniz geliştirme ortamını seçin.

    2. Şablon seçin bölümünde Azure Event Grid tetikleyicisi ' ni seçin.

    3. İşlev için bir ad girin. Bu örnekte, Handleeventsfunc olur.

      Event Grid tetikleyiciyi seçin.

  5. İşlevin varolan kodunu görmek ve güncelleştirmek için kod + test sayfasını kullanın.

    Bir Azure işlevi için seçim kodu + test menüsü gösteren resim.

Event Grid kaynak sağlayıcısını etkinleştirme

Azure aboneliğinizde daha önce Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısına kaydolmanız gerekebilir.

Azure portalında:

  1. Sol taraftaki menüden abonelikler ' i seçin.
  2. Event Grid için kullandığınız aboneliği seçin.
  3. Sol taraftaki menüde, Ayarlar' ın altında kaynak sağlayıcıları' nı seçin.
  4. Microsoft.EventGrid öğesini bulun.
  5. Kayıtlı değilse Kaydol'u seçin.

Kayıt işleminin tamamlanması biraz sürebilir. Durumu güncelleştirmek için Yenile’yi seçin. Durum****Kayıtlı olduğunda, devam etmeye hazırsınız demektir.

Özel konu oluşturma

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

  1. Azure portalda oturum açın.

  2. Sol gezinti menüsünde tüm hizmetler ' i seçin, Event Grid 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, araç çubuğunda + Ekle ' yi seçin.

    Bir olay Kılavuzu konusu oluşturmak için Oluştur düğmesini gösteren resim.

  4. Konu oluştur sayfasında, aşağıdaki 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ıdır ve yalnızca a-z, A-Z, 0-9 ve "-" değerlerini içermelidir.

    4. Olay Kılavuzu 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 resim.

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

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

    Event Grid özel konusunun ana sayfasını gösteren resim.

Özel konuya abone olma

Event Grid’e hangi olayları izlemek istediğinizi ve olayların nereye gönderileceğini bildirmek için bir Event Grid konusuna abone olursunuz.

  1. Şimdi, özel konu başlığı için 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, aşağıdaki adımları izleyin:

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

    2. Uç nokta türü Için Azure işlevi ' ni seçin.

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

      Olay aboneliği değerlerini gösteren resim.

    4. İşlev uç noktası için İşlev Uygulaması Azure aboneliğini ve kaynak grubunu seçin 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şlevin seçimini gösteren Azure Işlev Seç sayfasını gösteren resim.

    5. Bu adım isteğe bağlıdır, ancak üretim senaryolarında ö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 için değerleri kilobayt cinsinden ayarlayın.

      Toplu işleme size yüksek işlem hacmi verebilir. Toplu iş başına en fazla olay için, bir aboneliğin bir toplu işe dahil olacağı maksimum olay sayısını ayarlayın. Tercih edilen toplu iş boyutu, cihazının saniyede bayt cinsinden toplu iş boyutu için tercih edilen üst sınırı ayarlar, ancak tek bir olay bu eşikten büyükse aşılacak.

      Bir olay aboneliğinin 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 Cloud Shell' ni seçin. Cloud Shell penceresinin sol üst köşesindeki Bash ' i seçin.

    Cloud Shell-Bash penceresini gösteren resim

  2. Konunun uç noktasını almak için aşağıdaki komutu çalıştırın: komutunu 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 <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  3. Özel konunun anahtarını almak için aşağıdaki komutu çalıştırın: komutunu 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 <topic name> -g <resource group name> --query "key1" --output tsv)
    
  4. Aşağıdaki ifadeyi olay tanımıyla 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"} ]'
    
  5. Olayı göndermek için aşağıdaki kıvrımlı 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 Cloud Shell ' i seçin (alternatif olarak öğesine gidin https://shell.azure.com/ ). Cloud Shell penceresinin sol üst köşesindeki PowerShell ' i seçin. Azure CLı bölümünde ö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 = <resource group name>
    $topicName = <topic name>
    
  3. Aşağıdaki komutları çalıştırarak, konusunun uç noktasını ve anahtarlarını alı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ğrulama

Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi. Event Grid tetiklenen işleviniz ' ne gidin ve günlükleri açın. Günlüğe olay veri yükünün bir kopyasını görmeniz gerekir. Önce Günlükler penceresini açtığınızdan emin değilseniz veya yeniden bağlan ' ı yeniden deneyin ve ardından bir test olayını tekrar göndermeyi deneyin.

Azure işlevinin bir günlük ile Izleyici görünümünü gösteren resim.

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. Sol menüden Kaynak Grupları'ı seçin. Sol menüde görmüyorsanız, sol menüden Tüm Hizmetler'i ve ardından Kaynak Grupları'ı 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. Daha sonra Cloud Shell kullanmayı planlasanı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:

Farklı programlama dillerini kullanarak olayları yayımlama ve bu Event Grid kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın.