Esercitazione: Instradare eventi personalizzati a Connessioni ibride di Inoltro di Azure con l'interfaccia della riga di comando di Azure e Griglia di eventiTutorial: Route custom events to Azure Relay Hybrid Connections with Azure CLI and Event Grid

La griglia di eventi di Azure è un servizio di gestione degli eventi per il cloud.Azure Event Grid is an eventing service for the cloud. Connessioni ibride di Inoltro di Azure è uno gestore dell'evento supportato.Azure Relay Hybrid Connections is one of the supported event handlers. Usare le connessioni ibride come gestore dell'evento quando è necessario elaborare gli eventi da applicazioni che non hanno un endpoint pubblico.You use hybrid connections as the event handler when you need to process events from applications that don't have a public endpoint. Queste applicazioni potrebbero trovarsi all'interno della rete aziendale dell'organizzazione.These applications might be within your corporate enterprise network. Questo articolo illustra come usare l'interfaccia della riga di comando di Azure per creare un argomento personalizzato, sottoscrivere l'argomento e attivare l'evento per visualizzare il risultato.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. Inviare gli eventi alla connessione ibrida.You send the events to the hybrid connection.

PrerequisitiPrerequisites

  • Usare l'ambiente bash in Azure cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window

  • Se si preferisce, installare l'interfaccia della riga di comando di Azure per eseguire i relativi comandi di riferimento.If you prefer, install the Azure CLI to run CLI reference commands.

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.0.56 o successiva.This article requires version 2.0.56 or later of the Azure CLI. Se si usa Azure Cloud Shell, la versione più recente è già installata.If using Azure Cloud Shell, the latest version is already installed.

Creare un gruppo di risorseCreate a resource group

Gli argomenti della griglia di eventi sono risorse di Azure e devono essere inseriti in un gruppo di risorse di Azure.Event Grid topics are Azure resources, and must be placed in an Azure resource group. Un gruppo di risorse è una raccolta logica in cui le risorse di Azure vengono distribuite e gestite.The resource group is a logical collection into which Azure resources are deployed and managed.

Creare un gruppo di risorse con il comando az group create.Create a resource group with the az group create command.

L'esempio seguente crea un gruppo di risorse denominato gridResourceGroup nella località westus2.The following example creates a resource group named gridResourceGroup in the westus2 location.

az group create --name gridResourceGroup --location westus2

Creare un argomento personalizzatoCreate a custom topic

Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente in cui vengono pubblicati gli eventi.An event grid topic provides a user-defined endpoint that you post your events to. L'esempio seguente crea l'argomento personalizzato nel gruppo di risorse.The following example creates the custom topic in your resource group. Sostituire <topic_name> con un nome univoco per l'argomento personalizzato.Replace <topic_name> with a unique name for your custom topic. Il nome dell'argomento della griglia di eventi deve essere univoco perché è rappresentato da una voce DNS.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

Sottoscrivere un argomento personalizzatoSubscribe to a custom topic

Si sottoscrive un argomento della Griglia di eventi per indicare alla griglia di eventi quali sono gli eventi di cui si vuole tenere traccia. Nell'esempio seguente viene effettuata la sottoscrizione dell'argomento personalizzato creato e viene passato l'ID risorsa della connessione ibrida per l'endpoint.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. L'ID della connessione ibrida ha il formato: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>

Lo script seguente ottiene l'ID della risorsa dello spazio dei nomi di inoltro.The following script gets the resource ID of the relay namespace. Costruisce l'ID per la connessione ibrida e sottoscrive un argomento della griglia di eventi.It constructs the ID for the hybrid connection, and subscribes to an event grid topic. Imposta il tipo di endpoint su hybridconnection e usa l'ID della connessione ibrida per l'endpoint.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>"

Si noti che per la sottoscrizione è impostata una data di scadenza.Notice that an expiration date is set for the subscription.

Creare un'applicazione per elaborare gli eventiCreate application to process events

È necessaria un'applicazione in grado di recuperare gli eventi dalla connessione ibrida.You need an application that can retrieve events from the hybrid connection. L'esempio di consumer della connessione ibrida di Griglia di eventi di Microsoft Azure per C# esegue tale operazione.The Microsoft Azure Event Grid Hybrid Connection Consumer sample for C# performs that operation. I passaggi preliminari sono stati completati.You've already finished the prerequisite steps.

  1. Assicurarsi di disporre di Visual Studio 2019 o versioni successive.Make sure you have Visual Studio 2019 or later.

  2. Clonare il repository nel computer locale.Clone the repository to your local machine.

  3. Caricare il progetto HybridConnectionConsumer in Visual Studio.Load HybridConnectionConsumer project in Visual Studio.

  4. In Program.cs, sostituire <relayConnectionString> e <hybridConnectionName> con la stringa di connessione di inoltro e il nome della connessione ibrida creata.In Program.cs, replace <relayConnectionString> and <hybridConnectionName> with the relay connection string and hybrid connection name that you created.

  5. Compilare ed eseguire l'applicazione da Visual Studio.Compile and run the application from Visual Studio.

Inviare un evento all'argomentoSend an event to your topic

Attivare un evento per vedere come la Griglia di eventi distribuisce il messaggio nell'endpoint.Let's trigger an event to see how Event Grid distributes the message to your endpoint. Questo articolo illustra come usare l'interfaccia della riga di comando di Azure per attivare l'evento.This article shows how to use Azure CLI to trigger the event. In alternativa, è possibile usare l'applicazione per la pubblicazione della Griglia di eventi.Alternatively, you can use Event Grid publisher application.

Ottenere prima di tutto l'URL e la chiave per l'argomento personalizzato.First, let's get the URL and key for the custom topic. Usare ancora una volta il nome dell'argomento personalizzato per <topic_name>.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)

Per semplificare questo articolo, si useranno dati di evento di esempio da inviare all'argomento personalizzato.To simplify this article, you use sample event data to send to the custom topic. In genere, i dati dell'evento vengono inviati da un'applicazione o un servizio di Azure.Typically, an application or Azure service would send the event data. CURL è un'utilità che invia richieste HTTP.CURL is a utility that sends HTTP requests. In questo articolo CURL viene usato per inviare l'evento all'argomento personalizzato.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

L'applicazione listener deve ricevere il messaggio dell'evento.Your listener application should receive the event message.

Pulire le risorseClean up resources

Se si intende continuare a usare questo evento, non è necessario pulire le risorse create con questo articolo.If you plan to continue working with this event, don't clean up the resources created in this article. In caso contrario, usare il comando seguente per eliminare le risorse create con questo articolo.Otherwise, use the following command to delete the resources you created in this article.

az group delete --name gridResourceGroup

Passaggi successiviNext steps

Ora che si è appreso come creare argomenti e sottoscrizioni di eventi, è possibile approfondire le operazioni possibili con la griglia di eventi:Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: