我在一个基于节点的服务器中使用来自AWS的@aws-sdk/client-iam SDK作为JavaScript。我们正在使用GetGroupCommand。
如果我们调用上面的命令AWS会抛出Throttling错误,并且有一个字段error?.$metadata?.totalRetryDelay,它会告诉我们要重试请求多少毫秒之后。
基于这个尝试错误,我们修改了对睡眠的调用一定时间,但是当调用太多时,它们都会在睡眠后重试,导致AWS服务器再次泛滥&抛出Throttling错误。
我找不到AWS 3的任何指南/参考,解释在什么条件下它可能抛出Throttling错误。
有中间件https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_middleware_retry.html --我想这是我们可以使用的东西,但不确定如何使用。此示例或AWS 3的throttling最佳实践示例在github或SDK指南中没有提到。
您能告诉我如何在AWS 3中为JS处理这个Throttling问题吗?
以下没有任何关于节流的有用信息,
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
发布于 2021-04-06 13:30:55
如果nodejs程序没有向API发送多个并发请求,那么totalRetryDelay值将对您非常有用。它告诉您在向发送多一个请求之前需要等待多长时间,而不是再发送10或50个请求。
解决问题的方法可能是将您的请求放入某种内部队列中,每次发送一个,其间延迟很短。
或者,如果您知道发送了多少并发请求,则可以尝试将totalRetryDelay乘以该数字并延迟那么多时间。
https://stackoverflow.com/questions/66969435
复制相似问题