DynamoDB Streams — The ARN provided is invalid

TL;DR — Ein Streams-API-Aufruf (DescribeStream, GetShardIterator, GetRecords) hat einen Stream-ARN bekommen, der kein wohlgeformter, aktueller Stream-Deskriptor ist — meist ein /stream/latest-Platzhalter, versehentlich ein Tabellen-ARN, oder ein veralteter bzw. abgeschnittener ARN. Hol den echten ARN aus LatestStreamArn von DescribeTable und übergib ihn unverändert.

Was es bedeutet

ValidationException: The ARN provided is invalid

Eine DynamoDB-Stream-ARN hat eine strenge Form:

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

Das nachgestellte /stream/<ISO-8601-Zeitstempel> ist ein spezifischer Stream-Deskriptor, kein symbolischer Name. Der Streams-Endpoint weist alles zurück, was sich nicht als gültige, existierende Stream-ARN parsen lässt, mit The ARN provided is invalid.

Warum es passiert

  • Ein /stream/latest-(oder ähnlicher)-Platzhalter — manche Tools und lokale Emulatoren akzeptieren ihn, aber echtes DynamoDB verlangt den konkreten, zeitgestempelten Deskriptor.
  • Übergabe der Tabellen-ARN (.../table/TestTable), wo eine Stream-ARN erwartet wurde.
  • Eine veraltete ARN — Streams wurde deaktiviert und wieder aktiviert, sodass der aktuelle Stream der Tabelle einen neuen Deskriptor hat; der alte Stream bleibt nach der Deaktivierung nur 24 Stunden lesbar, dann laufen seine Datensätze ab.
  • Eine von Hand gebaute oder abgeschnittene ARN — falsche Region, falsches Konto, fehlendes /stream/...-Segment oder ein zusätzliches Leerzeichen/Zeilenumbruch.
  • Region-Konflikt — der Streams-Client ist für eine andere Region konfiguriert, als die ARN kodiert.

So behebst du es

  1. Hole die ARN aus der Source of Truth. Rufe DescribeTable auf und lies Table.LatestStreamArn; verwende genau diesen String.
  2. Synthetisiere die ARN niemals von Hand und verwende nicht /stream/latest — das Zeitstempel-Segment wird von DynamoDB zugewiesen und kann nicht erraten werden.
  3. Nutze den DynamoDB-Streams-Endpoint, nicht den Haupt-DynamoDB-Endpoint, für DescribeStream/GetShardIterator/GetRecords.
  4. Bringe die Region des Clients mit der Region in der ARN in Einklang.
  5. Hole nach jedem Streams-Umschalten neu — ein Deaktivierungs-/Aktivierungszyklus erzeugt einen brandneuen Stream mit einem anderen Deskriptor, sodass die vorherige ARN nicht mehr auf den aktiven Stream zeigt.
  6. Entferne Leerzeichen beim Kopieren. Ein abschließender Zeilenumbruch an einer ansonsten gültigen ARN lässt die Validierung weiterhin fehlschlagen.

In DynoTable erkennen

DynoTable shows each table's LatestStreamArn in the table metadata panel — copy it verbatim instead of hand-building /stream/latest placeholders. Öffne die Tabelle mit ⌘K and expand Stream details bevor du wire a Lambda or KCL consumer.

Nutze den Query Builder to confirm the table is reachable with the same profile that owns the stream. Switch Regions with ⌘P; Verbindung testen on Einstellungen → Profile must match the ARN's Region. Siehe Mit AWS verbinden und Installation. Never hand-build the /stream/<timestamp> suffix — copy LatestStreamArn from DescribeTable every time. A table ARN (.../table/Name) is not a stream ARN and triggers the same validation failure.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.