DynamoDB LimitExceededException
TL;DR — 你一次发起了过多的控制平面操作(或触及了一个表/账户限制)。你账户中同时处于 CREATING/UPDATING/DELETING 状态的表和索引最多可有 500 个。串行化你的表操作,等待 ACTIVE,然后用退避重试。
含义
LimitExceededException: Too many operations for a given subscriber.这是一个控制平面错误——它来自 CreateTable、UpdateTable、DeleteTable、索引创建、恢复及类似调用,而不是来自 GetItem/PutItem/Query。DynamoDB 在告诉你,你已经超过了一个并发或账户限制。它是一个 HTTP 400,AWS 把它列为可以重试——随着进行中的操作完成,这个状况会消除。
为什么会发生
- 并发的表/索引操作过多——处于
CREATING、DELETING或UPDATING状态的表和索引的累计数量不能超过每账户/区域 500 个。(每个账户最多允许 500 个同时进行的表操作——CreateTable、UpdateTable、DeleteTable、UpdateTimeToLive、RestoreTableFromBackup、RestoreTableToPointInTime——而创建带二级索引的表时最多只允许 250 个并发请求。) - 批量栈部署——CloudFormation/CDK/Terraform 同时创建或拆除许多表(或许多 GSI)会超出并发预算。
- 账户资源配额——触及每账户/区域 2,500 张表的软配额,或 50 个同时导入作业的限制。
- DynamoDB Streams 误用——用大于 1000 的
Limit调用GetRecords,或超过 2 个进程同时从同一个 streams 分片读取。 - 注意: 在同一张表仍处于
UPDATING时发起的第二个UpdateTable会表现为 ResourceInUseException,而不是这个错误——但两者都意味着"先等待ACTIVE"。
如何修复
- 串行化控制平面操作——在对一张表(及每个 GSI)发起下一个变更之前,等它变为
ACTIVE。轮询DescribeTable并在TableStatus === 'ACTIVE'上设关卡。 - 用指数退避重试——这个限制是瞬时的;随着进行中的操作排空,一次退避重试通常会成功。
- 限制批量部署的节奏——拆分一个大栈,使你不会一次创建数百个表/GSI,或者添加显式的
DependsOn排序,让它们不会同时触发。 - 检查你的服务配额——如果你接近每账户表数限制,就在 Service Quotas 中请求配额提升,而不是无限重试。
- 逐个添加 GSI——每个
UpdateTable操作只能创建或删除一个全局二级索引,因此串行化索引变更并等待每次回填。
常见问题
如何修复 DynamoDB 中的 LimitExceededException? 停止并行发出控制平面操作(CreateTable/UpdateTable/DeleteTable/索引更改)。等待每个表和索引在下一次更改之前达到 ACTIVE,将 CREATING/UPDATING/DELETING 中的表计数保持在帐户上限以下,然后使用指数退避重试。
LimitExceededException 是节流错误吗? 这是控制平面并发/限制错误,而不是数据平面限制。数据平面限制表面为 ProvisionedThroughputExceededException、ThrottingException 或 RequestLimitExceeded。
将 DynoTable 指向 Local
DynoTable 是数据平面客户端 — GetItem、Query 和 Scan 不消耗此错误保护的控制平面并发预算。如果部署脚本命中
LimitExceededException 创建表格时,使用DynoTable 浏览表格已经达到 ACTIVE 并使用 表设置 验证模式,同时你的 IaC 重试。对于本地堆栈,运行 DynamoDB Local 和 -sharedDb 并通过本地配置文件 (Running DynamoDB Local) 连接,以便你可以检查部分部署,而无需等待每个 GSI 在 AWS 中完成。
single-table design planner有助于素描在你在繁忙的帐户中解雇另一个 CreateTable 之前,请先调整表格形状。
相关错误
- ResourceInUseException——对一张已在被修改或已经存在的表的操作。
- ThrottlingException——数据/控制平面速率限制。
- RequestLimitExceeded——账户请求速率限制。
- 学习:DynamoDB migrations
来源
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide(2026-07-13 验证)
- UpdateTable — Amazon DynamoDB API Reference(2026-07-13 验证)
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide(2026-07-13 验证)