Aracılığıyla paylaş


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

Azure Event Grid , bulut için bir olay yönlendirme hizmetidir. Azure İşlevleri desteklenen olay işleyicilerinden biridir.

Bu hızlı başlangıçta Azure portalını kullanarak özel bir konu oluşturacak, özel konuya abone olacak ve sonucu görüntülemek için olayı tetikleyeceksiniz. Olayları bir Azure işlevine gönderirsiniz.

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

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.

Önkoşullar

İş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ğundaki Azure İşlevleri düğmesini ve 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 ve ardından Enter tuşunu 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 tuşunu seçin.

  7. İşlevin Şablonu için Azure Event Grid tetikleyicisi'ni ve ardından Enter tuşunu seçin.

  8. İşlev adı için işleviniz için bir ad girin ve Enter tuşunu seçin.

  9. Ad Alanı alanına işlevin ad alanı için bir ad girin ve Enter tuşunu 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. Günlükçü kullanarak bilgileri 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 tuşunu seçin.

  4. Ad alanına yeni işlev uygulaması için genel olarak benzersiz bir ad girin ve Enter tuşunu seçin.

  5. Çalışma zamanı yığını için .NET 8 Yalıtılmış'ı 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 ve 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 öğreticinin ilerleyen bölümlerinde bir Event Grid konusuna olay gönderdiğinizde günlüğe kaydedilen iletileri görebilmek için bu sekmeyi açık tutun.

    Azure portalında bir işlevin Günlükler sekmesini 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 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. Ad için özel konu için benzersiz bir ad sağlayın. 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 bağlantısını seçerek ilgili konunun Event Grid Konu Sayfasını açın.

    Event Grid özel konusunun sayfası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. Ö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. Uç nokta yapılandır'ı seçin.

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

    5. 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. İşlev için işlev uygulamasında 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ü.

    6. 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 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. 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ü.

    7. Olay Aboneliği Oluştur bölmesinde 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 tetikle. Özel konunuza test olayı göndermek için Azure CLI veya Azure PowerShell kullanın. Genellikle bir uygulama veya Azure hizmeti olay verilerini 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 doğru oluşturulmuş herhangi bir JSON gelebilir. 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 CLI

  1. Azure portalında Cloud Shell'i seçin. Azure PowerShell modundaysanız Bash'e Geç'i seçin.

    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.

    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 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şunu seçin.

    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. Invoke-WebRequest Olayı göndermek için 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ı tetiklediyseniz ve Event Grid iletiyi abone olduğunuzda yapılandırdığınız uç noktaya gönderdi. Artık işlevin alıp almadığını de kontrol edebilirsiniz.

  1. İşlevinizin İzleyici sayfasında bir çağrı bulun.

    İ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ü.

    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 bir işlevin İzleyici 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. Soldaki menüde Kaynak grupları'nı seçin.

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

    Alternatif olarak soldaki menüden Tüm Hizmetler'i ve ardından Kaynak grupları'nı seçebilirsiniz.

  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: