Partilhar via


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 Azure Event Grid para assinantes, como Azure Functions, Azure Logic Apps ou até mesmo para o 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: encaminhar os eventos do Armazenamento de Blobs para o endpoint web no portal do Azure
PowerShell Início Rápido: Redirecionar eventos de armazenamento para o endpoint de web com 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 enviar mensagens sobre eventos aos assinantes. Esta imagem ilustra a relação entre editores de eventos, assinaturas de eventos e manipuladores de eventos.

Modelo do Event Grid

Primeiro, subscreva um endpoint a um evento. Em seguida, quando um evento é acionado, o serviço Evento Grid enviará dados sobre esse evento para o endpoint.

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

  • 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 contentores específicos que compartilham um prefixo de nome de blob, utilize um filtro subjectBeginsWith 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 Gerir simultaneidade no Armazenamento de Blobs.

  • 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 para os assinantes, o que assegura que todas as mensagens sejam entregues. No entanto, devido a retransmissões entre os nós do back-end e serviços, ou à disponibilidade de assinaturas, podem ocorrer mensagens duplicadas. 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 BlockBlob ou PageBlob.

  • Utilize o campo URL com os construtores CloudBlockBlob e CloudAppendBlob para aceder ao 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 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 REST API do CopyBlob, PutBlob, PutBlockList ou FlushWithClose. Essas chamadas de API acionam o evento Microsoft.Storage.BlobCreated somente depois que os dados são totalmente confirmados em um Blob em Blocos. 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: