Share via


Ad alanı konularını kullanarak Olayları Azure Event Hubs'a 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 Event Hubs 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

  • Ad alanları, ad alanı konuları ve ad alanı konularıyla ilişkili olay abonelikleri başlangıçta şu bölgelerde kullanılabilir: Doğu ABD, Orta ABD, Orta Güney ABD, Batı ABD 2, Doğu Asya, Güneydoğu Asya, Kuzey Avrupa, Batı Avrupa, BAE Kuzey.
  • 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 Event Grid ad alanları şu anda Paylaşılan Erişim İmzaları (SAS) belirtecini ve erişim anahtarları kimlik doğrulamayı desteklemektedir.

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 gibi MicrosoftSystemEventGridayrı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 
    

Yeni bir Event Hubs kaynağı oluşturma

Ad alanı konusu anında iletme aboneliği için işleyici hedefi olarak kullanılan bir Event Hubs kaynağı oluşturun.

  1. Event Hubs ad alanı adını tutmak için bir değişken bildirin.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Event Hubs ad alanı oluşturun.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Olay hub'ı adını tutmak için bir değişken bildirin.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Ad alanında bir olay hub'ı oluşturmak için aşağıdaki komutu çalıştırın.

    az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub 
    

Yönetilen kimliği kullanarak Olayları Event Hubs'a teslim etme

Yönetilen kimliği kullanarak Event Hubs ad alanınızdaki olay hub'larına olay teslim etmek için şu adımları izleyin:

  1. Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği etkinleştirin: ad alanları. Azure CLI kullanarak yönetilen kimliği etkinleştirmeyi bulmak için sonraki bölümü okumaya devam edin.
  2. Kimliği Event Hubs ad alanındaki Azure Event Hubs Veri Gönderen rolüne ekleyin, rol atamasının nasıl ekleneceğini bulmak için sonraki bölüme okumaya devam edin.
  3. Event Hubs ad alanınızda Güvenilen Microsoft hizmetleri bu güvenlik duvarını atlamasına izin ver ayarını etkinleştirin.
  4. Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanmak için uç nokta olarak olay hub'ı kullanan olay aboneliğini yapılandırın.

Not

Azure Event Hubs'a olay teslimi şu anda önizleme aşamasındadır.

Event Grid ad alanında yönetilen kimliği etkinleştirme

Event Grid ad alanında sistem tarafından atanan yönetilen kimliği etkinleştirin.

az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}

Event Grid yönetilen kimliği için Event Hubs'a rol ataması ekleme

  1. Event Grid ad alanı sistemi yönetilen kimlik sorumlusu kimliğini alın.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Event Hubs olay hub'ı kaynak kimliğini alın.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Event Grid sistem tarafından yönetilen kimliği için Event Hubs'a rol ataması ekleyin.

    az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
    

Olay aboneliği oluşturma

Yeni bir anında iletme teslim olayı aboneliği oluşturun.

event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"

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 portalında Event Hubs Ad Alanı sayfasına gidin, sayfayı yenileyin ve grafikteki gelen iletiler sayacının bir olayın alındığını gösterdiğini doğrulayın.

    Bir olayın alındığını gösteren grafiğin yer aldığı Olay hub'ı sayfasını gösteren ekran görüntüsü.

Sonraki adımlar

Bu makalede Event Grid ad alanını ve Event Hubs kaynaklarını oluşturup yapılandırmışsınız. Olay hub'ından olay almaya yönelik adım adım yönergeler için şu öğreticilere bakın: