调用GetDeployment操作时发生错误(ThrottlingException)(达到最大重试次数:4):超出速率

问题描述 投票:1回答:1

随着AWS CodeDeploy中部署组数量的增加,BitBucket管道开始更频繁地失败。

管道故障......

+ python ./_scripts/codedeploy_deploy.py
Failed to deploy application revision.
An error occurred (ThrottlingException) when calling the GetDeployment operation (reached max retries: 4): Rate exceeded

有没有办法在限速前增加价值或减少发生的几率?

AWS FORUM POST:https://forums.aws.amazon.com/thread.jspa?messageID=892511

python amazon-web-services boto3 bitbucket-pipelines bitbucket-aws-code-deploy
1个回答
5
投票

遗憾的是,没有办法提高速率限制,因为这是由AWS API动态配置的。

AWS支持:

此问题与任何并发部署或任何其他资源相关限制无关。这是一个限制问题,无法更改。

同时启动的多个API调用会在我们的端点受到限制。每个端点的限制是变化的并且是动态的,因此不会在任何地方记录。

在这种情况下,同时有多个“GetDeployment”API调用,因此调用受到限制。

在这种情况下,我们建议在重试之间实现错误重试和指数退避,以便API调用不是同时进行的。

您可以查看以下链接,该链接解释了如何在我们的代码中实现它。 - https://docs.aws.amazon.com/general/latest/gr/api-retries.html

我能够实现指数退避以降低我们尝试获取部署状态的速率,并在部署失败之前增加重试次数。

确保使用支持这种新配置系统的最新版BOTO3(boto3-1.9.108 botocore-1.12.108)。

BOTO3重试配置:https://github.com/boto/botocore/issues/882#issuecomment-338846339

福克:https://bitbucket.org/adanrehtla/aws-codedeploy-bitbucket-pipelines-python/src/master/ GIST:https://gist.github.com/djravine/5007e2a7f726cebe14ea51c7ee54bf5d

管道成功......

+ python ./_scripts/codedeploy_deploy.py
Deployment Created (Exponential back off 30s)
Deployment InProgress (Exponential back off 60s)
Deployment Succeeded

注意:我将根据我们的部署修改使用情况,以更新信息更新此帖子。

© www.soinside.com 2019 - 2024. All rights reserved.