DynamoDB BatchWriteItem API的16MB与400KB限制计量范围是什么?
DynamoDB BatchWriteItem 大小限制答疑
提问原文
根据官方文档说明:
BatchWriteItem 操作用于在一张或多张表中写入或删除多个条目。单次 BatchWriteItem 调用最多可写入 16 MB 数据,最多可包含 25 个写入或删除请求,单个待写入条目的最大大小可达 400 KB。
该定义描述较为模糊,16 MB of data 的具体指代不明确,存在以下疑问:
- 是否指整个 HTTP 请求(请求头+请求体)的总大小?
- 是否指 RequestItems.* 字段的总大小?
- 若上一点成立,该统计大小是 marshall(序列化) 后的数据大小,还是 unmarshall(反序列化) 后的数据大小?该疑问同样适用于
Individual items to be written can be as large as 400 KB的单条目限制。
我未在官方文档中查询到相关细节说明,是否有开发者知晓该限制的具体规则?
实际运行规则
服务端的限额校验全部基于收到的请求载荷的序列化后字节数计算,不存在模糊空间,具体口径如下:
- 16 MB 总限额的统计范围:仅计算请求体中
RequestItems字段的序列化后字节大小,不包含HTTP请求头、鉴权头、RequestItems之外的其他配置类请求参数(比如ReturnConsumedCapacity等元字段)的开销,完全不是整个HTTP请求的总大小。 - 400 KB 单条限额的统计逻辑:和总限额的计算口径完全一致,统计的是序列化后单条写入请求里的
Item结构的字节大小,不是反序列化后的原始业务对象大小。序列化过程中附带的类型标记、结构格式字节也会计入限额,哪怕用户侧原始对象的大小低于阈值,加上序列化结构的额外开销后超过400 KB,依然会被服务端拒绝。 - 数量校验规则:单次请求最多支持25个独立的写入/删除操作,即使总大小未达16 MB、单条大小未达400 KB,请求数量超出阈值依然会被直接拒绝。
内容的提问来源于stack exchange,提问作者yaquawa
相关产品推荐
相关产品推荐

