Я обновляю таблицу DynamoDB из AWS Lambda. Я использую стандартную политику повторных попыток AWS SDK со стандартной стратегией отката SDK с baseDelay 25 мс, задержкой регулирования 125 мс, maxDelay 20 секунд и maxRetries 15. Однако я получаю 3 вида исключений:
ConditionalCheckFailedException
=> Я перечитал запись и обработал ее перед обновлением обратно в базу данных.
ProvisionedThroughputExceededException
=> Это из-за очень интенсивной записи в GSI таблицы. Глядя на документацию, сам AWS SDK совершает множественные вызовы, прежде чем отказаться от этой ошибки. Я бы хотел, чтобы SDK продолжал попытки до истечения времени Lambda. Так я должен просто увеличить maxRetries примерно до 1000?
AmazonDynamoDBException
=> Я получаю сообщение о том, что DynamoDB предоставляет таблицу для обработки более высокого масштаба, и я должен попробовать позже. Я полагаю, что это также повторяется SDK, и увеличение максимальных попыток также приведет к повторной попытке AWS SDK, пока не истечет время Lambda или операция не будет успешной?
Я также получаю задушенный поток записи, о котором заботится SDK, при повторной попытке. Другие варианты, которые я рассматриваю, просто уменьшают нет. параллельных лямбд, так что DynamoDB не пострадает от большого нет. запросов. Изменение таблицы по требованию или изменение GSI было бы очень дорого. Есть ли другие варианты, которые стоит посмотреть здесь?