Я создаю API №1, который создает элемент в DynamoDB. Я создаю другой API № 2, который извлекает элемент с помощью GSI (входной ключ может не существовать). Но чтение GSI может быть согласованным только в конечном итоге, и мне не нужен сценарий, в котором API № 1 создает элемент, а API № 2 не получает этот элемент.
Так что я думаю об этом:
- API №1 создает элемент через UpdateItem
- API №1 пытается получить элемент с помощью GSI через GetItem. Продолжает повторять попытки с экспоненциальной задержкой, пока не получит элемент. Как только это произойдет, окончательная согласованность должна закончиться.
- API № 2 извлекает элемент, используя тот же GSI, что и выше, через GetItem. Поскольку API № 1 уже получил элемент, он должен получить элемент с первой попытки.
Примечание. Я не думаю, что API № 2 может вместо этого выполнять повторные попытки GetItem, потому что его входной ключ может никогда не существовать.
Будет ли это работать? Есть ли лучшие решения?