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