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
Azure Portal oturum açın.
Sol gezinti menüsünde Tüm hizmetler'i seçin.
Kategoriler listesinde İşlem'i seçin.
Fareyi İşlev Uygulaması'nın üzerine getirin (seçmeyin) ve öğesini seçin+.
İşlev Uygulaması Oluşturma sihirbazının Temel Bilgiler sayfasında şu adımları izleyin:
İşlev uygulamasını oluşturmak istediğiniz Azure aboneliğinizi seçin.
Yeni bir kaynak grubu oluşturun veya mevcut bir kaynak grubunu seçin.
İşlev uygulaması için bir ad belirtin.
Çalışma Zamanı yığını için .NET'i seçin.
Size en yakın bölgeyi seçin.
Sayfanın alt kısmındaki İleri: Depolama'yi seçin.
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.
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.
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.
İşlev Uygulaması sayfasında, sağ bölmedeki Azure portalında oluştur bağlantısını seçin.
İşlev Oluştur sayfasında şu adımları izleyin:
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()); }
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.
Özel konu oluşturma
Event Grid konusu, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar.
Web tarayıcısı penceresinin yeni bir sekmesinde Azure portalında oturum açın.
Konu başlığındaki arama çubuğunda Event Grid Konuları'nı arayın ve Event Grid Konuları'nı seçin.
Event Grid Konuları sayfasında, komut çubuğunda + Oluştur'u seçin.
Konu Oluştur sayfasında şu adımları izleyin:
Azure aboneliğinizi seçin.
Önceki adımlardan aynı kaynak grubunu seçin.
Ö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.
Event Grid konusu için bir konum seçin.
Gözden geçir ve oluştur’u seçin.
Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.
Ö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.
Ö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.
Şimdi, özel konunuzun Event Grid Konu sayfasında araç çubuğunda + Olay Aboneliği'ni seçin.
Olay Aboneliği Oluştur sayfasında şu adımları izleyin:
Olay aboneliği için bir ad girin.
Uç nokta türü için Azure İşlevi'ni seçin.
Uç nokta yapılandır'ı seçin.
İş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.
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 iş 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 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
Azure portalında Cloud Shell'i seçin. Cloud Shell penceresinin sol üst köşesindeki Bash'i seçin.
topicname
Komutlarda kullanılacak veresourcegroupname
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"
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)
Ö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)
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"} ]'
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.
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.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"
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
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)+"]"
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.
Azure işlevinizin İzleyici sayfasında bir çağrı görürsünüz.
Ayrıntıları görmek için çağrıyı seçin.
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.
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.
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.
Kaynak grubu sayfasını başlatmak için kaynak grubunu seçin.
Araç çubuğunda Kaynak grubunu sil'i seçin.
Kaynak grubunun adını girerek silme işlemini onaylayın ve Sil'i seçin.
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 Hakkında
- Blob depolama olaylarını bir özel web uç noktasına yönlendirme
- Azure Event Grid ve Logic Apps ile sanal makine değişikliklerini izleme
- Veri ambarına büyük veri akışı yapma
Event Grid'de olayları farklı programlama dilleri kullanarak yayımlama ve kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın.