DynamoDB Streams — O ARN fornecido é inválido

TL;DR — Uma chamada Streams API (DescribeStream, GetShardIterator, GetRecords) obteve um stream ARN que não é um descritor de stream atual e bem formado — geralmente um espaço reservado /stream/latest, uma tabela ARN por engano ou um /truncated ARN obsoleto. Obtenha o ARN real do LatestStreamArn do DescribeTable e transmita-o literalmente.

O que significa

ValidationException: The ARN provided is invalid

Um DynamoDB stream ARN tem uma forma estrita:

arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291

O /stream/<timestamp ISO-8601> final é um descritor de stream específico, não um nome simbólico. O endpoint Streams rejeita qualquer coisa que não faça parse como um stream ARN válido e existente com The ARN provided is invalid.

Por que isso acontece

  • Um placeholder /stream/latest (ou similar) — algumas ferramentas e emuladores locais o aceitam, mas o DynamoDB real exige o descritor concreto com timestamp.
  • Passar o table ARN (.../table/TestTable) onde um stream ARN era esperado.
  • Um ARN obsoleto — o Streams foi desabilitado e reabilitado, então o stream atual da tabela tem um novo descritor; o stream antigo permanece legível por apenas 24 horas após ser desabilitado, depois seus registros expiram.
  • Um ARN construído à mão ou truncado — region errada, conta errada, faltando o segmento /stream/..., ou um espaço/quebra de linha extra.
  • Incompatibilidade de region — o cliente Streams está configurado para uma region diferente da que o ARN codifica.

Como corrigir

  1. Obtenha o ARN da fonte da verdade. Chame DescribeTable e leia Table.LatestStreamArn; use essa string exata.
  2. Nunca sintetize o ARN à mão ou use /stream/latest — o segmento de timestamp é atribuído pelo DynamoDB e não pode ser adivinhado.
  3. Use o endpoint DynamoDB Streams, não o endpoint principal do DynamoDB, para DescribeStream/GetShardIterator/GetRecords.
  4. Combine a region do cliente com a region no ARN.
  5. Rebusque após qualquer toggle de Streams — um ciclo de desabilitar/habilitar cria um stream totalmente novo com um descritor diferente, então o ARN anterior não aponta mais para o stream ao vivo.
  6. Apare os espaços ao copiar. Uma quebra de linha no fim de um ARN válido ainda reprova na validação.

Detecte no DynoTable

O DynoTable mostra o LatestStreamArn de cada tabela no painel de metadados da tabela — copie-o literalmente em vez de construir placeholders /stream/latest à mão. Abra a tabela com ⌘K e expanda os detalhes de Stream antes de ligar um consumidor Lambda ou KCL.

Use o Query Builder para confirmar que a tabela é alcançável com o mesmo profile dono do stream. Troque de Region com ⌘P; o Test Connection em Settings → Profiles precisa bater com a Region do ARN. Veja Connect to AWS e Install. Nunca construa o sufixo /stream/<timestamp> à mão — copie o LatestStreamArn do DescribeTable toda vez. Um table ARN (.../table/Name) não é um stream ARN e dispara a mesma falha de validação.

Fontes

Erros relacionados

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da 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.