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

Bu hızlı başlangıçta, Visual Studio Code'ta bir Event Grid tetikleyicisi ile bir fonksiyon oluşturuyor, Azure portalında bir Event Grid konusu ve bir etkinlik aboneliği oluşturuyor, ardından Event Grid'in özel olayları Azure fonksiyonunuza nasıl yönlendirdiğini görmek için bir test etkinliği gönderiyorsunuz.

Azure Event Grid, bulut için bir kaynaktan bir işleyiciye olaylar ileten bir olay-yönlendirme hizmetidir. Azure İşlevleri, desteklenen olay işleyicilerinden biridir. İkisini birleştirerek, değişiklikler için anket yapmadan veya altyapı yönetmeden olaylara yanıt olarak kodu otomatik çalıştırabilirsiniz.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Önkoşullar

Visual Studio Code kullanarak Event Grid tetikleyicisi ile işlev oluşturma

Bu bölümde, Visual Studio Code kullanarak Event Grid tetikleyicisi ile işlev oluşturacaksınız.

İşlev oluşturma

  1. Visual Studio Code'u açın.

  2. Sol çubukta Azure'ı seçin.

  3. Sol bölmedeki ÇALIŞMA ALANI bölümünde, komut çubuğunda Azure İşlevleri'ni seçin. Ardından İşlev Oluştur'u seçin.

    İşlev oluşturmaya yönelik menü komutuyla Visual Studio Code'un Azure sekmesini gösteren ekran görüntüsü.

  4. İşlev kodunu kaydetmek istediğiniz klasörü seçin.

  5. Yeni proje oluştur komutu için Dil için C# öğesini seçin. Gir'i seçin.

    Azure işlevi geliştirme dili olarak C Sharp seçimini gösteren ekran görüntüsü.

  6. .NET çalışma zamanı için .NET 8.0 Yalıtılmış LTS'yi ve ardından Enter'ı seçin.

  7. İşlevin Şablonu içinAzure Event Grid tetikleyicisi'ni seçin. Gir'i seçin.

  8. İşlev adı için işleviniz için bir ad girin. Gir'i seçin.

  9. Ad Alanı alanına işlevin ad alanı için bir ad girin. Gir'i seçin.

  10. Projeyi geçerli pencerede veya yeni bir pencerede açın veya bir çalışma alanına ekleyin.

  11. İşlevin oluşturulmasını bekleyin. İşlev oluşturma durumu sağ alt köşede görünür.

    İşlev oluşturma durumunu gösteren ekran görüntüsü.

  12. YourFunctionName.cs dosyasındaki kodu, özellikle Run yöntemini görüntüleyin. Bilgiyi bir logger kullanarak yazdırır.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

İşlevi Azure’a dağıtma

  1. Azure bölmesi henüz açık değilse sol çubukta Azure düğmesini seçin.

  2. Projenizin üzerine gelin ve Azure'a Dağıt düğmesini seçin.

    Azure'a dağıtma düğmesini gösteren ekran görüntüsü.

  3. Komut paletinin açılan listesinde + Yeni işlev uygulaması oluştur'u ve ardından Enter'ı seçin.

  4. Ad alanına yeni işlev uygulaması için genel olarak benzersiz bir ad girin. Gir'i seçin.

  5. Çalışma zamanı yığını için .NET 8 Isolated seçin.

  6. Azure kaynaklarınızın Konumu için size yakın bir bölge seçin.

  7. İşlev uygulaması oluşturma durumu, alt bölmenin AZURE sekmesinde görünür. İşlev uygulaması oluşturulduktan sonra, yerel olarak oluşturduğunuz işlevi işlev uygulamasına dağıtma durumunu görürsünüz.

  8. Dağıtım başarılı olduktan sonra İşlev Uygulaması Oluştur başarılı iletisini genişletin. Kaynağı görüntülemek için Tıklayın'ı seçin. sol bölmedeki KAYNAKLAR bölümünde işlevinizin seçili olduğunu onaylayın.

  9. İşlevinize sağ tıklayın ve portalda aç'ı seçin.

    Portalda işlev açma seçimlerini gösteren ekran görüntüsü.

  10. Gerekirse Azure'da oturum açın ve işleviniz için İşlev Uygulaması sayfasının göründüğünü onaylayın.

  11. Alt bölmede işlevinizi seçin.

    İşlev Uygulaması sayfasında bir Azure işlevinin seçimini gösteren ekran görüntüsü.

  12. Günlükler sekmesine geçin. Bu sekmeyi açık tutarak bu makalenin devamında bir Event Grid konusuna olay gönderdiğinizde günlüğe kaydedilen iletileri görebilirsiniz.

    Azure portalında bir işlevin Günlükler sekmesini gösteren ekran görüntüsü.

Bir Event Grid özel konusu oluşturun

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. Üstteki arama çubuğunda Event Grid Topics diye arama yapın ve ardından Event Grid Topics'i seçin.

    Event Grid konularının seçimini gösteren ekran görüntüsü.

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

    Event Grid konu başlığı oluşturmaya yönelik düğmeyi gösteren ekran görüntüsü.

  4. Konu Oluştur bölmesinde şu adımları izleyin:

    1. Abonelik için Azure aboneliğinizi seçin.

    2. Kaynak grubu için önceki adımlardan aynı kaynak grubunu seçin.

    3. Name için, özel konuya benzersiz bir ad girin. Bir Etki Alanı Adı Sistemi (DNS) girdisi bunu temsil ettiğinden konu adı benzersiz olmalıdır.

      Örnek görüntüde gösterilen adı kullanmayın. Bunun yerine, kendi adınızı oluşturun. 3-50 karakter uzunluğunda olmalı ve yalnızca a-z, A-Z, 0-9 ve kısa çizgi (-) değerlerini içermelidir.

    4. Bölge için Event Grid konusu için bir konum seçin.

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

      Konu oluşturmaya yönelik bölmeyi gösteren ekran görüntüsü.

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

  5. Özel konu oluşturulduktan sonra Kaynağa git butonunu seçerek o konunun Event Grid Konusu sayfasını açın.

    Event Grid özel konusunun sayfasını gösteren ekran görüntüsü.

