Too many actions in a TransactWriteItems call

TL;DR — Eine DynamoDB-Transaktion ist auf 100 Aktionen gedeckelt. TransactWriteItems (und TransactGetItems) lehnen eine Anfrage mit mehr als 100 Put-/Update-/Delete-/ConditionCheck-Aktionen ab. Teile die Arbeit auf mehrere Transaktionen auf — oder nutze BatchWriteItem (25 pro Aufruf), wenn du keine Alles-oder-Nichts-Atomarität brauchst.

Was es bedeutet

ValidationException: 1 validation error detected: Value '<your request>' at 'transactItems' failed to satisfy constraint: Member must have length less than or equal to 100

Der Service spiegelt an der Stelle von <your request> deine gesamte serialisierte Anfrage zurück — bei einer Transaktion mit 101 Aktionen sind das rund 65.000 Zeichen. Der eigentliche Befund steht im letzten Satz.

TransactWriteItems gruppiert Aktionen, die alle zusammen committen oder zurückrollen, aber eine einzelne Transaktion kann höchstens 100 Aktionen halten, und die aggregierte Größe der Items in der Transaktion darf 4 MB nicht überschreiten. Übergib mehr, und DynamoDB lehnt den ganzen Aufruf vor der Ausführung ab. Die Meldung liest sich oft als eine Beschränkung der Länge der TransactItems-Liste. Es ist eine HTTP-400-ValidationException, clientseitig, und nicht wiederholbar, bis die Transaktion kleiner ist.

Warum es passiert

  • Zu viele Writes atomar batchen — versuchen, 150 Puts in einer Transaktion zu committen.
  • Eine Schleife, die unbegrenzt Aktionen an eine einzelne TransactItems-Liste anhängt.
  • Fan-out, der 100 überschreitet — eine logische Operation, die mehr als 100 Items berührt und als eine einzelne Transaktion modelliert wurde.
  • Nur Writes zählen — denk daran, dass ConditionCheck-Aktionen ebenfalls zu den 100 zählen.

So behebst du es

  1. Teile in mehrere Transaktionen von je ≤100 Aktionen — beachte, dass jede Transaktion unabhängig atomar ist (sie rollen nicht zusammen zurück).
  2. Überlege erneut, ob du überhaupt eine Transaktion brauchst — wenn die Writes keine Alles-oder-Nichts-Semantik erfordern, ist BatchWriteItem (≤25 pro Aufruf) günstiger und durchsatzfreundlicher.
  3. Reduziere die Aktionsanzahl — falte mehrere Mutationen auf ein Item zu einem einzigen Update mit einer kombinierten UpdateExpression.
  4. Modelliere das Aggregat anders, sodass eine einzelne logische Änderung weniger Items berührt.
  5. Achte neben dem 100-Aktionen-Limit auf die 4-MB-Obergrenze der aggregierten Item-Größe — große Items können auch unter 100 Aktionen scheitern.

So reproduzierst du es

Eine Transaktion mit 101 Aktionen, eine über dem Limit. Die Ablehnung ist eine schlichte ValidationException auf die Array-Länge, kein transaktionsspezifischer Fehler:

const actions = Array.from({length: 101}, (_, i) => ({
  Put: {TableName: 'orders', Item: {pk: {S: `T#${i}`}, sk: {S: 'META'}}}
}));
await client.send(new TransactWriteItemsCommand({TransactItems: actions}));

Echte Ausgabe:

ValidationException: Member must have length less than or equal to 100
HTTP 400

Achte auf die Formulierung: DynamoDB lehnt das als Längenbeschränkung des TransactItems-Arrays ab, sodass die Zeichenkette, die du bekommst, Transaktionen mit keinem Wort erwähnt. Eine Suche nur nach der Meldung führt dich nicht offensichtlich hierher.

DynoTable-Workbench

Bevor du mehr als 100 Writes atomar committest, sieh dir die Ziel-Items in DynoTable an — öffne die Tabelle mit ⌘K und bestätige, dass jeder Key existiert. Mit dem Staging (⌘S) kannst du zuerst eine kleinere Transaktion testen.

Baue Multi-Item-Updates im Expression Builder und falte doppelte Aktionen auf einem Key zu einem einzigen Update. Wechsle Profile mit ⌘P; siehe Mit AWS verbinden und Installation.

Quellen

Verwandte Fehler

Referenzen

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

Am 2026-07-26 gegen DynamoDB Local 2.x mit dem AWS SDK for JavaScript v3.1095.0 reproduziert — die Ausgabe oben ist wortgetreu.

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.