DynamoDB ThrottlingException
TL;DR — Ton taux de requêtes a dépassé une limite. C'est réessayable — fais du backoff et réessaie (le SDK le fait par défaut). Si ça persiste, c'est que tu appelles une API du plan de contrôle (CreateTable, UpdateTable, DescribeTable) trop souvent, ou que tu atteins une limite au niveau du compte.
Ce que ça signifie
ThrottlingException: Rate of requests exceeds the allowed throughput.ThrottlingException (et la RequestLimitExceeded qui lui est liée) signale une limite de débit qui n'est pas le réglage RCU/WCU propre à une table provisionnée. Elle revient en HTTP 400 et est réessayable. Elle est la plus fréquente sur les opérations du plan de contrôle effectuées trop rapidement et — pour les tables à la demande — elle peut être renvoyée pour toute opération du plan de données quand le taux de requêtes est trop élevé (y compris quand tu dépasses un débit maximal à la demande configuré). L'erreur porte des champs ThrottlingReason nommant la ressource limitée et la limite atteinte.
Pourquoi ça arrive
- Interroger en boucle les API du plan de contrôle — appeler
DescribeTable,ListTables,UpdateTabledans une boucle serrée (par exemple en attendant qu'une table passeACTIVE). - Créer/supprimer de nombreuses tables rapidement — les opérations concurrentes du plan de contrôle sont plafonnées (pas plus de 500 tables/index en
CREATING/UPDATING/DELETINGà la fois). - Un débit maximal à la demande configuré — dépasser
MaxReadRequestUnits/MaxWriteRequestUnitssur une table ou un GSI à la demande renvoieThrottlingException. - Un pic soudain sur une table à la demande — les nouvelles tables démarrent à 4 000 écritures/s et 12 000 lectures/s, et dépasser le double de ton pic précédent en 30 minutes peut provoquer un throttling jusqu'à ce que DynamoDB fasse la montée en charge.
Comment le corriger
- Réessaie avec un backoff exponentiel + jitter — les SDK AWS le font automatiquement ; garde les retries activés et envisage le mode de retry adaptatif.
- Arrête d'interroger en boucle serrée les API du plan de contrôle. Utilise des waiters (
waitUntilTableExists) qui interrogent sur un rythme raisonnable au lieu d'une boucle intensive. - Regroupe et cadence les écritures du plan de données. Monte en charge les chargements en masse progressivement pour que la capacité à la demande puisse suivre.
- Étale les opérations sur les tables dans le temps plutôt que d'en créer des dizaines d'un coup.
Exemple
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
import {waitUntilTableExists} from '@aws-sdk/client-dynamodb';
const client = new DynamoDBClient({});
// a waiter polls on a backoff schedule — not a tight DescribeTable loop
await waitUntilTableExists({client, maxWaitTime: 120}, {TableName: 'Orders'});FAQ
ThrottlingException est-elle la même chose que ProvisionedThroughputExceededException ?
Non. ProvisionedThroughputExceededException est l'erreur du plan de données pour le dépassement de la capacité provisionnée d'une table. ThrottlingException est la plus fréquente sur les opérations du plan de contrôle (CreateTable, UpdateTable, DescribeTable), qui ont de faibles limites à l'échelle du compte, et sur les pics de très gros volume.
Comment corriger une ThrottlingException DynamoDB ?
Réessaie avec un backoff exponentiel et du jitter — les SDK AWS le font automatiquement. Arrête d'interroger en boucle serrée les API du plan de contrôle (utilise des waiters comme waitUntilTableExists), monte en charge les chargements en masse progressivement pour que la capacité à la demande puisse suivre, et étale les opérations sur les tables dans le temps.
Vérifie la taille dans DynoTable
Quand le throttling du plan de contrôle bloque la mise en place d'une table, sers-toi de DynoTable pour parcourir les tables existantes plutôt que de sonder DescribeTable en boucle — ouvre les tables avec ⌘K après un seul rafraîchissement. Pour les chargements en masse qui déclenchent du throttling en on-demand, dimensionne le trafic avec le calculateur de tarifs avant de monter en charge.
Change de profil avec ⌘P ; Test Connection dans Settings → Profiles confirme le compte. Vois Se connecter à AWS et Installation.
Sources
- Error handling with DynamoDB — ThrottlingException (vérifié le 2026-07-13)
- Troubleshooting throttling in Amazon DynamoDB (vérifié le 2026-07-13)
Erreurs liées
- ProvisionedThroughputExceededException — throttling de capacité par table.
- RequestLimitExceeded — le quota de taux de requêtes du compte.
- On-demand throughput exceeded — les tables à la demande peuvent quand même subir un throttling.
- ResourceInUseException — table occupée / déjà existante.
- En savoir plus : À la demande vs provisionné
Références
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Troubleshooting throttling in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB on-demand capacity mode — Amazon DynamoDB Developer Guide
- DynamoDB maximum throughput for on-demand tables — Amazon DynamoDB Developer Guide
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.