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 invalidUm DynamoDB stream ARN tem uma forma estrita:
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291O /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
- Obtenha o ARN da fonte da verdade. Chame
DescribeTablee leiaTable.LatestStreamArn; use essa string exata. - Nunca sintetize o ARN à mão ou use
/stream/latest— o segmento de timestamp é atribuído pelo DynamoDB e não pode ser adivinhado. - Use o endpoint DynamoDB Streams, não o endpoint principal do DynamoDB, para
DescribeStream/GetShardIterator/GetRecords. - Combine a region do cliente com a region no ARN.
- 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.
- 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
- Change data capture for DynamoDB Streams (verificado em 2026-07-13)
- GetShardIterator — Amazon DynamoDB Streams API Reference (verificado em 2026-07-13)
Erros relacionados
- Cannot access stream — stream is not enabled — o Streams está desligado ou o ARN aponta para um stream que sumiu.
- ValidationException — os valores de parâmetro eram inválidos
- Aprenda: DynamoDB Streams
Referências
- Change data capture for DynamoDB Streams — Amazon DynamoDB Developer Guide
- GetShardIterator — Amazon DynamoDB Streams API Reference
- DescribeStream — Amazon DynamoDB Streams API Reference
- DescribeTable — Amazon DynamoDB API Reference
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.