web-dev-qa-db-ja.com

getDeployment操作を呼び出すとき(Max Retriesに達した:4):レートを超えた場合は、エラーが発生しました(ThrottlingException)。

AWSコード展開で展開グループの数が増加すると、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フォーラムPOST:https://forums.aws.amazon.com/thread.jspa?messageId=892511

6
Adan Rehtla

残念ながら、これは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 Retry Config:https://github.com/boto/botocore/issues/882#iescomment-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
 _

注:私たちの展開に基づいて使用法を修正するので、この投稿をより詳細に更新します。

9
Adan Rehtla