В документации AWS DynamoDB написано, что:
Условная идемпотентность записи Условная запись может быть идемпотентной, если условная проверка выполняется для того же обновляемого атрибута. Это означает, что DynamoDB выполняет заданный запрос на запись только в том случае, если определенные значения атрибутов в элементе соответствуют ожидаемым на момент запроса.
Например, предположим, что вы отправляете запрос
UpdateItemна увеличениеPriceэлемента на 3, но только еслиPriceв настоящее время равно 20. После отправки запроса, но до того, как вы получите результаты обратно, происходит сетевая ошибка, и вы не знаю, был ли запрос успешным. Поскольку эта условная запись идемпотентна, вы можете повторить тот же запросUpdateItem, и DynamoDB обновит элемент, только еслиPriceв данный момент равен 20.
Последнее предложение меня сбивает с толку. Что делать, если во время ошибки на сервер был отправлен другой безусловный запрос и Price обновился, например, чтобы увеличить Price на 1. Итак, Price увеличивается с 20 до 21. Также предположим, что запрос на безусловное обновление отправляется ПОСЛЕ выдается условный запрос на увеличение Price на 3.
В таком случае, насколько я понимаю, в документации говорится, что условный запрос на повтор не должен увеличивать Price до 23, потому что текущий Price теперь равен 21, а не 20. Однако, если ошибки нет, мы должны ожидать, что Price будет 24, а не 23. .
Итак, предположим, что я правильно понимаю, что у нас будет два разных конечных результата в отношении одного и того же набора операций, т. е. один условный, а другой безусловный, в двух сценариях: один без ошибок и один с ошибкой?
Проясните мое замешательство по поводу идемпотентной операции в AWS DynamoDB.

Но в любом случае вы получите желаемый результат.
Вы хотели увеличить значение на 1, но только если текущее значение равно 20. Если это так, вы преуспеете, а в противном случае потерпите неудачу, независимо от повторных попыток.
Тот факт, что вы отправляете безусловное обновление для изменения элемента, меняет сценарий, но ожидаемым образом.
Ваш запрос на условную проверку по-прежнему был идемпотентным и мог быть выполнен только в том случае, если цена равна 20.
Ом, это правда. Итак, он ЯВЛЯЕТСЯ идемпотентным.