Ad alanı konularını kullanarak Olayları Azure Event Hubs'a teslim etme - Azure CLI
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
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
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.
Event Hubs ad alanı adını tutmak için bir değişken bildirin.
eventHubsNamespace="<your-event-hubs-namespace-name>"
Event Hubs ad alanı oluşturun.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location
Olay hub'ı adını tutmak için bir değişken bildirin.
eventHubsEventHub="<your-event-hub-name>"
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:
- 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.
- 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.
- Event Hubs ad alanınızda Güvenilen Microsoft hizmetleri bu güvenlik duvarını atlamasına izin ver ayarını etkinleştirin.
- 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.
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
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)
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)
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
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 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.
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: