DynamoDB Streams — The ARN provided is invalid

TL;DR — Un appel de l'API Streams (DescribeStream, GetShardIterator, GetRecords) a reçu un ARN de stream qui n'est pas un descripteur de stream bien formé et actuel — généralement un placeholder /stream/latest, un ARN de table par erreur, ou un ARN périmé/tronqué. Récupère le vrai ARN depuis le LatestStreamArn de DescribeTable et passe-le tel quel.

Ce que ça signifie

ValidationException: The ARN provided is invalid

Un ARN de stream DynamoDB a une forme stricte :

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

Le /stream/<horodatage ISO-8601> final est un descripteur de stream spécifique, pas un nom symbolique. L'endpoint Streams rejette tout ce qui ne s'analyse pas comme un ARN de stream valide et existant avec The ARN provided is invalid.

Pourquoi ça arrive

  • Un placeholder /stream/latest (ou similaire) — certains outils et émulateurs locaux l'acceptent, mais le vrai DynamoDB exige le descripteur horodaté concret.
  • Passer l'ARN de table (.../table/TestTable) là où un ARN de stream était attendu.
  • Un ARN périmé — Streams a été désactivé puis réactivé, donc le stream actuel de la table a un nouveau descripteur ; l'ancien stream reste lisible seulement pendant 24 heures après désactivation, puis ses enregistrements expirent.
  • Un ARN construit à la main ou tronqué — mauvaise région, mauvais compte, segment /stream/... manquant, ou une espace/un saut de ligne en trop.
  • Incohérence de région — le client Streams est configuré pour une région différente de celle encodée dans l'ARN.

Comment le corriger

  1. Récupère l'ARN depuis la source de vérité. Appelle DescribeTable et lis Table.LatestStreamArn ; utilise exactement cette chaîne.
  2. Ne synthétise jamais l'ARN à la main et n'utilise pas /stream/latest — le segment d'horodatage est attribué par DynamoDB et ne peut pas être deviné.
  3. Utilise l'endpoint DynamoDB Streams, pas l'endpoint DynamoDB principal, pour DescribeStream/GetShardIterator/GetRecords.
  4. Fais correspondre la région du client à la région dans l'ARN.
  5. Récupère à nouveau après toute bascule de Streams — un cycle désactivation/activation crée un stream tout neuf avec un descripteur différent, donc l'ARN précédent ne pointe plus vers le stream actif.

Tu travailles avec Streams et veux le vrai ARN du stream sous les yeux ? L'application de bureau DynoTable affiche le descripteur de stream actif de la table pour que tu copies le bon ARN, pas un ARN deviné.

Repère-le dans DynoTable

DynoTable affiche le LatestStreamArn de chaque table dans le panneau de métadonnées — copie-le tel quel plutôt que de fabriquer à la main des placeholders /stream/latest. Ouvre la table avec ⌘K et déplie les détails Stream avant de câbler un consommateur Lambda ou KCL.

Sers-toi du Query Builder pour confirmer que la table est joignable avec le profil même qui possède le flux. Change de Région avec ⌘P ; Test Connection dans Settings → Profiles doit correspondre à la Région de l'ARN. Vois Se connecter à AWS et Installation. Ne fabrique jamais le suffixe /stream/<timestamp> à la main — copie LatestStreamArn depuis DescribeTable à chaque fois. Un ARN de table (.../table/Name) n'est pas un ARN de flux et déclenche le même échec de validation.

Sources

Erreurs liées

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.