DynamoDB返回“无效的UpdateExpression:更新期间表达式大小已超出最大允许大小”

时间:2020-07-11 00:31:38

标签: amazon-web-services amazon-dynamodb

我正在尝试更新一个项目,需要对该项目的150个属性进行编辑,并且得到Invalid UpdateExpression: Expression size has exceeded the maximum allowed size。我认为这是因为我的UpdateExpression字符串很长。 AWS docs say that the maximum length of an expression parameters is 4kb

如何解决这个错误?我想我可以将请求分解为多个,但这看起来很脏。

这里还有其他有关Item大小限制的问题,但我还没有发现有关UpdateExpression大小限制的任何信息。

解决方案:

我最终将请求限制为50个属性更新,并且与transactWriteConsistentRead一起解决了我的问题。

2 个答案:

答案 0 :(得分:1)

我没有对DynamoDB进行非常长时间的更新查询,但是对我来说,超过50个更新,我会将其拆分为2个更新请求!

答案 1 :(得分:1)

您确实已经达到了expression parameters的限制。

从技术上讲,如果您构造另一个PutItem请求来替换以前的项目,则可以解决此问题。

通过执行任何写操作(包括更新),您将需要等待结果传播到DynamoDB表使用的节点(由于最终的一致性),或者在尝试执行GetItem,Query或时使用强一致性读取。写入后必须立即返回此项目的扫描请求。