Tutorial: Enrutar eventos personalizados a Conexiones híbridas de Azure Relay con la CLI de Azure y Event GridTutorial: Route custom events to Azure Relay Hybrid Connections with Azure CLI and Event Grid

Azure Event Grid es un servicio de eventos para la nube.Azure Event Grid is an eventing service for the cloud. La solución Conexiones híbridas de Azure Relay es uno de los controladores de eventos compatibles.Azure Relay Hybrid Connections is one of the supported event handlers. Las conexiones híbridas se usan como el controlador de eventos cuando es necesario procesar los eventos de las aplicaciones que no tienen un punto de conexión público.You use hybrid connections as the event handler when you need to process events from applications that don't have a public endpoint. Estas aplicaciones pueden estar dentro de la red empresarial corporativa.These applications might be within your corporate enterprise network. En este artículo, se usará la CLI de Azure para crear un tema personalizado, suscribirse a él y desencadenar el evento para ver el resultado.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. Los eventos se envían a la conexión híbrida.You send the events to the hybrid connection.

PrerrequisitosPrerequisites

  • Use el entorno de Bash en Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window

  • Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.If you prefer, install the Azure CLI to run CLI reference commands.

    • Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación.To finish the authentication process, follow the steps displayed in your terminal. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.For additional sign-in options, see Sign in with the Azure CLI.

    • Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use.When you're prompted, install Azure CLI extensions on first use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.For more information about extensions, see Use extensions with the Azure CLI.

    • Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas.Run az version to find the version and dependent libraries that are installed. Para realizar la actualización a la versión más reciente, ejecute az upgrade.To upgrade to the latest version, run az upgrade.

  • En este artículo se necesita la versión 2.0.56 de la CLI de Azure, o cualquier versión posterior.This article requires version 2.0.56 or later of the Azure CLI. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.If using Azure Cloud Shell, the latest version is already installed.

Crear un grupo de recursosCreate a resource group

Los temas de Event Grid son recursos de Azure y se deben colocar en un grupo de recursos de Azure.Event Grid topics are Azure resources, and must be placed in an Azure resource group. El grupo de recursos de Azure es una colección lógica en la que se implementan y administran los recursos de Azure.The resource group is a logical collection into which Azure resources are deployed and managed.

Para crear un grupo de recursos, use el comando az group create.Create a resource group with the az group create command.

En el ejemplo siguiente, se crea un grupo de recursos denominado gridResourceGroup en la ubicación westus2.The following example creates a resource group named gridResourceGroup in the westus2 location.

az group create --name gridResourceGroup --location westus2

Creación de un tema personalizadoCreate a custom topic

Un tema de cuadrícula de eventos proporciona un punto de conexión definido por el usuario en el que se registran los eventos.An event grid topic provides a user-defined endpoint that you post your events to. En el ejemplo siguiente se crea el tema personalizado en el grupo de recursos.The following example creates the custom topic in your resource group. Reemplace <topic_name> por un nombre único para el tema personalizado.Replace <topic_name> with a unique name for your custom topic. El nombre del tema de cuadrícula de eventos debe ser único porque se representa mediante una entrada 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

Suscripción a un tema personalizadoSubscribe to a custom topic

Suscríbase a un tema de cuadrícula de eventos para indicar a Event Grid los eventos cuyo seguimiento desea realizar. En el ejemplo siguiente se suscribirá al tema personalizado que creó y pasará el identificador de recurso de la conexión híbrida al punto de conexión.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. El identificador de conexión híbrida tiene el formato siguiente: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>

En el siguiente script, el identificador de recurso se obtiene del espacio de nombres de Relay.The following script gets the resource ID of the relay namespace. Se genera el identificador de la conexión híbrida y se suscribe a un tema de la cuadrícula de eventos.It constructs the ID for the hybrid connection, and subscribes to an event grid topic. El script establece el tipo de punto de conexión en hybridconnection y se usa el identificador de conexión híbrida para el punto de conexión.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>"

Tenga en cuenta que se ha establecido una fecha de expiración para la suscripción.Notice that an expiration date is set for the subscription.

Creación de una aplicación para procesar eventosCreate application to process events

Necesita una aplicación que puede recuperar eventos desde la conexión híbrida.You need an application that can retrieve events from the hybrid connection. El ejemplo de consumidor de conexión híbrida de Microsoft Azure Event Grid para C# ejecuta esa operación.The Microsoft Azure Event Grid Hybrid Connection Consumer sample for C# performs that operation. Ya completó los pasos de requisitos previos.You've already finished the prerequisite steps.

  1. Asegúrese de que tiene Visual Studio 2019 o posterior.Make sure you have Visual Studio 2019 or later.

  2. Clone el repositorio en la máquina local.Clone the repository to your local machine.

  3. Cargue el proyecto HybridConnectionConsumer en Visual Studio.Load HybridConnectionConsumer project in Visual Studio.

  4. En Program.cs, reemplace <relayConnectionString> y <hybridConnectionName> por la cadena de conexión de Relay y el nombre de la conexión híbrida que creó.In Program.cs, replace <relayConnectionString> and <hybridConnectionName> with the relay connection string and hybrid connection name that you created.

  5. Compile y ejecute la aplicación desde Visual Studio.Compile and run the application from Visual Studio.

Envío de un evento al temaSend an event to your topic

Vamos a desencadenar un evento para ver cómo Event Grid distribuye el mensaje al punto de conexión.Let's trigger an event to see how Event Grid distributes the message to your endpoint. En este artículo se muestra cómo usar la CLI de Azure para desencadenar el evento.This article shows how to use Azure CLI to trigger the event. De manera alternativa, puede usar la aplicación de publicador de Event Grid.Alternatively, you can use Event Grid publisher application.

En primer lugar, vamos a obtener la dirección URL y la clave del tema personalizado.First, let's get the URL and key for the custom topic. De nuevo, use su nombre de tema personalizado para <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)

Para simplificar este artículo, usará datos de evento de ejemplo para enviar al tema personalizado.To simplify this article, you use sample event data to send to the custom topic. Normalmente, una aplicación o servicio de Azure enviaría los datos del evento.Typically, an application or Azure service would send the event data. CURL es una utilidad que envía solicitudes HTTP.CURL is a utility that sends HTTP requests. En este artículo, usará CURL para enviar el evento al tema personalizado.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

La aplicación de agente de escucha debe recibir el mensaje de evento.Your listener application should receive the event message.

Limpieza de recursosClean up resources

Si piensa seguir trabajando con este evento, no limpie los recursos creados en este artículo.If you plan to continue working with this event, don't clean up the resources created in this article. En caso contrario, use el siguiente comando para eliminar los recursos creados en este artículo.Otherwise, use the following command to delete the resources you created in this article.

az group delete --name gridResourceGroup

Pasos siguientesNext steps

Ahora que sabe cómo crear suscripciones a temas y eventos, aprenda más sobre cómo Event Grid puede ayudarle:Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: