DynamoDB возвращает `Invalid UpdateExpression: Expression size is exceeded the maximum allowed size` во время обновления - PullRequest
2 голосов
/ 11 июля 2020

Я пытаюсь обновить элемент, где мне нужно отредактировать около 150 различных атрибутов элемента, и получаю Invalid UpdateExpression: Expression size has exceeded the maximum allowed size. Я предполагаю, это потому, что моя строка UpdateExpression очень длинная. AWS документы говорят, что максимальная длина параметров выражения составляет 4 КБ .

Как мне go исправить эту ошибку? Думаю, я мог бы разбить запрос на несколько, но это кажется грязным.

Здесь есть еще несколько вопросов о ограничении размера Item, но я ничего не нашел о ограничении UpdateExpression. 1011 *

Решение:

В итоге я ограничил запрос до 50 обновлений атрибутов, и это вместе с transactWrite и ConsistentRead устранило мою проблему.

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Вы действительно достигли предела для параметров выражения .

Технически вы можете обойти это, если создадите другой запрос PutItem , который заменит элемент, который был там ранее.

Выполняя какие-либо записи (включая обновления), вам нужно будет дождаться, пока результат будет распространен на узлы, используемые вашей таблицей DynamoDB (из-за возможной согласованности), или использовать строго согласованные чтения, когда вы пытаетесь выполнить запрос GetItem, Query или Scan, который должен вернуть этот элемент сразу после записи.

1 голос
/ 11 июля 2020

Я не выполнял очень длинный запрос на обновление для DynamoDB, но для меня более 50 обновлений я бы разделил на 2 запроса на обновление!

...