Amazon web services 获取节流异常:超出速率\n\t AWS API上的状态代码:400

Amazon web services 获取节流异常:超出速率\n\t AWS API上的状态代码:400,amazon-web-services,aws-lambda,aws-fargate,aws-sdk-go,Amazon Web Services,Aws Lambda,Aws Fargate,Aws Sdk Go,我有110个Fargate任务正在运行(并不总是并行运行)。我正在尝试使用AWS SDK上指导的“ListFunctions”调用从其他AWS帐户(通过CrossAccountRole)获取lambda- 在进行(SDK)API调用时,有时会出现节流错误: 节流异常:超出速率\n\t状态代码:400 也经历了这个解决方案- 想要了解AWS SDK服务(lambda)是否已经实现了它。在我的情况下,我需要一个自定义的重试实现,还是仅仅增加Fargate的速率限制?对于您发布的文档: 除了简单的重试

我有110个Fargate任务正在运行(并不总是并行运行)。我正在尝试使用AWS SDK上指导的“ListFunctions”调用从其他AWS帐户(通过CrossAccountRole)获取lambda-

在进行(SDK)API调用时,有时会出现节流错误: 节流异常:超出速率\n\t状态代码:400

也经历了这个解决方案-


想要了解AWS SDK服务(lambda)是否已经实现了它。在我的情况下,我需要一个自定义的重试实现,还是仅仅增加Fargate的速率限制?

对于您发布的文档:

除了简单的重试,每个AWS SDK都实现了指数退避算法,以实现更好的流量控制

以下文件对此作了进一步澄清:

注意:每个AWSSDK都实现了自动重试逻辑和指数退避算法

在我的案例中,我需要一个重试的自定义实现,还是仅仅增加Fargate的速率限制

如果您使用AWS SDK,则不必实现任何特殊功能。但是,您的异常可能与以下内容有关:

当请求到达的速度快于您的函数可以扩展的速度时,或者当您的函数处于最大并发状态时,其他请求会失败,并出现限制错误(429状态代码)


因此,如果您认为在LAMBDA上碰到了“强”>并发限制,这可能是由于大量的FARTATE任务,所以您可以考虑要求AWS支持它的增加。默认限制为1000,这似乎足以完成任务。但也许另一个帐户也在运行其他lambda。1000限额适用于帐户和区域中的所有功能。

非常感谢您的回答。我只是想说,我没有得到429,在进行AWS API调用(使用CrossAccountRole从主帐户获取目标帐户中lambda的数量)时,我得到了400(错误请求)-节流异常。我使用ListFunctions()从ECS Fargate任务进行此调用。想知道更改Lambda并发限制会有什么帮助吗?同样,关于“AWS SDK实现指数退避算法以实现更好的流控制”的说法是正确的,但是有文档提到有时客户端应该对其进行自定义。想了解是否有一种方法可以尝试自定义request.Retryer接口以进行重试和指数退避。@ShivikaSodhi是的,您也可以自己实现它。我看不出你有什么理由不这样做。顺便说一句,如果我的回答是有帮助的,它的接受将不胜感激。当然,有没有关于我如何着手实施它的例子?我对AWS和Go非常陌生,不太清楚如何定制它(基本上是为了在节流的特殊情况下增加重试次数)@ShivikaSodhi中有一个关于如何实现回退的伪代码。