DynamoDB Streams — El ARN proporcionado no es válido
TL;DR — Una llamada a la API de Streams (DescribeStream, GetShardIterator, GetRecords) recibió un ARN de stream que no es un descriptor de stream actual y bien formado: normalmente un marcador de posición /stream/latest, un ARN de tabla por error, o un ARN obsoleto o truncado. Obtenga el ARN real del campo LatestStreamArn de DescribeTable y páselo tal cual.
Qué significa
ValidationException: The ARN provided is invalidUn ARN de stream de DynamoDB tiene una forma estricta:
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291El /stream/<marca de tiempo ISO-8601> final es un descriptor de stream específico, no un nombre simbólico. El endpoint de Streams rechaza cualquier cosa que no se analice como un ARN de stream válido y existente con The ARN provided is invalid.
Por qué ocurre
- Un marcador de posición
/stream/latest(o similar) — algunas herramientas y emuladores locales lo aceptan, pero DynamoDB real requiere el descriptor concreto con marca de tiempo. - Pasar el ARN de la tabla (
.../table/TestTable) donde se esperaba un ARN de stream. - Un ARN obsoleto — Streams se deshabilitó y volvió a habilitar, así que el stream actual de la tabla tiene un nuevo descriptor; el stream antiguo sigue siendo legible solo durante 24 horas tras deshabilitarlo, luego sus registros expiran.
- Un ARN construido a mano o truncado — región equivocada, cuenta equivocada, falta el segmento
/stream/..., o un espacio/salto de línea de más. - Desajuste de región — el cliente de Streams está configurado para una región distinta de la que codifica el ARN.
Cómo solucionarlo
- Obtén el ARN de la fuente de verdad. Llama a
DescribeTabley leeTable.LatestStreamArn; usa esa cadena exacta. - Nunca sintetices el ARN a mano ni uses
/stream/latest— el segmento de marca de tiempo lo asigna DynamoDB y no se puede adivinar. - Usa el endpoint de DynamoDB Streams, no el endpoint principal de DynamoDB, para
DescribeStream/GetShardIterator/GetRecords. - Haz coincidir la región del cliente con la región del ARN.
- Vuelve a obtenerlo tras cualquier conmutación de Streams — un ciclo de deshabilitar/habilitar crea un stream completamente nuevo con un descriptor diferente, así que el ARN anterior ya no apunta al stream activo.
- Recorta los espacios al copiar. Un salto de línea final sobre un ARN por lo demás válido sigue fallando la validación.
Detéctalo en DynoTable
DynoTable muestra el LatestStreamArn de cada tabla en el panel de metadatos de la tabla — cópialo tal cual en lugar de construir a mano marcadores /stream/latest. Abre la tabla con ⌘K y despliega los detalles de Stream antes de cablear un consumidor Lambda o KCL.
Usa el Query Builder para confirmar que la tabla es accesible con el mismo perfil que posee el stream. Cambia de Región con ⌘P; Test Connection en Ajustes → Perfiles debe coincidir con la Región del ARN. Consulta Conectar a AWS e Instalar. Nunca construyas a mano el sufijo /stream/<timestamp> — copia LatestStreamArn de DescribeTable cada vez. Un ARN de tabla (.../table/Name) no es un ARN de stream y provoca el mismo fallo de validación.
Fuentes
- Change data capture for DynamoDB Streams (verificado 2026-07-13)
- GetShardIterator — Amazon DynamoDB Streams API Reference (verificado 2026-07-13)
Errores relacionados
- Cannot access stream — stream is not enabled — Streams está apagado o el ARN apunta a un stream desaparecido.
- ValidationException — los valores de los parámetros no eran válidos
- Aprende: DynamoDB Streams
Referencias
- 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 por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.