Reagir aos eventos de armazenamento de Blobs

Os eventos do Armazenamento Azure permitem que os aplicativos reajam a eventos, como a criação e a exclusão de blobs. Isso é feito sem a necessidade de código complicado ou serviços de sondagem caros e ineficientes. A melhor parte é que você paga apenas pelo que usa.

Os eventos de armazenamento de blobs são enviados por push usando a Grade de Eventos do Azure a assinantes como o Azure Functions, os Aplicativos Lógicos do Azure ou até mesmo o próprio ouvinte HTTP. A grade de eventos fornece entrega de eventos confiável para seus aplicativos por meio de políticas de repetição avançadas e mensagens mortas.

Consulte o artigo Esquemas de evento do armazenamento de blobs para exibir a lista completa dos eventos compatíveis com o armazenamento de blobs.

Os cenários comuns de eventos de armazenamento de Blobs incluem processamento de vídeo ou imagem, indexação de pesquisa ou qualquer fluxo de trabalho orientado a arquivos. Os carregamentos de arquivo assíncronos são uma excelente opção para eventos. Quando as alterações não forem frequentes, mas seu cenário exigir uma capacidade de resposta imediata, a arquitetura baseada em eventos pode ser especialmente eficaz.

Se você quiser experimentar os eventos do armazenamento de blobs, confira qualquer um destes artigos de guia de início rápido:

Se você quiser usar esta ferramenta: Confira este artigo:
Portal do Azure Início Rápido: Encaminhar eventos de Armazenamento de Blobs para o ponto de extremidade da Web com o portal do Azure
PowerShell Início Rápido: Encaminhar eventos de armazenamento para o ponto de extremidade da Web com o PowerShell
CLI do Azure Início Rápido: encaminhar eventos de armazenamento para o ponto de extremidade Web com a CLI do Azure

Para exibir exemplos em detalhes da reação a eventos de armazenamento de blobs usando o Azure Functions, consulte estes artigos:

Observação

O armazenamento (v1 de uso geral)não dá suporte à integração da Grade de Eventos.

O modelo de evento

A Grade de eventos usa assinaturas de evento para rotear mensagens de evento para os assinantes. Essa imagem ilustra a relação entre os editores de eventos, as assinaturas de evento e os manipuladores de eventos.

Modelo da Grade de Eventos

Primeiro, assine um ponto de extremidade para um evento. Em seguida, quando um evento for disparado, o serviço de Grade de eventos enviará dados sobre esse evento para o ponto de extremidade.

Consulte o artigo Esquemas de evento do armazenamento de blobs para exibir:

  • Uma lista completa de eventos de armazenamento de blobs e como cada evento é disparado.

  • Um exemplo dos dados que a Grade de eventos enviaria para cada um desses eventos.

  • A finalidade de cada par chave-valor que aparece nos dados.

Filtragem de eventos

Os eventos de blob podem ser filtrados pelo tipo de evento, pelo nome do contêiner ou pelo nome do objeto que foi criado/excluído. Os filtros na Grade de Eventos coincidem com o início ou o fim do assunto para que os eventos com um assunto correspondente acessem o assinante.

Para saber mais sobre como aplicar filtros, confira Filtrar eventos para a Grade de Eventos.

O assunto de eventos do Armazenamento de Blobs usa o formato:

/blobServices/default/containers/<containername>/blobs/<blobname>

Para corresponder todos os eventos de uma conta de armazenamento, você pode deixar os filtros de assunto vazios.

Para corresponder os eventos de blobs criados em um conjunto de contêineres que compartilham um prefixo, use um filtro subjectBeginsWith como:

/blobServices/default/containers/containerprefix

Para corresponder os eventos de blobs criados em um contêiner específico, use um filtro subjectBeginsWith como:

/blobServices/default/containers/containername/

Para corresponder os eventos de blobs criados em um contêiner específico que compartilha um prefixo de nome de blob, use um filtro subjectBeginsWith como:

/blobServices/default/containers/containername/blobs/blobprefix

Para corresponder os eventos de blobs criados em um contêiner específico que compartilha um sufixo de nome de blob, use um filtro subjectEndsWith como “.log” ou “.jpg”. Para saber mais, confira Conceitos da Grade de Eventos.

Práticas para consumo de eventos

Aplicativos que manipulam eventos de Armazenamento de Blobs devem seguir algumas práticas recomendadas:

  • Como várias assinaturas podem ser configuradas para eventos de rota para o mesmo manipulador de eventos, é importante não supor que os eventos sejam de uma fonte específica, mas para verificar o tópico de mensagem a fim de garantir que ela venha da conta de armazenamento que você está esperando.

  • Da mesma forma, verifique se o eventType é do tipo que você está preparado para processar, e não suponha que todos os eventos recebidos serão os tipos esperados.

  • Embora a maioria das mensagens chegue quase em tempo real, não há nenhum contrato de nível de serviço em relação ao tempo necessário para recebimento de uma mensagem. Em alguns casos, a mensagem pode levar alguns minutos para chegar. Como as mensagens podem chegar após algum atraso, use os campos de etag para entender se suas informações sobre objetos ainda estão atualizadas. Para saber como usar o campo ETag, consulte Como gerenciar a simultaneidade no armazenamento de Blobs.

  • Como as mensagens podem chegar fora de ordem, use os campos do sequenciador para entender a ordem de eventos em qualquer objeto específico. O campo Sequencer é um valor da cadeia de caracteres que representa a sequência lógica de eventos para qualquer nome de blob específico. Você pode usar a comparação de cadeia de caracteres padrão para entender a sequência relativa dos dois eventos no mesmo nome de blob.

  • Os eventos de armazenamento garantem a entrega pelo menos uma vez aos assinantes, o que garante que todas as mensagens sejam emitidas. No entanto, devido a novas tentativas entre nós de back-end e serviços ou disponibilidade de assinaturas, podem ocorrer mensagens duplicadas. Para saber mais sobre a entrega e a repetição de mensagens, confira Entrega e repetição de mensagem da Grade de Eventos.

  • Use o campo blobType para entender os tipos de operações permitidos no blob, e quais tipos de biblioteca de cliente você deve usar para acessar o blob. Os valores válidos são BlockBlob ou PageBlob.

  • Use o campo de url com os construtores CloudBlockBlob e CloudAppendBlob para acessar o blob.

  • Ignore os campos que você não entende. Essa prática ajudará você a manter-se resiliente a novos recursos que possam ser adicionados no futuro.

  • Se você quiser garantir que o eventoMicrosoft.Storage.BlobCreated seja disparado apenas quando um Blob de Blocos for completamente confirmado, filtre o evento das chamadas da API REST CopyBlob, PutBlob, PutBlockList ou FlushWithClose. Estas chamadas à API disparam o evento Microsoft. Storage. BlobCreated somente depois que os dados são totalmente confirmados em um blob de blocos. Para saber como criar um filtro,consulteEventos de filtro da Grade de Eventos.

Suporte a recursos

O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximas etapas

Saiba mais sobre a Grade de Eventos e experimente os eventos do Armazenamento de Blobs: