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, UpdateTable dans une boucle serrée (par exemple en attendant qu'une table passe ACTIVE).
  • 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/MaxWriteRequestUnits sur une table ou un GSI à la demande renvoie ThrottlingException.
  • 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

  1. 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.
  2. 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.
  3. 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.
  4. É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

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.