DynamoDB ThrottlingException

TL;DR — リクエストレートが制限を超えました。リトライ可能です。バックオフして再試行します(SDK はデフォルトでこれを行います)。続く場合は、コントロールプレーン API(CreateTable、UpdateTable、DescribeTable)を頻繁に呼びすぎているか、アカウントレベルの制限に達しています。

意味

ThrottlingException: Rate of requests exceeds the allowed throughput.

ThrottlingException(と関連する RequestLimitExceeded)は、プロビジョンドテーブル自身の RCU/WCU 設定ではない レート制限 を示します。HTTP 400 で返り、リトライ可能 です。頻繁に実行される コントロールプレーン 操作で最も一般的で、オンデマンド テーブルでは、リクエストレートが高すぎるときに任意のデータプレーン操作で返されることがあります(設定された最大オンデマンドスループットを超えたときを含む)。エラーは、スロットリングされたリソースと達した制限を指定する ThrottlingReason フィールドを運びます。

発生する理由

  • コントロールプレーン API のポーリングDescribeTableListTablesUpdateTable をタイトなループで呼ぶ(例: テーブルが ACTIVE になるのを待つ)。
  • 多数のテーブルの すばやい作成/削除 — 同時実行のコントロールプレーン操作は制限されています(CREATING/UPDATING/DELETING のテーブル/インデックスは一度に 500 以下)。
  • 設定されたオンデマンド最大スループット — オンデマンドテーブルや GSI で MaxReadRequestUnits/MaxWriteRequestUnits を超えると ThrottlingException が返ります。
  • オンデマンドテーブルでの突然のバースト — 新しいテーブルは毎秒 4,000 書き込みと 12,000 読み取りで始まり、30 分以内に以前のピークの2倍を超えると、DynamoDB がスケールするまでスロットリングすることがあります。

修正方法

  1. 指数バックオフ + ジッターで再試行します — AWS SDK は自動的にこれを行います。リトライを有効にしておき、アダプティブリトライモードを検討します。
  2. コントロールプレーン API のタイトポーリングをやめます。 ホットループの代わりに、まともなスケジュールでポーリングするウェイター(waitUntilTableExists)を使います。
  3. データプレーンの書き込みをバッチ化してペース調整します。 一括ロードを段階的に増やし、オンデマンドキャパシティが一緒にスケールできるようにします。
  4. 一度に数十を作成するのではなく、テーブル操作を時間をかけて分散させます

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'});

よくある質問

コントロールプレーンのスロットリングでテーブルのセットアップが止まっているときは、DescribeTable をループでポーリングする代わりに DynoTable で既存のテーブルを閲覧しましょう — 1 回更新すれば、⌘K でテーブルを開けます。オンデマンドのスロットリングを引き起こす一括ロードでは、負荷を上げる前に料金計算ツールでトラフィックを見積もってください。

プロファイルの切り替えは ⌘P です。Settings → Profiles の Test Connection がアカウントを確認してくれます。AWS に接続するインストールを参照してください。

DynoTable でサイズを確認する

ThrottlingException は ProvisionedThroughputExceededException と同じですか? いいえ。ProvisionedThroughputExceededException は、テーブルのプロビジョンドキャパシティを超えたときのデータプレーンエラーです。ThrottlingException は、アカウント全体で低い制限を持つコントロールプレーン操作(CreateTableUpdateTableDescribeTable)と、非常に大量のバーストで最も一般的です。

DynamoDB の ThrottlingException を修正するには? 指数バックオフとジッターで再試行します — AWS SDK は自動的にこれを行います。コントロールプレーン API のタイトポーリングをやめ(waitUntilTableExists のようなウェイターを使う)、一括ロードを段階的に増やしてオンデマンドキャパシティが一緒にスケールできるようにし、テーブル操作を時間をかけて分散させます。

出典

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。