Lambdaファンクションを5min毎に実行するスケジュールの設定方法

serverless frameworkで作ったLambdaファンクションのデプロイを試したところ、スケジューリング関連の設定でエラーが発生し、AWSにデプロイできない事象に遭遇しました。

cronの設定を間違えていただけなのですが、少しハマってしまったので、同じエラーで悩まされる方が減るようメモを残します。

背景

serverless.ymlにcronの設定をしていました。

# ↓エラーとなった書き方

...省略
functions:
  my-function:
    events:
      # At every 5 minutes (Write UTC)
       - schedule: cron(0/5 * * * ? *)

5min毎に関数が実行されるようスケジュールを組みたかったのですが、この書き方ではエラーとなってしまいました。

解決方法

cron(0/5 * * * ? *) ではなく、 cron(*/5 * * * ? *) と指定することで解決しました。

# ↓修正後

...省略
functions:
  my-function:
    events:
      # At every 5 minutes (Write UTC)
       - schedule: cron(*/5 * * * ? *)

まとめ

Lambdaのスケジュール式に関するドキュメントでは、cron(0/5 …)という記述方法が例として記載されていました。↓

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents-expressions.html

ですが、こちらの方法ではなぜか上手くデプロイされませんでした。なにか見落としがあったのかもしれませんが、無事デプロイできたので良しとします。