Aracılığıyla paylaş


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

  1. 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
    
  2. 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"
    

    registrationStateRegistered 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.
  1. 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>"
    
  2. 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 EventGridgibi MicrosoftSystemayrılmış anahtar sözcük ön ekleriyle başlamamalıdır.
  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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.

  1. Olay aboneliğinin adını tutmak için bir değişken tanımlayın.

    event_subscription="<your_event_subscription_name>"
    
  2. 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

  1. 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)
    
  2. 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

  1. 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-previewkullanı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
    
  2. 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.

  3. 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.

Alınan örnek olayı içeren Azure Event Grid Görüntüleyicisi'ni gösteren ekran görüntüsü.

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ı.