AWS DynamoDB 限制写入请求处理

Che*_*hak 2 amazon-web-services amazon-dynamodb aws-lambda

我有一个在指定时间限制写入请求的表。我想更多地了解 AWS-SDK 如何处理它们。

根据我目前的理解,DynamoDB 将向我的 Lambda 返回错误。这就是为什么我会在 DynamoDB 表指标中出现用户错误。但是,AWS-SDK 具有错误处理和重试策略,可以帮助我重试并将受限制的请求写回表中。这是对的吗?

F_S*_*O_K 6

每次您的应用程序发送超出您容量的请求时,您都会收到ProvisionedThroughputExceededException来自 Dynamo的消息。但是,您的 SDK 会为您处理并重试。默认 Dynamo 重试时间从 50ms 开始,默认重试次数为 10,默认退避为指数。

这意味着您可以在以下位置重试:

  1. 50ms
  2. 100ms
  3. 200ms
  4. 400ms
  5. 800ms
  6. 1.6s
  7. 3.2s
  8. 6.4s
  9. 12.8s
  10. 25.6s

如果在第 10 次重试后您的请求仍未成功,SDK 会将其ProvisionedThroughputExceededException传回给您的应用程序,您可以按照自己的喜好进行处理。

请注意,您可以更改 SDK 的默认重试行为。例如

new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});
Run Code Online (Sandbox Code Playgroud)

这意味着您重试 13 次,初始延迟为 200 毫秒。这将使您的请求总共完成 819.2 秒而不是 25.6 秒。