DynamoDB não pode acessar o stream – o stream não está habilitado

TL;DR — Um consumidor (um mapeamento de origem de eventos do Lambda, um leitor do Kinesis Adapter ou uma chamada DescribeStream/GetShardIterator bruta) tentou ler um stream DynamoDB em uma tabela onde os Streams estão desativados ou usou um stream obsoleto ARN de antes dos Streams serem reativados. Habilite Streams DynamoDB na tabela e aponte o consumidor para o LatestStreamArn atual da tabela.

O que significa

Cannot access stream arn:aws:dynamodb:us-east-1:111122223333:table/Orders/stream/... .
Please ensure the ARN is correct and the stream is enabled.

DynamoDB Streams must be enabled on the table.

DynamoDB Streams é um recurso opcional. Uma tabela só possui um stream quando você configura um StreamSpecification com StreamEnabled: true. Se um leitor (geralmente um mapeamento de origem de eventos Lambda) estiver conectado a uma tabela que não possui fluxo ativo (ou a um ARN que não existe mais), o mapeamento não poderá ser anexado e relatará que não pode acessar o fluxo.

Por que isso acontece

  • Streams nunca foram habilitados na tabela, mas o consumidor espera um.
  • Streams foram desativados e reativados — cada ativação gera um stream ARN novo em folha (com um novo sufixo de carimbo de data/hora). Um consumidor segurando o antigo ARN está lendo um fluxo desabilitado que permanece legível por no máximo mais 24 horas, depois seus registros expiram.
  • Desvio de infraestrutura como código — um consumidor CDK/CloudFormation/Terraform faz referência a uma tabela importada por nome/ARN que não propagou sua configuração de stream, portanto, as ferramentas pensam que os Streams estão desativados.
  • Fluxo errado ARN — usando a tabela ARN ou um espaço reservado .../stream/latest, em vez do LatestStreamArn real.

Como corrigir

  1. Ative Streams na tabela. Defina StreamSpecification { StreamEnabled: true, StreamViewType: NEW_AND_OLD_IMAGES } (ou qualquer tipo de visualização que seu consumidor precise) via UpdateTable, o console ou seu IaC.
  2. Leia o fluxo atual ARN. Chame DescribeTable e use o campo LatestStreamArn — nunca um ARN feito à mão ou em cache.
  3. Reaponte o consumidor para o novo ARN após qualquer ciclo de desativação do /enable; recrie o mapeamento da fonte de eventos do Lambda se ele estiver vinculado ao stream antigo.
  4. Conceder permissão de leitura — a função do consumidor precisa de dynamodb:DescribeStream, GetRecords, GetShardIterator e ListStreams no stream ARN.
  5. Não confunda tabela com stream ARN — o stream ARN termina em /stream/<timestamp>, a tabela ARN não.

Precisa inspecionar a tabela e sua configuração de stream sem o console? O aplicativo de desktop DynoTable exibe o status do stream ao lado da tabela para que você possa confirmar se está ativado antes de apontar um leitor para ele.

Antes de tentar de novo no DynoTable

Antes de anexar um mapeamento de origem de eventos do Lambda, abra a tabela no DynoTable e confirme se o Streams está ativado e qual StreamViewType está definido (detalhes da tabela). O DynoTable mostra a configuração do fluxo ao lado do esquema para que você não precise passar pelo console do AWS.

Depois de desabilitar e reativar Streams, o ARN muda — atualize a tabela no DynoTable e copie a identidade do stream atual do AWS (LatestStreamArn via CLI/DescribeTable) para o consumidor. Use ⌘P para permanecer no perfil correto da conta/region. A inspeção diária de itens permanece no DynoTable; os consumidores de fluxo permanecem nas ferramentas Lambda/Kinesis. O construtor de consultas ajuda a verificar se a tabela ainda fornece leituras codificadas após uma alternância de Streams.

Fontes

Erros relacionados

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.