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 invalidUn ARN de stream DynamoDB a une forme stricte :
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291Le /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
- Récupère l'ARN depuis la source de vérité. Appelle
DescribeTableet lisTable.LatestStreamArn; utilise exactement cette chaîne. - 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é. - Utilise l'endpoint DynamoDB Streams, pas l'endpoint DynamoDB principal, pour
DescribeStream/GetShardIterator/GetRecords. - Fais correspondre la région du client à la région dans l'ARN.
- 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
- Change data capture for DynamoDB Streams (vérifié le 2026-07-13)
- GetShardIterator — Amazon DynamoDB Streams API Reference (vérifié le 2026-07-13)
Erreurs liées
- Cannot access stream — stream is not enabled — Streams est désactivé ou l'ARN pointe vers un stream disparu.
- ValidationException — parameter values were invalid
- En savoir plus : DynamoDB Streams
Références
- 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
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.