Provisioned throughput decreases are limited within a given day
TL;DR — DynamoDB limits how often you can decrease a table's (or GSI's) provisioned read/write capacity in a single UTC day. You've used the allowance, so UpdateTable is rejected. Wait for the hourly refill, batch your decrease into fewer larger steps, or switch the table to on-demand and stop managing decreases entirely.
What it means
LimitExceededException: Subscriber limit exceeded: Provisioned throughput
decreases are limited within a given UTC dayEach table starts a UTC day with a small budget of capacity decreases (increases are effectively unlimited). You begin the day with 4 decreases available, and earn 1 more each hour up to 4 in reserve — enough for up to 27 decreases across a full day. Exhaust it and further UpdateTable decrease calls fail until the budget refills. It's a quota, so blindly retrying won't help within the same window.
Why it happens
- Auto-scaling flapping — a spiky workload makes DynamoDB auto-scaling step capacity down repeatedly, burning the decrease budget.
- A script that lowers capacity too often — many small decreases instead of one larger one.
- Manual tuning during load tests — repeatedly dialing capacity down as traffic ebbs.
- Per-index budgets — each GSI has its own decrease allowance; a table with several indexes can hit it on one of them.
How to fix it
- Wait for the refill. One decrease becomes available each hour (up to 4 banked); the whole budget resets at 00:00 UTC.
- Make fewer, bigger decreases. Drop from 1000 → 200 in one step instead of five 160-unit steps.
- Tune auto-scaling — raise the target utilization and add a scale-in cooldown so it stops decreasing so aggressively.
- Switch to on-demand if the workload is bursty or unpredictable:On-demand removes manual capacity management (and its decrease quota) altogether.
aws dynamodb update-table --table-name <Table> \ --billing-mode PAY_PER_REQUEST
Related errors
- ProvisionedThroughputExceededException — the runtime throttle when reads/writes exceed provisioned capacity.
- LimitExceededException — the broader account/table control-plane quota family.
- Learn: On-demand vs provisioned