Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Azure Event Grid é um serviço de eventos para a cloud. Neste artigo, você usa o Azure PowerShell para assinar eventos de armazenamento de Blob, disparar um evento e exibir o resultado.
Normalmente, envia eventos para um ponto final que processa os dados de eventos e efetua ações. No entanto, para simplificar este artigo, vai enviar eventos para uma aplicação Web que recolhe e apresenta as mensagens.
Quando tiver terminado, verá que os dados do evento foram enviados para a aplicação Web.
Configuração
Observação
Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Este artigo requer que você esteja executando a versão mais recente do Azure PowerShell. Se precisar de instalar ou atualizar, veja Instalar e configurar o Azure PowerShell.
Iniciar sessão no Azure
Entre na sua assinatura do Azure com o Connect-AzAccount comando e siga as instruções na tela para autenticar.
Connect-AzAccount
Este exemplo usa westus2 e armazena a seleção em uma variável para uso em todo o texto.
$location = "westus2"
Criar um grupo de recursos
Os tópicos do Event Grid são recursos do Azure e têm de ser colocados num grupo de recursos do Azure. Um 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 New-AzResourceGroup .
O exemplo seguinte cria um grupo de recursos com o nome gridResourceGroup na localização westus2.
$resourceGroup = "gridResourceGroup"
New-AzResourceGroup -Name $resourceGroup -Location $location
Criar uma conta de armazenamento
Os eventos de armazenamento de blobs estão disponíveis em contas de armazenamento para fins gerais v2 e contas de armazenamento de Blobs. As contas de armazenamento geral v2 suportam todas as funcionalidades de todos os serviços de armazenamento, incluindo Armazenamento de Blobs, Ficheiros, Filas e Tabelas. Uma conta de armazenamento de Blobs é uma conta de armazenamento especializada para armazenar os seus dados não estruturados como blobs (objetos) no Armazenamento do Azure. As contas de armazenamento de Blobs são semelhantes às contas de armazenamento para fins gerais e partilham todas as excelentes características de durabilidade, disponibilidade, escalabilidade e desempenho que são utilizadas atualmente, incluindo uma consistência de 100% da API para os blobs de blocos e os blobs de acréscimo. Para mais informações, veja Visão geral de conta de armazenamento do Azure.
Crie uma conta de armazenamento de Blob com replicação LRS usando New-AzStorageAccount e, em seguida, recupere o contexto da conta de armazenamento que define a conta de armazenamento a ser usada. Ao agir em uma conta de armazenamento, você faz referência ao contexto em vez de fornecer repetidamente as credenciais. Este exemplo cria uma conta de armazenamento chamada gridstorage com LRS (armazenamento com redundância local).
Observação
Os nomes de conta de armazenamento estão em um espaço de nome global, portanto, você precisa acrescentar alguns caracteres aleatórios ao nome fornecido neste script.
$storageName = "gridstorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name $storageName `
-Location $location `
-SkuName Standard_LRS `
-Kind BlobStorage `
-AccessTier Hot `
-AllowBlobPublicAccess $false
$ctx = $storageAccount.Context
Criar um endereço de mensagem
Antes de subscrever o tópico, vamos criar o ponto final para a mensagem de evento. Normalmente, o endpoint executa ações com base nos dados do evento. Para simplificar esse início rápido, implante um aplicativo Web pré-criado que exibe as mensagens do evento. A solução implantada inclui um plano do Serviço de Aplicativo, um aplicativo Web do Serviço de Aplicativo e código-fonte do GitHub.
Substitua <your-site-name> por um nome exclusivo para a aplicação Web. O nome da aplicação Web deve ser exclusivo, porque faz parte da entrada DNS.
$sitename="<your-site-name>"
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroup `
-TemplateUri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" `
-siteName $sitename `
-hostingPlanName viewerhost
A implantação pode levar alguns minutos para ser concluída. Após a implementação ter sido concluída com êxito, verifique a aplicação Web para verificar se está em execução. No navegador web, vá para: https://<your-site-name>.azurewebsites.net
Você deverá ver o site sem mensagens exibidas atualmente.
Ativar o fornecedor de recursos do Event Grid
Se ainda não tiver utilizado anteriormente o Event Grid na sua subscrição do Azure, precisa de registar o fornecedor de recursos do Event Grid. Execute o seguinte comando:
Register-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
Pode demorar algum tempo para o registo terminar. Para ver o estado, execute:
Get-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
Quando RegistrationStatus está Registered, ficas pronto para continuar.
Subscrever à sua conta de armazenamento
Pode subscrever um tópico para indicar ao Event Grid quais eventos pretende acompanhar. O exemplo a seguir subscreve a conta de armazenamento que criou e passa o URL da sua aplicação web como ponto de extremidade para notificação de eventos. O ponto final para a aplicação Web tem de incluir o sufixo /api/updates/.
$storageId = (Get-AzStorageAccount -ResourceGroupName $resourceGroup -AccountName $storageName).Id
$endpoint="https://$sitename.azurewebsites.net/api/updates"
New-AzEventGridSubscription `
-EventSubscriptionName gridBlobQuickStart `
-Endpoint $endpoint `
-ResourceId $storageId
Exiba seu aplicativo Web novamente e observe que um evento de validação de assinatura foi enviado para ele. Selecione o ícone de olho para expandir os dados do evento. O Event Grid envia o evento de validação para o endpoint verificar se deseja receber dados de eventos. O aplicativo Web inclui código para validar a assinatura.
Acionar um evento a partir do armazenamento de Blobs
Agora, vamos acionar um evento para ver como o Event Grid distribui a mensagem para o ponto final. Primeiro, vamos criar um contêiner e um objeto. Em seguida, vamos carregar o objeto no contêiner.
$containerName = "gridcontainer"
New-AzStorageContainer -Name $containerName -Context $ctx
echo $null >> gridTestFile.txt
Set-AzStorageBlobContent -File gridTestFile.txt -Container $containerName -Context $ctx -Blob gridTestFile.txt
Acionou o evento e o Event Grid 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/gridcontainer/blobs/gridTestFile.txt",
"eventType": "Microsoft.Storage.BlobCreated",
"eventTime": "2017-08-16T20:33:51.0595757Z",
"id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
"data": {
"api": "PutBlockList",
"clientRequestId": "Azure-Storage-PowerShell-d65ca2e2-a168-4155-b7a4-2c925c18902f",
"requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
"eTag": "0x8D4E4E61AE038AD",
"contentType": "application/octet-stream",
"contentLength": 0,
"blobType": "BlockBlob",
"url": "https://myblobstorageaccount.blob.core.windows.net/gridcontainer/gridTestFile.txt",
"sequencer": "00000000000000EB0000000000046199",
"storageDiagnostics": {
"batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]
Limpar recursos
Se pretende continuar a utilizar esta conta de armazenamento e subscrição de eventos, não remova os recursos indicados neste artigo. Se você não planeja continuar, use o comando a seguir para excluir os recursos criados neste artigo.
Remove-AzResourceGroup -Name $resourceGroup
Próximos passos
Agora que sabe como criar tópicos e subscrições de eventos, saiba mais sobre os Eventos de armazenamento de Blobs o que o Event Grid pode ajudá-lo a fazer: