Hızlı Başlangıç: Azure CLI ve Event Grid ile özel olayları web uç noktasına yönlendirme
Bu makalede, Azure Event Grid'de özel bir konu oluşturmak, özel konuya abone olmak ve sonucu görüntülemek için örnek bir olay tetikleme amacıyla Azure CLI'yi kullanacaksınız.
Normalde olayları, olay verilerini işleyen ve eylemler gerçekleştiren bir uç noktaya gönderirsiniz. Ancak, bu makaleyi basitleştirmek için iletileri toplayan ve görüntüleyen bir web uygulamasına örnek olaylar gönderirsiniz. İşiniz bittiğinde, olay verilerinin aşağıdaki görüntüde gösterildiği gibi web uygulamasına gönderildiğini görürsünüz:
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- Bu makale, Azure CLI'nın 2.0.70 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.
- Azure Event Grid'de yeniyseniz bu öğreticiden önce hizmete genel bir bakış elde etmek için bkz . Azure Event Grid nedir?
Kaynak grubu oluşturma
Event Grid konuları Azure kaynaklarıdır ve bir Azure kaynak grubuna yerleştirilmelidir. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal koleksiyondur.
az group create komutuyla bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda gridResourceGroup adlı bir kaynak grubu oluşturur. Deneyin'i seçerseniz, sağ bölmede Azure Cloud Shell penceresini görürsünüz. Ardından Kopyala'yı seçerek komutu kopyalayıp Azure Cloud Shell penceresine yapıştırın ve komutu çalıştırmak için ENTER tuşuna basın. kaynak grubunun adını ve isterseniz konumu değiştirin.
az group create --name gridResourceGroup --location westus2
Event Grid kaynak sağlayıcısını etkinleştirme
Daha önce Azure aboneliğinizde Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısını kaydetmeniz gerekebilir. Sağlayıcıyı kaydetmek için şu komutu çalıştırın:
az provider register --namespace Microsoft.EventGrid
Kaydın tamamlanması biraz zaman alabilir. Durumu denetlemek için aşağıdaki komutu çalıştırın:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
registrationState
Registered
olduğu zaman devam edebilirsiniz.
Özel konu oluşturma
Event Grid konusu, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar. Aşağıdaki örnek, Azure Cloud Shell'de Bash kullanarak kaynak grubunuzda özel konuyu oluşturur.
<your-topic-name>
değerini konunuz için benzersiz bir adla değiştirin. Özel konu adı, Etki Alanı Adı Sistemi (DNS) girişinin bir parçası olduğundan benzersiz olmalıdır. Ayrıca, 3-50 karakter arasında olmalı ve yalnızca a-z, A-Z, 0-9 ve "-" değerlerini içermelidir
Aşağıdaki komutu kopyalayın, konu için bir ad belirtin ve komutu çalıştırmak için ENTER tuşuna basın.
topicname=<your-topic-name>
az eventgrid topic create
Özel bir konu oluşturmak için komutunu kullanın.az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
İleti uç noktası oluşturma
Özel konuya abone olmadan önce, olay iletisi için uç noktayı oluşturalım. Normalde, olay verileri temelinde uç nokta eylemleri gerçekleştirir. Bu hızlı başlangıcı basitleştirmek için, olay iletilerini görüntüleyen önceden oluşturulmuş bir web uygulaması dağıtacaksınız. Dağıtılan çözüm bir App Service planı, App Service web uygulaması ve GitHub'dan kaynak kod içerir.
Aşağıdaki komutu kopyalayın, web uygulaması için bir ad belirtin (Event Grid Viewer örneği) ve komutu çalıştırmak için ENTER tuşuna basın.
<your-site-name>
değerini web uygulamanız için benzersiz bir adla değiştirin. Web uygulaması adı bir DNS girdisinin parçası olduğundan benzersiz olmalıdır.sitename=<your-site-name>
Azure Resource Manager şablonu kullanarak web uygulamasını dağıtmak için komutunu
az deployment group create
çalıştırın.az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
Dağıtımın tamamlanması birkaç dakika sürebilir. Dağıtım başarıyla gerçekleştirildikten sonra, web uygulamanızı görüntüleyip çalıştığından emin olun. Web tarayıcısında şu adrese gidin: https://<your-site-name>.azurewebsites.net
Şu anda iletilerin görüntülenmediği siteyi görüyor olmalısınız.
Özel konuya abone olma
Event Grid'e hangi olayları izlemek istediğinizi ve bu olayları nereye gönderebileceğinizi bildirmek için bir Event Grid konusuna abone olabilirsiniz. Aşağıdaki örnek, oluşturduğunuz özel konuya abone olur ve web uygulamanızın URL’sini olay bildirimi için uç nokta olarak geçirir.
Web uygulamanızın uç noktası /api/updates/
sonekini içermelidir.
Aşağıdaki komutu kopyalayın, değerini önceki adımda oluşturduğunuz web uygulamasının adıyla değiştirin
$sitename
ve komutu çalıştırmak için ENTER tuşuna basın.endpoint=https://$sitename.azurewebsites.net/api/updates
Oluşturduğunuz konunun kaynak kimliğini almak için aşağıdaki komutu çalıştırın.
topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
Uç noktayı kullanarak özel konuya abonelik oluşturmak için aşağıdaki komutu çalıştırın.
az eventgrid event-subscription create \ --source-resource-id $topicresourceid \ --name demoViewerSub \ --endpoint $endpoint
Web uygulamanızı yeniden görüntüleyin ve buna bir abonelik doğrulama olayının gönderildiğine dikkat edin. Göz simgesini seçerek olay verilerini genişletin. Uç noktanın olay verilerini almak istediğini doğrulayabilmesi için Event Grid doğrulama olayını gönderir. Web uygulaması aboneliği doğrulamak için kod içerir.
Özel konunuza olay gönderme
Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim. İlk olarak özel konunun URL’sini ve anahtarını alalım.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Bu makaleyi kolaylaştırmak için özel konuya göndereceğiniz örnek olay verileri sağlanmıştır. Normalde olay verilerini bir uygulama veya Azure hizmeti gönderir. Aşağıdaki örnek, örnek olay verilerini oluşturur:
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"} ]'
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. Bu makalede, konuya olayı göndermek için CURL kullanın.
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi. Az önce gönderdiğiniz olayı görmek için web uygulamanızı görüntüleyin.
[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]
Kaynakları temizleme
Bu olayla veya olay görüntüleyici uygulamasıyla çalışmaya devam etmeyi planlıyorsanız bu makalede oluşturulan kaynakları temizlemeyin. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silmek için aşağıdaki komutu kullanın.
az group delete --name gridResourceGroup
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.