Tutorial: Encaminhar eventos personalizados para Azure Relay Hybrid Connections com Azure CLI e Grade de EventosTutorial: Route custom events to Azure Relay Hybrid Connections with Azure CLI and Event Grid

O Azure Event Grid é um serviço de eventos para a cloud.Azure Event Grid is an eventing service for the cloud. As Ligações Híbridas do Azure Relay são um dos processadores de eventos suportados.Azure Relay Hybrid Connections is one of the supported event handlers. Utiliza ligações híbridas como o processador de eventos quando necessita de processar eventos de aplicações que não tenham um ponto final 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 aplicações podem estar dentro da sua rede empresarial.These applications might be within your corporate enterprise network. Neste artigo, a CLI do Azure serve para criar um tópico personalizado, subscrever o tópico personalizado e acionar o evento para ver o 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. Os eventos são enviados para a ligação híbrida.You send the events to the hybrid connection.

Pré-requisitosPrerequisites

  • Utilize o ambiente Bash em Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Iniciar Cloud Shell numa nova janelaLaunch Cloud Shell in a new window

  • Se preferir, instale o CLI do Azure para executar comandos de referência de CLI.If you prefer, install the Azure CLI to run CLI reference commands.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal.To finish the authentication process, follow the steps displayed in your terminal. Para obter mais opções de início de sessão, veja Iniciar sessão com o CLI do Azure.For additional sign-in options, see Sign in with the Azure CLI.

    • Quando lhe for pedido, instale as extensões do CLI do Azure durante a primeira utilização.When you're prompted, install Azure CLI extensions on first use. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.For more information about extensions, see Use extensions with the Azure CLI.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas.Run az version to find the version and dependent libraries that are installed. Para atualizar para a versão mais recente, execute o comando az upgrade.To upgrade to the latest version, run az upgrade.

  • Este artigo requer a versão 2.0.56 ou posterior do Azure CLI.This article requires version 2.0.56 or later of the Azure CLI. Se utilizar o Azure Cloud Shell, a versão mais recente já está instalada.If using Azure Cloud Shell, the latest version is already installed.

Criar um grupo de recursosCreate a resource group

Os tópicos do Event Grid são recursos do Azure e têm de ser colocados num grupo de recursos do Azure.Event Grid topics are Azure resources, and must be placed in an Azure resource group. Um grupo de recursos é uma coleção lógica na qual os recursos do Azure são implementados e geridos.The resource group is a logical collection into which Azure resources are deployed and managed.

Crie um grupo de recursos com o comando az group create.Create a resource group with the az group create command.

O exemplo seguinte cria um grupo de recursos com o nome gridResourceGroup na localização westus2.The following example creates a resource group named gridResourceGroup in the westus2 location.

az group create --name gridResourceGroup --location westus2

Criar um tópico personalizadoCreate a custom topic

Um tópico do Event Grid fornece um ponto final definido pelo utilizador no qual publica os eventos.An event grid topic provides a user-defined endpoint that you post your events to. O exemplo seguinte cria o tópico personalizado no seu grupo de recursos.The following example creates the custom topic in your resource group. Substitua <topic_name> por um nome exclusivo para o seu tópico personalizado.Replace <topic_name> with a unique name for your custom topic. O nome do tópico do Event Grid deve ser exclusivo, porque é representado por uma 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

Subscrever um tópico personalizadoSubscribe to a custom topic

Você subscreve um tópico de grelha de eventos para dizer a Event Grid quais eventos você quer rastrear. O exemplo a seguir subscreve o tópico personalizado que criou e passa o ID de recurso da ligação híbrida para o ponto final.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. O ID da ligação híbrida está no 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>

O script seguinte obtém o ID do recurso do espaço de nomes de reencaminhamento.The following script gets the resource ID of the relay namespace. Constrói o ID para a ligação híbrida e subscreve um tópico do Event Grid.It constructs the ID for the hybrid connection, and subscribes to an event grid topic. O script define o tipo de ponto final hybridconnection e utiliza o ID da ligação híbrida para o ponto final.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>"

Observe que está definida uma data de expiração para a subscrição.Notice that an expiration date is set for the subscription.

Criar aplicação para processar eventosCreate application to process events

Precisa de uma aplicação que possa recuperar eventos a partir da ligação híbrida.You need an application that can retrieve events from the hybrid connection. O exemplo do Consumidor de Ligação Híbrida do Microsoft Azure Event Grid para C# realiza essa operação.The Microsoft Azure Event Grid Hybrid Connection Consumer sample for C# performs that operation. Já terminou os passos dos pré-requisitos.You've already finished the prerequisite steps.

  1. Certifique-se de que tem o Visual Studio 2019 ou mais tarde.Make sure you have Visual Studio 2019 or later.

  2. Clone o repositório para o seu computador local.Clone the repository to your local machine.

  3. Carregue o projeto HybridConnectionConsumer no Visual Studio.Load HybridConnectionConsumer project in Visual Studio.

  4. Em Program.cs, substitua <relayConnectionString> e <hybridConnectionName> pela cadeia de ligação de reencaminhamento e pelo nome da ligação híbrida que criou.In Program.cs, replace <relayConnectionString> and <hybridConnectionName> with the relay connection string and hybrid connection name that you created.

  5. Compilar e executar a aplicação a partir do Visual Studio.Compile and run the application from Visual Studio.

Enviar um evento para o seu tópicoSend an event to your topic

Vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final.Let's trigger an event to see how Event Grid distributes the message to your endpoint. Este artigo mostra como utilizar a CLI do Azure para acionar o evento.This article shows how to use Azure CLI to trigger the event. Em alternativa, pode utilizar a aplicação do publicador do Event Grid.Alternatively, you can use Event Grid publisher application.

Em primeiro lugar, vamos obter o URL e a chave do tópico personalizado.First, let's get the URL and key for the custom topic. Novamente, utilize o nome do tópico personalizado de <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 artigo, vai utilizar dados do evento de exemplo para enviar para o tópico personalizado.To simplify this article, you use sample event data to send to the custom topic. Normalmente, uma aplicação ou serviço do Azure enviaria os dados do evento.Typically, an application or Azure service would send the event data. CURL é um utilitário que envia os pedidos HTTP.CURL is a utility that sends HTTP requests. Neste artigo, utilize o CURL para enviar o evento para o tópico 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

A aplicação de serviço de escuta deverá receber a mensagem de evento.Your listener application should receive the event message.

Limpar os recursosClean up resources

Se quiser continuar a trabalhar com este evento, não limpe os recursos criados neste artigo.If you plan to continue working with this event, don't clean up the resources created in this article. Caso contrário, utilize o comando seguinte para eliminar os recursos que criou neste artigo.Otherwise, use the following command to delete the resources you created in this article.

az group delete --name gridResourceGroup

Passos seguintesNext steps

Agora que sabe como criar tópicos e subscrições de eventos, saiba mais sobre o que o Event Grid pode ajudá-lo a fazer:Now that you know how to create topics and event subscriptions, learn more about what Event Grid can help you do: