Guia de Instrução: encaminhe eventos de armazenamento para o ponto final da Web com o Azure CLI

A Grelha de Eventos do Azure é um serviço de evento para a nuvem. Neste artigo, utiliza o CLI do Azure para subscrever eventos de armazenamento de Blob e aciona o evento para ver o resultado.

Normalmente, envia eventos para um ponto final que processa os dados do evento e ecorre ações. No entanto, para simplificar este artigo, envia os eventos para uma aplicação Web que recolhe e apresenta as mensagens.

Quando concluir os passos descritos neste artigo, verá que os dados do evento foram enviados para a aplicação Web.

Screenshot of the Azure Event Grid Viewer that shows event data that has been sent to the web app.

Se não tiver uma subscrição do Azure, crieuma conta gratuita antes de começar.

Pré-requisitos

  • Este artigo necessita da versão 2.0.70 ou posterior do CLIZure. Se estiver a utilizar a Shell Cloud do Azure, a versão mais recente já está instalada.

Criar um grupo de recursos

Os tópicos da Grelha de Eventos são recursos do Azure e têm de ser colocados num grupo de recursos do Azure. O grupo de recursos é uma coleção lógica na qual os recursos do Azure são implementados e geridos.

Crie um grupo de recursos com o comando criar do grupo Az.

O exemplo seguinte cria um grupo de recursos <resource_group_name> denominado na <resource_group_name> Substitua <resource_group_name> por um nome exclusivo para o seu grupo de recursos.

az group create --name <resource_group_name> --location westcentralus

Criar uma conta de armazenamento

Os eventos de armazenamento de blob estão disponíveis em contas de armazenamento v2 para fins gerais e contas de armazenamento de Blob. As contas de armazenamento v2 para fins gerais suportam todas as funcionalidades de todos os serviços de armazenamento, incluindo Blobs, Ficheiros, Filas e Tabelas. Uma conta de armazenamento Blob é uma conta de armazenamento especializado para armazenar os seus dados não estruturados como blobs (objetos) no Azure Armazenamento. As contas de armazenamento blob são como contas de armazenamento para fins gerais e partilham todas as funcionalidades de desempenho, durabilidade, disponibilidade, escalabilidade e desempenho que utiliza atualmente, incluindo a consistência de 100% da API para bloquear blobs e acrescenta blobs. Para obter mais informações, consulte o resumo da conta de armazenamento do Azure.

Substitua <storage_account_name> por um nome exclusivo para a sua conta de armazenamento e pelo grupo de recursos que criou <resource_group_name> anteriormente.

az storage account create \
  --name <storage_account_name> \
  --location westcentralus \
  --resource-group <resource_group_name> \
  --sku Standard_LRS \
  --kind BlobStorage \
  --access-tier Hot

Criar um ponto final de mensagem

Antes de subscrever o tópico, vamos criar o ponto final da mensagem do evento. Normalmente, o ponto final assume ações com base nos dados do evento. Para simplificar este guia de instrução rápida, implemente uma aplicação Web pré-criada que apresenta as mensagens do evento. A solução implementada inclui um plano de Serviço de Aplicações, uma aplicação Web do Serviço de Aplicações e um código fonte GitHub.

Substitua <your-site-name> por um nome exclusivo para a sua aplicação Web. O nome da aplicação Web tem de ser exclusivo porque faz parte da entrada DNS.

sitename=<your-site-name>

az deployment group create \
  --resource-group <resource_group_name> \
  --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
  --parameters siteName=$sitename hostingPlanName=viewerhost

A implementação poderá demorar alguns minutos a ser concluída. Após a implementação ter sido implementada com êxito, veja a sua aplicação Web para se certificar de que está a ser executada. Num browser, navegue até: https://<your-site-name>.azurewebsites.net

Deverá ver o site sem mensagens atualmente apresentadas.

Ativar o fornecedor de recursos da Grelha de Eventos

Se ainda não tiver utilizado a Grelha de Eventos na sua subscrição do Azure, poderá ter de registar o fornecedor de recursos da Grelha de Eventos. Execute o seguinte comando para registar o fornecedor:

az provider register --namespace Microsoft.EventGrid

Poderá demorar algum tempo até que o registo termine. Para verificar o estado, execute:

az provider show --namespace Microsoft.EventGrid --query "registrationState"

Quando registrationState estiver , está pronto para Registered continuar.

Subscrever a sua conta de armazenamento

Tem de subscrever um tópico para dizer à Grelha do Evento os eventos que pretende controlar e para onde enviar esses eventos. O exemplo seguinte subscreve a conta de armazenamento que criou e transmite o URL a partir da sua aplicação Web como ponto final para notificação de evento. Substitua <event_subscription_name> por um nome para a sua subscrição do evento. Para <resource_group_name> e , utilize os valores que criou <storage_account_name> anteriormente.

O ponto final da aplicação Web tem de incluir o sufixo /api/updates/ .

storageid=$(az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

az eventgrid event-subscription create \
  --source-resource-id $storageid \
  --name <event_subscription_name> \
  --endpoint $endpoint

Veja novamente a sua aplicação Web e repare que foi enviado um evento de validação de subscrição para o mesmo. Selecione o ícone de olho para expandir os dados do evento. A Grelha de Eventos envia o evento de validação para que o ponto final possa verificar se pretende receber dados do evento. A aplicação Web inclui código para validar a subscrição.

View subscription event

Aciona um evento a partir do armazenamento de Blob

Agora, vamos ativar um evento para ver como a Grelha de Eventos distribui a mensagem pelo seu ponto final. Primeiro, vamos configurar o nome e chave para a conta de armazenamento e, em seguida, criamos um contentor e, em seguida, criamos e carregamos um ficheiro. Novamente, utilize os valores para <storage_account_name> e <resource_group_name> que criou anteriormente.

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_KEY="$(az storage account keys list --account-name <storage_account_name> --resource-group <resource_group_name> --query "[0].value" --output tsv)"

az storage container create --name testcontainer

touch testfile.txt
az storage blob upload --file testfile.txt --container-name testcontainer --name testfile.txt

Acionou o evento e a Grelha de Eventos enviou a mensagem para o ponto final que configurou ao subscrever. Veja a sua aplicação Web para ver o evento que acabou de enviar.

[{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myrg/providers/Microsoft.Storage/storageAccounts/myblobstorageaccount",
  "subject": "/blobServices/default/containers/testcontainer/blobs/testfile.txt",
  "eventType": "Microsoft.Storage.BlobCreated",
  "eventTime": "2017-08-16T20:33:51.0595757Z",
  "id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
  "data": {
    "api": "PutBlockList",
    "clientRequestId": "d65ca2e2-a168-4155-b7a4-2c925c18902f",
    "requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
    "eTag": "0x8D4E4E61AE038AD",
    "contentType": "text/plain",
    "contentLength": 0,
    "blobType": "BlockBlob",
    "url": "https://myblobstorageaccount.blob.core.windows.net/testcontainer/testblob1.txt",
    "sequencer": "00000000000000EB0000000000046199",
    "storageDiagnostics": {
      "batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
    }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

Limpar recursos

Se planeia continuar a trabalhar com esta conta de armazenamento e subscrição de eventos, não limpe os recursos criados neste artigo. Se não planeia continuar, utilize o seguinte comando para eliminar os recursos que criou neste artigo.

Substitua <resource_group_name> pelo grupo de recursos que criou acima.

az group delete --name <resource_group_name>

Passos seguintes

Agora que sabe como criar tópicos e subscrições de eventos, saiba mais sobre Eventos de armazenamento de Blob e o que a Grelha de Eventos pode ajudá-lo a fazer: