Início Rápido: encaminhar eventos personalizados para o Armazenamento de Filas do Azure através da Grade de Eventos usando a CLI do Azure
A Grade de Eventos do Azure é um agente de eventos altamente escalonável e sem servidor que você pode usar para integrar aplicativos usando eventos. A Grade de Eventos fornece eventos para manipuladores de eventos com suporte e o Armazenamento de Filas do Azure é um deles. Neste artigo, você usa a CLI do Azure para as seguintes etapas:
- Este script cria um tópico personalizado da Grade de Eventos.
- Crie uma assinatura das Filas do Azure para o tópico personalizado.
- Envie eventos de exemplo para o tópico personalizado.
- Verifique se esses eventos são entregues ao Armazenamento de Filas do Azure.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Criar um grupo de recursos
Os tópicos de Grade de Eventos são recursos do Azure e devem ser colocados em um grupo de recursos do Azure. O grupo de recursos do Azure é uma coleção lógica na qual os recursos do Azure são implantados e gerenciados.
Crie um grupo de recursos com o comando az group create. O exemplo a seguir cria um grupo de recursos chamado gridResourceGroup no local westus2.
Observação
Selecione Experimentar ao lado do exemplo da CLI para iniciar o Cloud Shell no painel direito. Selecione o botão Copiar para copiar o comando, cole-o na janela do Cloud Shell e pressione ENTER para executar o comando.
az group create --name gridResourceGroup --location westus2
Habilitar o provedor de recursos da Grade de Eventos
Se você ainda não tiver usado a Grade de Eventos em sua assinatura do Azure, talvez seja necessário registrar o provedor de recursos desse serviço. Execute o seguinte comando para registrar o provedor:
az provider register --namespace Microsoft.EventGrid
A conclusão do registro pode demorar um pouco. Para verificar o status, execute o seguinte comando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando
registrationState
forRegistered
, você está pronto para continuar.
Criar um tópico personalizado
Um tópico de Grade de Eventos fornece um ponto de extremidade definido pelo usuário no qual você posta seus eventos. O exemplo a seguir cria o tópico personalizado no seu grupo de recursos. Substitua <topic_name>
por um nome exclusivo para o tópico personalizado. O nome do tópico da Grade de Eventos deve ser exclusivo porque é representado por uma entrada DNS (Sistema de Nomes de Domínio).
Especifique um nome para o tópico.
topicname="<TOPIC NAME>"
Execute o comando a seguir para criar o tópico.
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Criar Armazenamento de Filas
Antes de assinar o tópico personalizado, vamos criar o ponto de extremidade para a mensagem do evento. Crie um Armazenamento de Filas para coletar os eventos.
Especifique um nome exclusivo para a conta de Armazenamento do Azure.
storagename="<STORAGE ACCOUNT NAME>"
Execute os comandos a seguir para criar uma conta de Armazenamento do Azure e uma fila (chamada
eventqueue
) no armazenamento.queuename="eventqueue" az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)" az storage queue create --name $queuename --account-name $storagename --account-key $key
Assinar um tópico personalizado
O exemplo a seguir assina o tópico personalizado que você criou e transmite a ID de recurso do Armazenamento de Filas para o ponto de extremidade. Com a CLI do Azure, passe a ID de armazenamento da fila como o ponto de extremidade. O ponto de extremidade está no formato:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>
O script a seguir obtém a ID de recurso da conta de armazenamento para a fila. Ele constrói a ID para o armazenamento de fila e assina um tópico de Grade de Eventos. Ele define o tipo de ponto de extremidade como storagequeue
e usa a ID da fila do ponto de extremidade.
Importante
Substitua o espaço reservado de data de validade (<yyyy-mm-dd>
) por um valor real. Por exemplo: 2022-11-17
antes de executar o comando.
storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name mystoragequeuesubscription \
--endpoint-type storagequeue \
--endpoint $queueid \
--expiration-date "<yyyy-mm-dd>"
A conta que cria a assinatura de evento deve ter acesso de gravação ao armazenamento de filas. Observe que uma data de expiração está definida para a assinatura.
Se você usar a API REST para criar a assinatura, passe a ID da conta de armazenamento e o nome da fila como parâmetros separados.
"destination": {
"endpointType": "storagequeue",
"properties": {
"queueName":"eventqueue",
"resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
}
...
Enviar um evento para o tópico personalizado
Vamos disparar um evento para ver como a Grade de Eventos distribui a mensagem para o ponto de extremidade. Primeiro, vamos obter a URL e a chave para o tópico personalizado.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Para simplificar este artigo, use dados de evento de exemplo para enviar ao tópico personalizado. Normalmente, um aplicativo ou serviço do Azure enviaria os dados de evento. CURL é um utilitário que envia solicitações HTTP. Neste artigo, use o CURL para enviar o evento ao tópico personalizado. O exemplo a seguir envia três eventos para o tópico de Grade de Eventos:
for i in 1 2 3
do
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
done
Navegue até o Armazenamento em Filas no portal e observe que a Grade de Eventos enviou esses três eventos para a fila.
Limpar os recursos
Caso planeje continuar a trabalhar com esse evento, não limpe os recursos criados neste artigo. Caso contrário, use os comandos a seguir para excluir os recursos criados por você neste artigo.
az group delete --name gridResourceGroup
Próximas etapas
Agora que você sabe como criar tópicos e assinaturas de evento, saiba mais sobre como a Grade de Eventos pode ajudá-lo:
- Sobre a Grade de Eventos
- Rotear eventos do Armazenamento de Blobs para um ponto de extremidade da Web personalizado
- Monitorar alterações de máquina virtual com a Grade de Eventos do Azure e os Aplicativos Lógicos
- Transmitir Big Data para um data warehouse
Confira os exemplos a seguir para saber mais sobre como publicar e consumir eventos na Grade de Eventos usando diferentes linguagens de programação.