現象
よくわからないエラーが出た。
AWS CodeStar encountered an error while handling your request:
Rate exceeded (Service: AmazonCloudFormation; Status Code: 400;
Error Code: Throttling; Request ID: 818a97be-561b-11e9-acb7-a97b6a8e0345).
Try again with different parameters, or contact AWS Support.
特徴として、
- ネストスタックを利用しているときにしか出ない(単一のスタックを利用しているときは出ない)
- どのスタックで発生するかは不定(スタックAで出たと思ったら次にスタックBで同じエラーが発生することがある)
- 一度発生するとどれだけ時間を開けても再度同じエラーが発生する(私の場合、1週間おいてみたがだめだった)
という点が挙げられる。
APIの上限かなと思い、ドキュメントを斜め読みするが項目は見つけられなかった。
公式フォーラムを見ても、回答されていないエラーだった。
https://forums.aws.amazon.com/thread.jspa?messageID=896014
原因?
少し調べていると、Stack Overflowに同じ質問がされていた。
以下適当に訳して抜粋すると、
- CloudFormation APIが 原因ではない
- Jenkins(継続的インテグレーション用のオープンソフトらしい)パイプラインが数秒ごとにステータスを取得していることが原因と考えられる。
- 複数のスタックを操作しているときに発生する
- おそらくJenkinsのCloudFormationプラグインのバグが原因だろう。
- 想定以上に時間がかかりょうなら、ステータスを頻繁に取得しないようにする必要がある。
最後の方にヒントっぽいことが書いてあったが、今の自分ではできそうにないので割愛
対策
[2019/4/17追記]
この対策を施しても同じエラーが発生した。
もう少しフォーラムを漁ってみると、なぜかは分からないがデフォルトで入っているTransform: AWS::CodeStar
を消せば良いっぽい。
現に、その対策を施したところ、今の所同様のエラーは発生していない。
Transform:
- AWS::Serverless-2016-10-31
#Comment out this
#- AWS::CodeStar
AWS Lambda scheduled with CodeStar: SyncResources com.amazon.coral.service.InternalFailure
CodeStarはまだドキュメントが未整備な部分が多いのでこのぐらいのバグはしゃーないか
全てのテンプレートファイルに、以下の記述を追加したところ、ひとまず解決した。
Globals:
Function:
AutoPublishAlias: live
DeploymentPreference:
Enabled: true
Type: Canary10Percent5Minutes
Role: !Ref CodeDeployRole
初期ファイルに書かれている項目だったので、もしかしてと思ったらエラーは収まった。
どうもLambdaをデプロイする際のCodeDeployの設定らしいが・・・何のことかさっぱり
どなたか詳しい人がいれば教えてください。