AWS DynamoDB条件校验失败的Put Item操作是否消耗吞吐量或产生费用
带条件表达式的DynamoDB Put Item请求的容量消耗与计费规则
直接给出结论
只要带条件校验的Put Item请求成功送达DynamoDB服务端,哪怕最终因条件不满足返回ConditionalCheckFailedException、没有实际写入任何数据,依然会正常消耗吞吐量配额、按照对应标准计费,完全不存在“只有写入成功才收费”的规则。
预置吞吐量(Provisioned)模式下的容量扣减规则
- 这类条件校验失败的请求,扣减的写容量单位(WCU)和同规格的成功Put请求完全一致,不会因为没有执行最终写入动作就减免
- 具体扣减的WCU数值,按本次Put请求计划写入的项目大小计算:每1KB的项目大小对应1个WCU,计算逻辑和正常成功写入时的规则没有任何区别
- 只有当请求根本没有触达DynamoDB数据平面时(比如客户端网络超时、IAM鉴权在路由层就失败、请求被WAF拦截),才不会扣减WCU配额
按需(On-Demand)模式下的计费规则
- 这类条件校验失败的请求没有任何计费豁免,会和成功写入的Put请求执行完全相同的计量逻辑
- 计费标准匹配按需模式的通用规则:
- 若计划写入的项目大小不超过1KB,单次请求消耗1个写请求单位(WRU)
- 若计划写入的项目大小超过1KB,会按实际项目大小向上取整,折算对应的WRU数量
常见认知误区:不要把条件校验失败的场景和请求被服务端硬拒绝的场景混为一谈。只要请求已经进入DynamoDB的处理流程、触发了条件表达式的校验逻辑,就属于完整的服务端处理环节,必然会参与容量计量。
内容的提问来源于stack exchange,提问作者Renato Byrro
相关产品推荐
相关产品推荐

