DynamoDB LimitExceededException
TL;DR — You issued too many control-plane operations at once (or hit a table/account limit). Up to 500 tables and indexes may be in CREATING/UPDATING/DELETING state across your account at a time. Serialize your table operations, wait for ACTIVE, and retry with backoff.
What it means
LimitExceededException: Too many operations for a given subscriber.This is a control-plane error — it comes from CreateTable, UpdateTable, DeleteTable, index creation, restores, and similar calls, not from GetItem/PutItem/Query. DynamoDB is telling you you've exceeded a concurrency or account limit. It's an HTTP 400, and AWS lists it as OK to retry — the condition clears as in-flight operations finish.
Why it happens
- Too many concurrent table/index operations — the cumulative number of tables and indexes in
CREATING,DELETING, orUPDATINGstate cannot exceed 500 per account/Region. (Up to 500 simultaneous table operations are allowed per account —CreateTable,UpdateTable,DeleteTable,UpdateTimeToLive,RestoreTableFromBackup,RestoreTableToPointInTime— and only up to 250 concurrent requests when creating tables with secondary indexes.) - Bulk stack deploys — CloudFormation/CDK/Terraform creating or tearing down many tables (or many GSIs) simultaneously overruns the concurrency budget.
- Account resource quotas — hitting the soft quota of 2,500 tables per account/Region, or the 50-simultaneous-import-jobs limit.
- DynamoDB Streams misuse — calling
GetRecordswith aLimitgreater than 1000, or more than 2 processes reading from the same streams shard at once. - Note: a second
UpdateTableissued while the same table is stillUPDATINGsurfaces as ResourceInUseException, not this error — but both mean "wait forACTIVEfirst".
How to fix it
- Serialize control-plane operations — wait for a table (and each GSI) to become
ACTIVEbefore issuing the next change to it. PollDescribeTableand gate onTableStatus === 'ACTIVE'. - Retry with exponential backoff — the limit is transient; a backed-off retry usually succeeds once in-flight operations drain.
- Throttle bulk deploys — split a large stack so you're not creating hundreds of tables/GSIs at once, or add explicit
DependsOnordering so they don't all fire together. - Check your service quotas — if you're near the tables-per-account limit, request a quota increase in Service Quotas rather than retrying forever.
- Add GSIs one at a time — you can create or delete only one global secondary index per
UpdateTableoperation, so serialize index changes and wait for each backfill.
FAQ
How do I fix LimitExceededException in DynamoDB? Stop issuing control-plane operations (CreateTable/UpdateTable/DeleteTable/index changes) in parallel. Wait for each table and index to reach ACTIVE before the next change, keep the count of tables in CREATING/UPDATING/DELETING under the account cap, and retry with exponential backoff.
Is LimitExceededException a throttling error? It's a control-plane concurrency/limit error, not data-plane throttling. Data-plane throttling surfaces as ProvisionedThroughputExceededException, ThrottlingException, or RequestLimitExceeded instead.
Point DynoTable at Local
DynoTable is a data-plane client — GetItem, Query, and Scan do not consume
the control-plane concurrency budget this error guards. If a deploy script hits
LimitExceededException while creating tables, use DynoTable to browse tables
that already reached ACTIVE and validate schema from Table settings while
your IaC retries. For local stacks, run DynamoDB Local with -sharedDb and
connect via a Local profile (Running DynamoDB Local) so
you can inspect partial deploys without waiting for every GSI to finish in AWS.
The single-table design planner helps sketch
table shapes before you fire another CreateTable in a busy account.
Related errors
- ResourceInUseException — an operation on a table that's already being modified or already exists.
- ThrottlingException — data/control-plane rate limiting.
- RequestLimitExceeded — account request-rate limit.
- Learn: DynamoDB migrations
Sources
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide (verified 2026-07-13)
- UpdateTable — Amazon DynamoDB API Reference (verified 2026-07-13)
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide (verified 2026-07-13)