Event Grid'in özel konusuna abone olun

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

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

    Araç çubuğuna olay aboneliği ekleme düğmesini gösteren ekran görüntüsü.

  2. Olay Aboneliği Oluştur bölmesinde şu adımları izleyin:

    1. Ad alanına, olay aboneliği için bir ad girin.

    2. Olay Şeması için Bulut Olay Şeması v1.0'ı seçin.

    3. Uç Nokta Türü için Azure İşlevi'ne tıklayın.

    4. Bir uç nokta yapılandır seçeneğini seçin.

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

  3. Azure İşlevi Seç bölmesinde şu adımları izleyin:

    1. Abonelik için işlevi olan Azure aboneliğini seçin.

    2. Kaynak grubu için işlevi olan kaynak grubunu seçin.

    3. İşlev uygulaması için işlev uygulamanızı seçin.

    4. Function için, işlev uygulamasındaki işlevi seçin.

    5. Seçimi Onayla'yı seçin.

      Daha önce oluşturulmuş bir Azure işlevini seçme bölmesini gösteren ekran görüntüsü.

  4. Bu adım isteğe bağlıdır, ancak üretim senaryoları için önerilir. Olay Aboneliği Oluştur bölmesinde Ek Özellikler sekmesine gidin ve toplu iş başına en fazla olay ve Kilobayt cinsinden Tercih edilen toplu iş boyutu değerlerini ayarlayın.

    Toplu işleme size yüksek aktarım hızı sağlayabilir. Toplu iş başına en fazla olay sayısı için, bir aboneliğin toplu işleme dahil olduğu en fazla olay sayısını ayarlayın. Kilobayt cinsinden tercih edilen toplu iş boyutu, toplu iş boyutunun tercih edilen üst sınırını 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 ekran görüntüsü.

  5. Olay Aboneliği Oluştur bölmesinde Oluştur'u seçin.

Event Grid konusuna bir test etkinliği gönderin

Şimdi Event Grid'in iletiyi uç noktanıza nasıl dağıttığnı görmek için bir olay tetikle. Özel konunuza test olayı göndermek için Azure CLI veya Azure PowerShell kullanın. Genellikle, bir uygulama veya Azure servisi olay verisini gönderir.

İlk örnekte Azure CLI kullanılmaktadır. Özel konu ve örnek olay verilerinin URL'sini ve anahtarını alır. topicname 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 geçerli biçimdeki herhangi bir JSON girilebilir. Ayrıca, gelişmiş yönlendirme ve filtreleme için konu alanını da kullanabilirsiniz.

cURL aracı HTTP istekleri gönderir. Bu makalede, olayı özel konuya göndermek için cURL kullanacaksınız.

Azure Komut Satırı Arayüzü (Azure CLI)

  1. Azure portalında Cloud Shell'i seçin. Azure PowerShell modundaysanız, Bash'e geç seçeneğini belirleyin.

    Azure Cloud Shell'de Bash penceresini gösteren ekran görüntüsü.

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

    TOPICNAME öğesini Event Grid konu başlığınızın adıyla değiştirin.

    topicname="TOPICNAME"
    

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

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. Konunun uç noktasını almak için aşağıdaki komutu kullanın. Komutu kopyalayıp yapıştırdıktan sonra, ç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 kullanın. Komutu kopyalayıp yapıştırdıktan sonra, ç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
    
  7. İşlevden gelen iletinin Azure portalındaki işlevinizin Günlükler sekmesinde göründüğünü onaylayın.

    Azure işlevinin Günlükler sekmesini gösteren ekran görüntüsü.

Azure PowerShell

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

  1. Azure portalında Cloud Shell'i seçin veya Azure Cloud Shell sayfasına gidin. Cloud Shell penceresinin sol üst köşesinde PowerShell'e geç'i seçin.

  2. Aşağıdaki değişkenleri ayarlayın. Her komutu kopyalayıp yapıştırdıktan sonra, ç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 şu 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 the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're 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}
    
  6. İşlevden gelen iletinin Azure portalındaki işlevinizin Günlükler sekmesinde göründüğünü onaylayın.

    bir işlevin Günlükler sekmesini gösteren ekran görüntüsü.

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

Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi. Artık fonksiyonun bunu alıp almadığını da kontrol edebilirsiniz.

  1. İşlevinizin Çağırma sekmesini açın.

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

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

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

    Günlükler sekmesini de kullanabilirsiniz.

    Günlük kaydı içeren bir işlevin İzleme görünümünü gösteren ekran görüntüsü.

Kaynakları temizleme

Bu olayla çalışmaya devam etmek istiyorsanız, bu makalede oluşturduğunuz kaynakları temizlemeyin. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silin.

  1. Azure portalı arama kutusuna Kaynak grupları yazın ve Kaynak grupları'nı seçin.

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

  2. Ayrıntılar için bölmeyi açmak için kaynak grubunu seçin.

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

  4. Kaynak grubunun adını girip Sil'i seçerek silme işlemini onaylayın.

Cloud Shell penceresi, Kaynak grupları sayfasında görüntülenen diğer kaynak grubunu oluşturup kullandı. Cloud Shell penceresini daha sonra kullanmayı planlamıyorsanız bu kaynak grubunu silin.

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 çeşitli programlama dillerini kullanarak olay yayımlama ve olay kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın: