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 invalid

Un ARN de stream de DynamoDB tiene una forma estricta:

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

El /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

  1. Obtén el ARN de la fuente de verdad. Llama a DescribeTable y lee Table.LatestStreamArn; usa esa cadena exacta.
  2. Nunca sintetices el ARN a mano ni uses /stream/latest — el segmento de marca de tiempo lo asigna DynamoDB y no se puede adivinar.
  3. Usa el endpoint de DynamoDB Streams, no el endpoint principal de DynamoDB, para DescribeStream/GetShardIterator/GetRecords.
  4. Haz coincidir la región del cliente con la región del ARN.
  5. 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.
  6. 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

Errores relacionados

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.