LoginSignup
0

More than 5 years have passed since last update.

Serverless Framework の schedule 差分更新バグ

Posted at

現象

Serverless Framework (v 1.27.3) で遭遇したバグで、
scheduleを1つのAPIに対して複数定義する場合、追加定義を途中に挿入すると、定義重複とか言われて、エラーで蹴られることがある。(差分更新しようとしてるが、差分維持しようとした配列管理のschedule定義が、挿入により、新しいIndexに新規生成されたscheduleと、内部計算で算出されるARNが衝突する問題)

例:CloudWatchのトリガーをfunctionsにぶら下げて下記のように定義すると思うが、このとき、既存の定義を維持しつつ、新たな定義を間に追加すると、元々一番最後に定義していたやつが、ARN重複で更新できないよ!エラー!!とか言われることがある。

      - schedule:
          name: Aggregate-A-${opt:stage}
          description: 'Aggregate A'
          rate: cron(15 * * * ? *)
          enabled: true
          input:
            aggregateNodeMetricsReq:
              foo: 'bar'
      - schedule:
          name: Aggregate-B-${opt:stage}
          description: 'Aggregate B'
          rate: cron(15 * * * ? *)
          enabled: true
          input:
            aggregateNodeMetricsReq:
              foo: 'bar'

対処策

  • scheduleを追加するときは常に最後に追加する
  • ARN計算する要素にtimestampとかビルド番号的なのを混ぜる(ただし全トリガー再設定が走って時間かかる)
  • 一旦clean or trigger全消去してから、再度設定(もっと時間がry)

APIバージョン的な環境変数用意しておいて、nameとかに付与。
普段は最後に追加して、バージョン変えるときに、整理とかいうハイブリッドな方法が現実的かも。

Issue出てる気もするし、そのうち治るかも。なければIssue出したい気もするが、MPが足りない。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0