我正在从AWS Lambda更新DynamoDB表。我使用默认的AWS开发工具包重试策略和默认的SDK回退策略,其基本延迟为25毫秒,限制延迟为125毫秒,最大延迟为20秒,最大延迟为15。但是,我得到了3种异常:
ConditionalCheckFailedException
=>我先重新读取记录并对其进行处理,然后再将其更新回数据库中。
ProvisionedThroughputExceededException
=>这是由于在表上对GSI的大量写入。查看文档,AWS SDK本身会进行多次调用,然后放弃并抛出此错误。我希望SDK继续尝试直到Lambda超时。那我应该将maxRetries增加到1000左右吗?
AmazonDynamoDBException
=>我在这里得到的消息是DynamoDB正在配置表以处理更高的规模,我应该稍后再试。我相信SDK也会重试此问题,并且增加最大重试次数还会导致AWS SDK重试,直到Lambda超时或操作成功?
我也受到写限制,SDK通过重试来解决这个问题。我正在考虑的其他选择只是减少编号。并发lambda的数量,因此DynamoDB不会受到较大的打击。的请求。将表更改为按需更改或更改GSI将非常昂贵。还有其他值得一看的选择吗?