Reagir aos eventos de armazenamento de Blobs

Os eventos do Armazenamento do Azure permitem que os aplicativos reajam a eventos, como a criação e a exclusão de blobs. Fá-lo sem a necessidade de códigos complicados ou de serviços de sondagem dispendiosos e ineficientes. A melhor parte é que você paga apenas pelo que usa.

Os eventos de armazenamento de Blob são enviados por push usando a Grade de Eventos do Azure para assinantes, como o Azure Functions, os Aplicativos Lógicos do Azure ou até mesmo para seu próprio ouvinte http. O Event Grid proporciona uma entrega de eventos fiável às aplicações através de políticas de repetição avançadas e mensagens não entregues.

Consulte o artigo Esquema de eventos de armazenamento de Blob para exibir a lista completa dos eventos suportados pelo armazenamento de Blob.

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

Se você quiser experimentar eventos de armazenamento de blob, consulte qualquer um destes artigos de início rápido:

Se você quiser usar esta ferramenta: Veja este artigo:
Portal do Azure Guia de início rápido: rotear eventos de armazenamento de Blob para o ponto de extremidade da Web com o portal do Azure
PowerShell Guia de início rápido: rotear 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 final da Web com a CLI do Azure

Para exibir exemplos detalhados de como reagir a eventos de armazenamento de Blob usando funções do Azure, consulte estes artigos:

Nota

O armazenamento (finalidade geral v1)não suporta a integração com a Grade de Eventos.

O modelo de evento

A Grade de Eventos usa assinaturas de eventos para rotear mensagens de eventos para assinantes. Esta imagem ilustra a relação entre editores de eventos, assinaturas de eventos e manipuladores de eventos.

Modelo de grade de eventos

Primeiro, inscreva um ponto de extremidade em um evento. Em seguida, quando um evento é acionado, o serviço Grade de Eventos enviará dados sobre esse evento para o ponto de extremidade.

Consulte o artigo Esquema de eventos de armazenamento de Blob para exibir:

  • Uma lista completa de eventos de armazenamento de Blob e como cada evento é acionado.

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

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

Filtrando eventos

Os eventos de Blob podem ser filtrados pelo tipo de evento, nome do contêiner ou nome do objeto que foi criado/excluído. Os filtros na Grelha de Eventos correspondem ao início ou ao fim do assunto, pelo que os eventos com um assunto correspondente vão para o subscritor.

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

O assunto dos eventos de armazenamento de Blob usa o formato:

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

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

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

/blobServices/default/containers/containerprefix

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

/blobServices/default/containers/containername/

Para corresponder a eventos de blobs criados em contêineres específicos que compartilham um prefixo de nome de blob, use um subjectBeginsWith filtro como:

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

Para corresponder a eventos de blobs criados em contêineres específicos que compartilham um sufixo de blob, use um subjectEndsWith filtro como ".log" ou ".jpg". Para obter mais informações, consulte Conceitos de grade de eventos.

Práticas de consumo de eventos

Os aplicativos que manipulam eventos de armazenamento de Blob devem seguir algumas práticas recomendadas:

  • Como várias assinaturas podem ser configuradas para rotear eventos para o mesmo manipulador de eventos, é importante não presumir que os eventos são de uma fonte específica, mas verificar o tópico da mensagem para garantir que ela venha da conta de armazenamento esperada.

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

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

  • Como as mensagens podem chegar fora de ordem, use os campos sequenciadores para entender a ordem dos eventos em qualquer objeto específico. O campo sequenciador é um valor de 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 de 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 saídas. No entanto, devido a novas tentativas entre nós de back-end e serviços ou disponibilidade de assinaturas, mensagens duplicadas podem ocorrer. Para saber mais sobre a entrega e repetição de mensagens, consulte Entrega e repetição de mensagens da Grade de Eventos.

  • Use o campo blobType para entender que tipo de operações são permitidas no blob e quais tipos de biblioteca de cliente você deve usar para acessar o blob. Os valores válidos são ou BlockBlobPageBlob.

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

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

  • Se você quiser garantir que o evento Microsoft.Storage.BlobCreated seja acionado somente quando um Blob de Bloco estiver completamente confirmado, filtre o evento para as chamadas da CopyBlobAPI , PutBlobPutBlockList ou FlushWithClose REST. Essas chamadas de API acionam o evento Microsoft.Storage.BlobCreated somente depois que os dados são totalmente confirmados em um Blob de bloco. Para saber como criar um filtro, consulte Filtrar eventos para Grade de Eventos.

Suporte de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP). Se você habilitou qualquer um desses recursos, consulte Suporte ao recurso de Armazenamento de Blob nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximos passos

Saiba mais sobre a Grade de Eventos e experimente os eventos de armazenamento de Blob: