【问题标题】:An error occurred (ThrottlingException) when calling the GetDeployment operation (reached max retries: 4): Rate exceeded调用 GetDeployment 操作时发生错误 (ThrottlingException)(达到最大重试次数:4):超出速率
【发布时间】:2019-07-27 17:47:29
【问题描述】:

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

管道失败...

+ 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 论坛发帖: https://forums.aws.amazon.com/thread.jspa?messageID=892511

【问题讨论】:

    标签: python amazon-web-services boto3 bitbucket-pipelines bitbucket-aws-code-deploy


    【解决方案1】:

    很遗憾,无法提高速率限制,因为这是由 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/DJRavine/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
    

    注意:当我根据我们的部署修改使用情况时,我会更新这篇文章,提供更多信息。

    【讨论】:

    • 太棒了!您提出问题然后立即回答,现在评论并接受它。
    • 我认为有一个新的 2 天限制才能接受答案
    • @AdanRehtla 嗨,您能否确认配置只是为了提高速率限制。此外,您提供的 aws 链接说指数回退是内置在 SDK 中的,那么为什么我们需要再次显式实施它?谢谢。
    • 另外,您似乎是线性后退而不是指数后退,您同意吗? deploymentDelay = (deploymentCounter * DEPLOYMENT_BACKOFF_SECS) gist.github.com/djravine/…
    • @Gadam 1. 没有办法增加速率限制,这个 boto3 配置是增加最大重试次数。 SDK 确实有基本的支持,但如果您遇到硬限制(我同时部署到多个项目的多个管道,这达到了 AWS 硬限制),您需要自己扩展它。 2. 你是对的,但对于大多数人(和 AWS)来说,这是一种可以接受的指数回退策略,使用递增的延迟。
    猜你喜欢
    • 2020-10-23
    • 1970-01-01
    • 2019-06-18
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多