如何使用 JavaScript AWS IAM SDK 3 处理节流?

How to handle throttling with JavaScript AWS IAM SDK 3?

我正在使用 AWS 的 @aws-sdk/client-iam SDK JavaScript,在基于节点的服务器中。我们正在使用 GetGroupCommand.

如果我们主动调用上面的命令 AWS SDK 会抛出 Throttling 错误,其中一个字段 error?.$metadata?.totalRetryDelay 告诉我们将在多少毫秒后重试请求。

基于这次试验 - 我们已经将调用修改为休眠一定时间的错误,但是当调用太多时,它们都会在休眠后重试,导致 AWS 服务器再次泛滥并抛出 Throttling 错误。

我找不到 AWS JS IAM SDK 3 的任何 guide/reference 解释在什么情况下它可能会抛出 Throttling 错误。

有中间件https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_middleware_retry.html我想这是我们可以使用的东西,但不确定如何使用。 github 存储库或 SDK 指南中未提及 throttling AWS SDK JS 3 的示例示例或最佳实践。

你能告诉我如何处理 AWS SDK 3 for JS 中的这个 Throttling 问题吗?

以下

None 有任何关于节流的有用信息,

SDK参考: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html

开发人员指南: https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html

代码示例: https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sdk-code-samples.html

如果您的 nodejs 程序没有向 API 发送多个并发请求,那么 totalRetryDelay 值对您最有用。它会告诉您在发送 一个 个请求之前要等待多长时间,而不是再发送 10 个或 50 个。

您的问题的解决方案可能是将您的请求放入某种内部队列,并在它们之间有一个短暂的延迟,一次发送一个。

或者,如果您知道您发送了多少并发请求,您可以尝试将 totalRetryDelay 乘以该数字并延迟那么多。