Serverless Frameworkのserverless-step-functions pluginで起動トリガーにEventBridgeスケジューラが使用できるようになっていました

Serverless Frameworkのserverless-step-functions pluginで起動トリガーにEventBridgeスケジューラが使用できるようになっていました

Clock Icon2023.11.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部のueharaです。

いつの間にかServerless Frameworkのserverless-step-functions pluginで、StepFunctionsの起動トリガーにEventBridgeスケジューラが使用できるようになっていましたので、今回はそちらをご紹介したいと思います。

これまでのスケジュール起動について

これまでのServerless Frameworkを利用したStepFunctionsのスケジュール起動では、EventBridge Ruleにおける「イベントスケジュール」による設定しかできませんでした。

これが、serverless-step-functions pluginの2023年9月の3.15.0リリースによる機能追加と、2023年10月の3.17.0リリースによるバグFixを経てEventBridgeスケジューラによるトリガーが利用ができるようになりました。

名前が似ていてややこしいですが、EventBridge RuleのイベントスケジュールとEventBridgeスケジューラによる違いは以下のブログで紹介されています。

個人的に、Ruleの方で使いにくいなと思っていたのは以下の2点でした。

  • タイムゾーンの指定ができない
  • ルール数のサービスクォータがデフォルトで300と少ない

EventBridgeスケジューラであれば上記2点の問題はクリアされるので、本アップデートは嬉しい限りです。

利用方法

EventBridgeスケジューラを使用したい場合、 method"scheduler" として、serverless.ymlで以下のように指定することで実現できます。

stepFunctions:
  stateMachines:
    SfTest:
      name: <SF Name>
      role: <SF Role ARN>
      events:
        - schedule:
            method: "scheduler"
            name: <EventBridge Scheduler Name>
            role: <EventBridge Role ARN>
            rate:
              - cron(30 * * * ? *) # 毎時30分に起動
            enabled: true
            timezone: "Asia/Tokyo"
      definition:
        ...

実際に利用してデプロイしてみたところ、以下の通りEventBridgeスケジューラによるStepFunctionsの実行設定が確認できました。

補足

EventBridge Ruleの方で利用するIAMロールで許可するプリンシパルは events.amazonaws.com ですが、EventBridgeスケジューラで利用するIAMロールで許可するプリンシパルは scheduler.amazonaws.com となることに注意しましょう。

最後に

今回は、Serverless Frameworkのserverless-step-functions pluginで起動トリガーにEventBridgeスケジューラが使用できるようになっていたので、その利用方法をご紹介しました。

参考になりましたら幸いです。

追記

commitログを眺めていないと気付かないアップデートだったので、利用方法についてドキュメント更新のプルリクエストを出しておきました。(マージ済み)

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.