Öğretici: Azure CLI ve Event Grid ile özel olayları Azure Relay Karma Bağlantılarına yönlendirme
Azure Relay Karma Bağlantılar, desteklenen olay işleyicilerinden biridir. Genel uç noktası olmayan uygulamalardan alınan olayları işlemeniz gerektiğinde olay işleyicisi olarak karma bağlantıları kullanırsınız. Bu uygulamalar kurumsal ağınızın içinde olabilir. Bu makalede Azure CLI ile özel bir konu oluşturacak, bu özel konuya abone olacak ve olayı tetikleyerek sonucu görüntüleyeceksiniz. Olayları karma bağlantıya gönderirsiniz.
Not
Azure Event Grid'de yeniyseniz, bu öğreticiden önce hizmete genel bir bakış elde etmek için bkz . Azure Event Grid nedir?
Önkoşullar
- Bu makalede zaten bir karma bağlantınız ve dinleyici uygulamanız olduğu varsayılmıştır. Karma bağlantıları kullanmaya başlamak için bkz. Relay Karma Bağlantılar’ı kullanmaya başlama - .NET veya Relay Karma Bağlantılar’ı kullanmaya başlama - Düğüm.
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.56 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.
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.
az group create --name gridResourceGroup --location westus2
Ö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 örnekte özel konu, kaynak grubunuzda oluşturulur. <topic_name>
değerini özel konunuz için benzersiz bir adla değiştirin. Event Grid konu adı bir Etki Alanı Adı Sistemi (DNS) girdisi ile temsil edildiğinden benzersiz olmalıdır.
az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup
Özel konuya abone olma
Event Grid'e hangi olayları izlemek istediğinizi bildirmek için bir Event Grid konusuna abone olabilirsiniz. Aşağıdaki örnek, oluşturduğunuz özel konuya abone olup uç nokta için karma bağlantının kaynak kimliğini geçirir. Karma bağlantı kimliği şu biçimdedir:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Relay/namespaces/<relay-namespace>/hybridConnections/<hybrid-connection-name>
Aşağıdaki betik, geçiş ad alanının kaynak kimliğini alır. Karma bağlantının kimliğini oluşturur ve bir Event Grid konusuna abone olur. Betik, uç nokta türünü hybridconnection
olarak ayarlar ve uç noktanın karma bağlantı kimliğini kullanır.
relaynsname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>
relayid=$(az relay namespace show --resource-group $relayrg --name $relaynsname --query id --output tsv)
hybridid="$relayid/hybridConnections/$hybridname"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint-type hybridconnection \
--endpoint $hybridid \
--expiration-date "<yyyy-mm-dd>"
Abonelik için bir sona erme tarihi belirlendiğine dikkat edin.
Olayları işlemek için uygulama oluşturma
Karma bağlantıdan olayları alabilecek bir uygulamaya ihtiyacınız vardır. Microsoft Azure Event Grid Hybrid Connection Consumer sample for C#, bu işlemi gerçekleştirir. Önkoşul adımlarını tamamladınız.
Visual Studio 2019 veya sonraki bir sürümüne sahip olduğunuzdan emin olun.
Depoyu yerel makinenize kopyalayın.
Visual Studio'da HybridConnectionConsumer projesini yükleyin.
Program.cs dosyasında
<relayConnectionString>
ve<hybridConnectionName>
yerine oluşturduğunuz geçiş bağlantısı dizesini ve karma bağlantı adını yazın.Visual Studio'da derleyin ve çalıştırın.
Önemli
Öğreticiyi basit tutmak için Azure Relay ad alanında kimlik doğrulaması yapmak için bağlantı dizesi kullanırız. Üretim ortamlarında Microsoft Entra Id kimlik doğrulaması kullanmanızı öneririz. Uygulama kullanırken uygulama için yönetilen kimliği etkinleştirebilir ve kimliğe Geçiş ad alanında uygun bir rol (Azure Relay Sahibi, Azure Relay Dinleyicisi veya Azure Relay Göndereni) atayabilirsiniz. Daha fazla bilgi için bkz . Azure Relay kaynaklarına erişmek için Microsoft Entra Id ile yönetilen kimliğin kimliğini doğrulama.
Konunuza olay gönderme
Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim. Bu makalede olayı tetiklemek için Azure CLI'yı nasıl kullanacağınız gösterilmektedir. Alternatif olarak Event Grid yayımcı uygulamasını da kullanabilirsiniz.
İlk olarak özel konunun URL’sini ve anahtarını alalım. Burada da <topic_name>
yerine özel konunuzun adını yazın.
endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -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. CURL, HTTP istekleri gönderen bir yardımcı programdır. Bu makalede, özel konuya bir olay göndermek için CURL kullanın.
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"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Dinleyici uygulamanız olay iletisini almalıdır.
Kaynakları temizleme
Bu olayla ç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: