Öğretici: Azure CLı ve Event Grid ile Azure Relay Karma Bağlantılar özel olayları yönlendirmeTutorial: Route custom events to Azure Relay Hybrid Connections with Azure CLI and Event Grid

Azure Event Grid, bulut için bir olay oluşturma hizmetidir.Azure Event Grid is an eventing service for the cloud. Azure Relay Karma Bağlantılar, desteklenen olay işleyicilerinden biridir.Azure Relay Hybrid Connections is one of the supported event handlers. Genel uç noktası olmayan uygulamalardan alınan olayları işlemeniz gerektiğinde olay işleyicisi olarak karma bağlantıları kullanırsınız.You use hybrid connections as the event handler when you need to process events from applications that don't have a public endpoint. Bu uygulamalar kurumsal ağınızın içinde olabilir.These applications might be within your corporate enterprise network. Bu makalede Azure CLI ile özel bir konu oluşturacak, bu özel konuya abone olacak ve olayı tetikleyerek sonucu görüntüleyeceksiniz.In this article, you use the Azure CLI to create a custom topic, subscribe to the custom topic, and trigger the event to view the result. Olayları karma bağlantıya gönderirsiniz.You send the events to the hybrid connection.

Ön koşullarPrerequisites

Bu makalede zaten bir karma bağlantınız ve dinleyici uygulamanız olduğu varsayılmıştır.This article assumes you already have a hybrid connection and a listener application. 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.To get started with hybrid connections, see Get started with Relay Hybrid Connections - .NET or Get started with Relay Hybrid Connections - Node.

Azure Cloud Shell kullanmaUse Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı Azure Cloud Shell.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Azure hizmetleriyle çalışmak için Cloud Shell ile bash veya PowerShell kullanabilirsiniz.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell önceden yüklenmiş komutları kullanabilirsiniz.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell başlamak için:To start Azure Cloud Shell:

SeçenekOption Örnek/bağlantıExample/Link
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin.Select Try It in the upper-right corner of a code block. Dene ' nin seçilmesi, kodu Cloud Shell otomatik olarak kopyalamaz.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell için deneme örneği
https://shell.azure.comgidin veya tarayıcınızda Cloud Shell açmak Için Cloud Shell Başlat düğmesini seçin.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Yeni bir pencerede başlatma Cloud Shell Launch Cloud Shell in a new window
Azure Portalsağ üstteki menü çubuğunda Cloud Shell düğmesini seçin.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure portaldaki Cloud Shell düğmesi

Bu makaledeki kodu Azure Cloud Shell çalıştırmak için:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell başlatın.Start Cloud Shell.

  2. Kodu kopyalamak için bir kod bloğunda Kopyala düğmesini seçin.Select the Copy button on a code block to copy the code.

  3. Windows ve Linux 'ta Ctrl+SHIFT+v ' i seçerek veya macos 'ta cmd+SHIFT+v ' i seçerek kodu Cloud Shell oturumuna yapıştırın.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Kodu çalıştırmak için ENTER ' u seçin.Select Enter to run the code.

Not

Yerel makinenizde Azure CLı kullanıyorsanız, Azure CLı sürüm 2.0.56 veya üstünü kullanın.If you are using Azure CLI on your local machine, use Azure CLI version 2.0.56 or greater. Azure CLı 'nın en son sürümünü yükleme yönergeleri için bkz. Azure CLI 'Yı yükleme.For instructions on installing the latest version of Azure CLI, see Install the Azure CLI.

Kaynak grubu oluşturmaCreate a resource group

Event Grid konuları Azure kaynaklarıdır ve bir Azure kaynak grubuna yerleştirilmelidir.Event Grid topics are Azure resources, and must be placed in an Azure resource group. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal koleksiyondur.The resource group is a logical collection into which Azure resources are deployed and managed.

az group create komutuyla bir kaynak grubu oluşturun.Create a resource group with the az group create command.

Aşağıdaki örnek westus2 konumunda gridResourceGroup adlı bir kaynak grubu oluşturur.The following example creates a resource group named gridResourceGroup in the westus2 location.

az group create --name gridResourceGroup --location westus2

Özel konu oluşturmaCreate a custom topic

Event grid konusu, olaylarınızı göndereceğiniz kullanıcı tanımlı bir uç nokta sağlar.An event grid topic provides a user-defined endpoint that you post your events to. Aşağıdaki örnekte özel konu, kaynak grubunuzda oluşturulur.The following example creates the custom topic in your resource group. <topic_name> değerini özel konunuz için benzersiz bir adla değiştirin.Replace <topic_name> with a unique name for your custom topic. Bir DNS girişi ile temsil edildiğinden Event Grid konusunun adı benzersiz olmalıdır.The event grid topic name must be unique because it's represented by a DNS entry.

az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup

Özel konuya abone olmaSubscribe to a custom topic

İzlemek istediğiniz olayları Event Grid söylemek için bir Event Grid konusuna abone olursunuz. Aşağıdaki örnek, oluşturduğunuz özel konuya abone olur ve uç nokta için karma bağlantının kaynak KIMLIĞINI geçirir.You subscribe to an event grid topic to tell Event Grid which events you want to track. The following example subscribes to the custom topic you created, and passes the resource ID of the hybrid connection for the endpoint. Karma bağlantı kimliği şu biçimdedir:The hybrid connection ID is in the format:

/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.The following script gets the resource ID of the relay namespace. Karma bağlantının kimliğini oluşturur ve bir event grid konusuna abone olur.It constructs the ID for the hybrid connection, and subscribes to an event grid topic. Betik, uç nokta türünü hybridconnection olarak ayarlar ve uç noktanın karma bağlantı kimliğini kullanır.The script sets the endpoint type to hybridconnection and uses the hybrid connection ID for the endpoint.

relayname=<namespace-name>
relayrg=<resource-group-for-relay>
hybridname=<hybrid-name>

relayid=$(az resource show --name $relayname --resource-group $relayrg --resource-type Microsoft.Relay/namespaces --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.Notice that an expiration date is set for the subscription.

Olayları işlemek için uygulama oluşturmaCreate application to process events

Karma bağlantıdan olayları alabilecek bir uygulamaya ihtiyacınız vardır.You need an application that can retrieve events from the hybrid connection. Microsoft Azure Event Grid Hybrid Connection Consumer sample for C#, bu işlemi gerçekleştirir.The Microsoft Azure Event Grid Hybrid Connection Consumer sample for C# performs that operation. Önkoşul adımlarını tamamladınız.You've already finished the prerequisite steps.

  1. Visual Studio 2019 veya sonraki bir sürüme sahip olduğunuzdan emin olun.Make sure you have Visual Studio 2019 or later.

  2. Depoyu yerel makinenize kopyalayın.Clone the repository to your local machine.

  3. Visual Studio'da HybridConnectionConsumer projesini yükleyin.Load HybridConnectionConsumer project in Visual Studio.

  4. 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.In Program.cs, replace <relayConnectionString> and <hybridConnectionName> with the relay connection string and hybrid connection name that you created.

  5. Visual Studio'da derleyin ve çalıştırın.Compile and run the application from Visual Studio.

Konunuza olay göndermeSend an event to your topic

Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim.Let's trigger an event to see how Event Grid distributes the message to your endpoint. Bu makalede olayı tetiklemek için Azure CLI'yı nasıl kullanacağınız gösterilmektedir.This article shows how to use Azure CLI to trigger the event. Alternatif olarak Event Grid yayımcı uygulamasını da kullanabilirsiniz.Alternatively, you can use Event Grid publisher application.

İlk olarak özel konunun URL’sini ve anahtarını alalım.First, let's get the URL and key for the custom topic. Burada da <topic_name> yerine özel konunuzun adını yazın.Again, use your custom topic name for <topic_name>.

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.To simplify this article, you use sample event data to send to the custom topic. Normalde olay verilerini bir uygulama veya Azure hizmeti gönderir.Typically, an application or Azure service would send the event data. CURL, HTTP istekleri gönderen bir yardımcı programdır.CURL is a utility that sends HTTP requests. Bu makalede, özel konuya bir olay göndermek için CURL kullanın.In this article, use CURL to send the event to the custom topic.

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.Your listener application should receive the event message.

Kaynakları temizlemeClean up resources

Bu olayla çalışmaya devam etmeyi planlıyorsanız bu makalede oluşturulan kaynakları temizlemeyin.If you plan to continue working with this event, don't clean up the resources created in this article. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silmek için aşağıdaki komutu kullanın.Otherwise, use the following command to delete the resources you created in this article.

az group delete --name gridResourceGroup

Sonraki adımlarNext steps

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:Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: