Ad alanı konularını kullanarak web kancalarına olay teslim etme - Azure CLI (önizleme)
Makale, CloudEvents JSON biçiminde Azure Event Grid'e olay yayımlamak ve anında iletme teslim modelini kullanarak bu olayları teslim etmek için adım adım yönergeler sağlar. Açık olmak gerekirse, Olayları Event Grid'deki bir ad alanı konusuna yayımlamak ve bu olayları bir olay aboneliğinden web kancası işleyici hedefine göndermek için Azure CLI ve Curl kullanırsınız. Gönderim teslimi modeli hakkında daha fazla bilgi için bkz . Anında iletme teslime genel bakış.
Not
Azure CLI Event Grid uzantısı henüz ad alanlarını ve içerdiği kaynakların hiçbirini desteklemez. Event Grid kaynakları oluşturmak için Azure CLI kaynağını kullanacağı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 komutunu kullanarak
az login
Azure CLI'da 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.
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.
Kaynak grubu oluşturma
az group create komutuyla bir Azure kaynak grubu oluşturun. Bu kaynak grubunu, bu makalede oluşturulan tüm kaynakları içerecek şekilde kullanırsınız.
Komutları çalıştırmak için Cloud Shell'i kullanmanın genel adımları şunlardır:
- Sağ bölmede bir Azure Cloud Shell penceresi görmek için Cloud Shell'i Aç'ı seçin.
- komutunu kopyalayın ve Azure Cloud Shell penceresine yapıştırın.
- Komutu çalıştırmak için ENTER tuşuna basın.
Bir Azure kaynak grubunun adını tutmak için bir değişken bildirin. değerini istediğiniz bir değerle değiştirerek
<your-resource-group-name>
kaynak grubu için bir ad belirtin.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
Kaynak grubu oluşturun. Konumu uygun gördüğünüz şekilde değiştirin.
az group create --name $resource_group --location $location
Ad alanı oluşturma
Event Grid ad alanı, 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 bir ad alanı oluşturur. Ad alanı adı bir Etki Alanı Adı Sistemi (DNS) girdisinin parçası olduğundan benzersiz olmalıdır. Ad alanı adı aşağıdaki kuralları karşılamalıdır:
- 3-50 karakter arasında olmalıdır.
- Bölgesel olarak benzersiz olmalıdır.
- Yalnızca izin verilen karakterler a-z, A-Z, 0-9 ve -
- , veya
EventGrid
gibiMicrosoft
System
ayrılmış anahtar sözcük ön ekleriyle başlamamalıdır.
Event Grid ad alanınızın adını tutmak için bir değişken bildirin. değerini istediğiniz bir değerle değiştirerek
<your-namespace-name>
ad alanı için bir ad belirtin.namespace="<your-namespace-name>"
Ad alanı oluşturun. Dağıtıldığı konumu değiştirmek isteyebilirsiniz.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
Ad alanı konusu oluşturma
Ad alanı uç noktasında yayımlanan tüm olayları tutmak için kullanılan bir konu oluşturun.
Ad alanı konunuzun adını tutmak için bir değişken bildirin. değerini istediğiniz bir değerle değiştirerek
<your-topic-name>
ad alanı konusu için bir ad belirtin.topic="<your-topic-name>"
Ad alanı konunuzu oluşturun:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
İleti uç noktası oluşturma
Ad alanı konusuna 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 $resource_group \ --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 adresine gidin: https://<your-site-name>.azurewebsites.net
. Şu anda iletilerin görüntülenmediği siteyi görüyor olmalısınız.
Olayları Azure Event Grid Görüntüleyicisi web kancasına teslim etme
Azure Event Grid Görüntüleyicisi için web kancasını kullanarak ad alanına bir gönderme teslim olayı aboneliği oluşturun.
Olay aboneliğinin adını tutmak için bir değişken tanımlayın.
event_subscription="<your_event_subscription_name>"
değerini Event Grid Görüntüleyicisi web sitesinin adıyla değiştirin
EVENTGRIDWEBSITENAME
. Örneğin:contosoegridviewer
.az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
Konunuza olay gönderme
Şimdi bu bölümdeki adımları izleyerek ad alanı konusuna örnek bir olay gönderin.
Ad alanı erişim anahtarlarını listeleme
Oluşturduğunuz ad alanıyla ilişkili erişim anahtarlarını alın. Olayları yayımlarken kimlik doğrulaması yapmak için bunlardan birini kullanırsınız. Anahtarlarınızı listelemek için önce tam ad alanı kaynak kimliği gerekir. Aşağıdaki komutu çalıştırarak alın:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Ad alanından ilk anahtarı alın:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Olay yayımlama
Ad alanı konak adını alın. Olayların gönderildiği ad alanı HTTP uç noktasını oluşturmak için bunu kullanırsınız. Aşağıdaki işlemler ilk olarak API sürümüyle
2023-06-01-preview
kullanılabilir.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
CloudEvents uyumlu örnek bir olay oluşturun:
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
data
öğesi, olayınızın yüküdür. Bu alana doğru oluşturulmuş herhangi bir JSON gelebilir. Bir olaya girebilen özellikler (bağlam öznitelikleri olarak da bilinir) hakkında daha fazla bilgi için bkz . CloudEvents belirtimleri.Olayı konuya göndermek için CURL kullanın. CURL, HTTP istekleri gönderen bir yardımcı programdır.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Azure Event Grid Görüntüleyicisi'nin olayı aldığını doğrulayın
Azure Event Grid Görüntüleyicisi web uygulamasının Event Grid'den aldığı olayları gösterdiğini doğrulayın.
İlgili içerik
Bu hızlı başlangıçta, olay işleyicisi olarak bir web kancası kullandınız. Olay işleyicisi olarak Azure olay hub'ı kullanan hızlı başlangıç için bkz . Ad alanı kullanarak Olayları Azure Event Hubs'a teslim etme konuları.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin