Change feed para Arquivos do Azure (pré-visualização)

O feed de alterações do Arquivos do Azure fornece um log duradouro, ordenado, imutável e somente leitura das alterações em arquivos e diretórios em um compartilhamento de arquivos do Azure. Os aplicativos podem processar o feed em modo de streaming ou em lote para identificar mudanças sem fazer a varredura repetidamente em toda a pasta compartilhada.

Use o feed de alterações dos Arquivos do Azure para criar soluções que:

  • Faça cópia de segurança incremental e recuperação de desastres.
  • Mantenha um índice de busca, cache ou catálogo.
  • Sincronizar os dados para outro armazenamento ou sistema de arquivos local.
  • Auditar e analisar alterações em arquivos e diretórios.
  • Conduza pipelines que processam conteúdo alterado.

Note

O acesso à prévia é habilitado por assinatura. Preencha o formulário de inscrição de prévia: Inscreva-se no Preview: Arquivos do Azure Change Feed.

A equipe habilita a versão preliminar para assinaturas aprovadas e entra em contato com você quando o recurso está disponível. Você só pode ativar o feed de mudanças do Arquivos do Azure depois que o acesso ao preview for concedido.

Importante

Este recurso está atualmente em versão prévia. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Como o feed de alterações funciona

Ativar o feed de mudanças é uma operação em duas etapas. Primeiro, ative a funcionalidade na conta de armazenamento. Depois, ative o feed de alterações em cada compartilhamento de arquivos que você deseja acompanhar. Esse escopo difere do feed de mudanças do Armazenamento de Blobs, que você habilita uma vez para toda a conta.

Cada alteração de dados ou metadados com suporte em um compartilhamento rastreado é registrada como um evento em um log do Apache Avro somente de acréscimo. O serviço armazena o log de cada compartilhamento em um contêiner de blob do sistema na mesma conta de armazenamento.

O feed de mudança possui as seguintes características:

  • Ordenados e imutáveis: Eventos são agrupados em janelas de tempo chamadas segmentos. Depois que um segmento é finalizado, ele não muda, então as leituras são repetíveis e o consumidor pode reiniciar a partir de uma posição salva.
  • Assíncrono: os eventos ficam disponíveis logo após a conclusão da operação que os produziu. Feed de alterações não é um mecanismo de notificação síncrono.
  • Retomável: Os consumidores podem persistir os tokens de continuação e retomar após uma interrupção.
  • Retenção configurável: O serviço remove automaticamente os eventos após o período de retenção configurado no compartilhamento.
  • Consumidores independentes: Cada aplicação lê e faz checkpoint do log de forma independente.

O registro começa depois que você ativa o feed de alterações. O serviço não registra as alterações feitas antes de você ativar o feed de mudança ou enquanto o feed está desativado.

Suporte de funcionalidades

Item Suporte à visualização prévia
Modelos de cobrança Pagamento conforme o uso padrão
Compartilhamentos de arquivos Premium Sem suporte
Protocolos de compartilhamento API SMB e REST de arquivos
Operações rastreadas Alterações de dados e metadados feitas sobre SMB e a API File REST
Versão mínima do Serviço de arquivos 2026-02-06
Versão mínima da API de gerenciamento 2026-04-01
Biblioteca do cliente Pacote de pré-lançamento .NET Azure.Storage.Files.Shares.ChangeFeed

Habilitar e configurar o change feed

A configuração do feed de alterações usa o plano de controle. Você não pode ativar, desativar ou reconfigurar o feed de alterações por meio da API REST de Arquivos, SMB ou NFS. O plano de dados informa as configurações atuais e a localização do log para que os consumidores possam encontrar o feed.

Ativar o feed de mudanças na conta de armazenamento

Ao criar uma conta de armazenamento, habilite Feed de alterações de arquivos na guia Proteção de dados. Você também pode habilitar a capacidade da conta ao configurar o feed de alterações em um compartilhamento de arquivos existente.

Captura de tela da guia Proteção de dados ao criar uma conta de armazenamento, com Habilitar feed de alterações dos Arquivos do Azure selecionado em Arquivos do Azure.

Quando você ativa essa propriedade, o serviço provisiona um endpoint de Armazenamento de Blobs na conta porque armazena os logs do feed de alterações como blobs.

Habilitar o feed de alterações em um compartilhamento de arquivo

  1. No portal do Azure, abra a conta de armazenamento.
  2. Em Armazenamento de Dados, selecione Compartilhamento de arquivos e depois selecione o compartilhamento de arquivos.
  3. Em Propriedades, localize Status do recurso e selecione Feed de alterações.
  4. Ative o change feed e especifique um período de retenção de 1 a 365 dias.
  5. Clique em Salvar.

Captura de tela de uma página Visão geral de um compartilhamento de arquivos do Azure e do painel Feed de alterações, com Habilitar feed de alterações selecionado.

Você também pode ativar o feed de alterações e definir a retenção ao criar um compartilhamento de arquivos.

Captura de tela da guia Básico do Novo compartilhamento de arquivos clássicos, com a opção Habilitar feed de alterações selecionada.

Se você ativar o feed de alterações sem especificar retenção, o padrão é de sete dias. Os valores válidos de retenção são de 1 a 365 dias. Aumentar a retenção não recupera registros que o serviço já havia deletado.

Verificar a configuração

Um consumidor pode descobrir o log chamando Obter Propriedades do Compartilhamento com a versão 2026-02-06 do Serviço de arquivos ou posterior:

GET https://<storage-account>.file.core.windows.net/<file-share>?restype=share
x-ms-version: 2026-02-06
Authorization: Bearer <access-token>

A resposta inclui os seguintes cabeçalhos:

x-ms-file-enable-change-feed: True
x-ms-file-change-feed-retention-in-days: 7
x-ms-file-blob-container-for-xfiles-change-feed: $fileschangefeed-<GUID>

Esses valores não são retornados para snapshots de compartilhamento. Um compartilhamento que nunca teve feed de alterações configurado informa false e 0.

Desativar o feed de alterações

  1. No portal do Azure, abra a conta de armazenamento.
  2. Em Armazenamento de dados, selecione Compartilhamentos de arquivos e então selecione o compartilhamento de arquivos.
  3. Na página Visão geral, em Propriedades>Status do recurso, selecione o status ao lado de Feed de alterações.
  4. Desmarque Habilitar feed de alterações.
  5. Clique em Salvar.

Quando você desativa o feed de alteração, o sistema para de registrar novos eventos. Registros existentes permanecem acessíveis até o término do período de retenção.

Para desativar a funcionalidade da conta, defina enableFilesChangeFeed para false. Você não pode desabilitar a capacidade da conta enquanto qualquer compartilhamento de arquivos da conta ainda tiver dados do feed de alterações. A solicitação falha com FilesChangeFeedContainersExist. Desabilite o feed de alterações em cada compartilhamento e aguarde os dados do log retidos expirarem.

Consumir o feed de alterações

A forma recomendada de ler o feed de alterações é usando a biblioteca de clientes .NET. O cliente cuida da descoberta de logs, ordenação de segmentos, última marca d’água consumível, desserialização do Avro, detecção de reset e leituras retomáveis.

Instale o pacote de pré-lançamento:

dotnet add package Azure.Storage.Files.Shares.ChangeFeed --prerelease

Crie um cliente de um ShareClient existente e enumere os eventos disponíveis:

using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.ChangeFeed;

var serviceUri = new Uri("https://<storage-account>.file.core.windows.net");
var shareClient = new ShareServiceClient(serviceUri, new DefaultAzureCredential())
    .GetShareClient("<file-share>");

ShareChangeFeedClient changeFeedClient =
    shareClient.GetShareChangeFeedClient();

await foreach (ShareChangeFeedEvent change in changeFeedClient.GetChangesAsync())
{
    Console.WriteLine(
        $"{change.EventTime:o} {change.Reason} {change.EventData.FullFilePath}");
}

O cliente fornece métodos para:

  • Enumere todos os eventos disponíveis até a última marca d'água consumível.
  • Leia um intervalo de tempo delimitado.
  • Retomar a partir de um token de continuação.
  • Enumere as mudanças entre dois snapshots de compartilhamento.
  • Obtenha o ponto completo e seguro mais recente no registro.
  • Verifique se os metadados do snapshot estão finalizados.

Retomar com um token de continuação

Para um consumidor de longa execução, enumere por página e persista o token de continuação somente após processar com sucesso toda a página:

string? continuationToken = LoadCheckpoint();

await foreach (Page<ShareChangeFeedEvent> page in
    changeFeedClient.GetChangesAsync(continuationToken).AsPages())
{
    foreach (ShareChangeFeedEvent change in page.Values)
    {
        Process(change);
    }

    SaveCheckpoint(page.ContinuationToken);
}

Um token de continuação está vinculado à conta de armazenamento que o emitiu. Passe um token salvo para GetChanges ou GetChangesBetweenSnapshots, não para AsPages.

Leia o registro diretamente

Para linguagens sem uma biblioteca cliente de fluxo de alterações, você pode ler o contêiner do sistema com uma biblioteca cliente Armazenamento de Blobs:

  1. Chame Obter Propriedades de Compartilhamento e leia o nome do contêiner de x-ms-file-blob-container-for-xfiles-change-feed.
  2. Leia meta/reset-latest.json e verifique se há um novo identificador de reset.
  3. Leia meta/segments.json e anote a lastConsumable marca d'água.
  4. Para cada segmento até a marca d'água, leia seu arquivo meta.json e confirme que seu status é Finalized.
  5. Leia os blobs do Avro listados por chunkFilePaths.
  6. Processe os registros e avance seu ponto de controle até o final da janela.

Warning

Os contêineres do sistema são gerenciados pelo serviço. Trate o conteúdo deles como somente leitura. Não escreva, modifique ou exclua objetos nesses contêineres. Leia a duração dos segmentos e as localizações dos logs dos metadados dos segmentos, em vez de criar caminhos ou codificar diretamente o comprimento de uma janela.

Cada compartilhamento usa um contêiner chamado $fileschangefeed-<GUID>. Um contêiner $fileschangefeedsys no nível da conta é reservado para uso do serviço e não é acessível com credenciais de clientes.

Alterar registros de eventos

Cada registro Avro descreve uma alteração. A versão atual do esquema é 0.

Field Description
SchemaVersion Versão do esquema do registro. Leia campos pelo nome e ignore campos não reconhecidos.
Reason Código que descreve a mudança.
Protocol Protocolo que produziu a mudança: Smb, Rest, ou Unknown.
EventTime Horário UTC em que a mudança ocorreu.
Id Identificador de correlação para a operação.
Cvnt Número da versão do contêiner do compartilhamento no momento da alteração.
Data.FileId Identificador estável do arquivo ou diretório.
Data.ParentFileId ID do arquivo do diretório pai.
Data.NewParentFileId ID do pai de destino para renomeação ou mudança.
Data.Etag Etiqueta de entidade após a alteração.
Data.FileName Nome do item sem seu caminho de diretório.
Data.FullFilePath Caminho relativo à raiz do compartilhamento no momento da mudança.
Data.NewFullFilePath Caminho de destino para uma renomeação ou movimentação.
Data.IsDirectory Indica se o item é um diretório.
Data.Identity Campos de identidade reservados. Esses campos não estão preenchidos na prévia atual.
Data.Initiator Campo de iniciador reservado. Este campo não está preenchido na prévia atual.

Valores de string indisponíveis são emitidos como N/A. NewParentFileId e NewFullFilePath ficam vazios quando o evento não é uma renomeação ou movimentação. Trate ambas as formas como sem valor.

Alterar códigos de motivo

Os códigos de razão incluem os seguintes valores:

Protocol Códigos de motivos
SMB SmbCreate, SmbRename, SmbDelete, SmbWrite, SmbExtend, SmbCreateTruncate, SetInfo, , SetSecurityInfo
REST RestCreate, RestRename, RestDelete, RestWrite, , RestCreateTruncate, RestSetInfo, RestSetSecurityInfo, , SyncCopyFileAsyncCopyFile
Service RESET, ControlEvent, UnknownEventType

A lista pode crescer com o tempo. Programe os consumidores para ignorarem os códigos de motivo que não reconhecem. Ignore os registros ControlEvent e UnknownEventType.

Lidar com eventos de redefinição

Uma redefinição marca um limite onde o log não é mais contínuo com seu histórico anterior. Os registros anteriores ao limite podem estar ausentes ou podem descrever mudanças que não são mais refletidas no compartilhamento. Os registros posteriores ao limite são completos e consistentes com o compartilhamento.

Os resets podem ocorrer após um failover não planejado gerenciado pelo cliente ou quando o serviço reinicia o acompanhamento de mudanças da conta. O serviço informa um reset tanto como um registro in-band RESET quanto como blobs de marcador sob meta/resets/.

O meta/reset-latest.json ponteiro identifica o marcador de reset mais recente:

{
    "schemaVersion": 1,
    "latestResetId": "9f2c1c6e-4c0a-4d1e-9d6b-2b7a4c1e83f0",
    "latestResetFileTime": 134288352000000000,
    "latestResetTimeUtc": "2026-07-18T08:00:00.000Z",
    "accountName": "mystorageaccount",
    "containerName": "myshare",
    "reason": "CustomerManagedUnplannedFailover",
    "latestMarkerPath": "meta/resets/00134288352000000000.json"
}

O ponteiro não existe para um compartilhamento que nunca foi redefinido. Trate uma resposta 404 como sem redefinição. Use latestResetId para detectar um novo limite e latestMarkerPath para ler seu marcador imutável.

Quando um consumidor detecta um novo identificador de reset:

  1. Pare o processamento incremental e descarte os checkpoints emitidos antes do reset.
  2. Registre o identificador de redefinição e a hora da redefinição.
  3. Recrie a linha de base enumerando todo o compartilhamento ou um novo instantâneo de compartilhamento.
  4. Retome o processamento incremental do limite de redefinição.

Importante

Nunca trate registros anteriores e posteriores a um reset como um histórico completo. Cargas de backup e replicação devem realizar uma enumeração completa após um reset.

A biblioteca cliente pode tanto gerar ShareChangeFeedResetException ou retornar um ShareChangeFeedResetEvent, dependendo do ShareChangeFeedResetPolicy configurado. Leituras limitadas falham na redefinição por padrão. Leituras sem término definido retornam eventos de redefinição em ordem por padrão.

Trabalhe com snapshots compartilhados

Cada evento inclui um número de versão do contêiner. Quando um instantâneo do compartilhamento é feito, o feed escreve metadados que mapeiam o instantâneo para uma versão do contêiner e suas janelas de log delimitadoras.

Use GetSnapshotStatus para confirmar que o instantâneo final está finalizado e depois use GetChangesBetweenSnapshots para enumerar eventos entre dois instantâneos. Consultas com escopo snapshot suportam tokens de continuação.

Diferenças em relação ao change feed do Armazenamento de Blobs

O feed de alterações dos Arquivos do Azure usa o layout do contêiner, a codificação do Avro, o modelo de segmento e a última marca d'água de consumo do feed de mudanças do Armazenamento de Blobs. A tabela a seguir descreve as principais diferenças:

Aspecto Feed de mudanças de Armazenamento de Blobs Feed de alterações do Arquivos do Azure
Scope Habilite uma vez para uma conta e cobre todos os contêineres. Ative na conta e depois em cada compartilhamento.
Localização do log Um $blobchangefeed contêiner por conta. Um contêiner $fileschangefeed-<GUID> por compartilhamento.
Descoberta de logs Usa um nome de contêiner bem conhecido. Usa o nome do contêiner retornado por Get Share Properties.
Identidade do item Usa o nome do blob. Uma renomeação é uma cópia seguida de uma exclusão. Usa IDs estáveis de arquivo e de elemento pai. Renomear e mover preserva o ID do arquivo.
Hierarchy Nomes de blobs podem conter /, mas diretórios não são recursos distintos. Inclui recursos de diretório e eventos de diretório.
Integração de Snapshot Não expõe a enumeração de alterações com escopo de snapshot. Utiliza números de versão do contêiner e metadados snapshot para consultas com escopo de snapshot.
Atribuição do protocolo Não aplicável. Identifica se houve uma mudança em SMB ou REST.
Descontinuidades Não exibe marcadores de redefinição. Usa marcadores de redefinição para identificar failover e limites de redefinição do rastreamento.

Preços e faturação

O serviço armazena os dados do feed de alterações como blobs na mesma conta de armazenamento. O sistema de cobrança cobra pelos dados de log armazenados e pelas solicitações de leitura, nas taxas aplicáveis do Armazenamento de Blobs. A duração da retenção e o volume de alterações afetam diretamente os custos de armazenamento e transação. Para mais informações sobre modelos de faturamento do Arquivos do Azure, veja Entenda o faturamento do Arquivos do Azure.

Limitações de pré-visualização

  • O feed de mudanças está disponível apenas para assinaturas aprovadas para a prévia.
  • Compartilhamentos premium e operações NFS não são suportados.
  • A configuração usa o plano de gerenciamento e não está disponível através da API de Arquivo REST, SMB ou NFS.
  • A configuração não é retornada para snapshots de compartilhamento e não pode ser configurada em um snapshot ou em um compartilhamento deletado de forma suave.
  • Os eventos são assíncronos e apenas as alterações feitas enquanto o feed está ativado são registradas.
  • Os campos de identidade e iniciador não são preenchidos.
  • Os consumidores devem tolerar campos e códigos de razão desconhecidos e lidar com resets.
  • Uma cópia assíncrona emite um evento quando a cópia começa, mas não quando ela é concluída.
  • Uma renomeação que substitui um arquivo existente não identifica o arquivo substituído.

Próximas Etapas