0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EventBridgeを使ってLambda関数を月初のAM8:00に実行する

Posted at

個人で運用しているLambda関数を月初に動かす際に調査した内容のメモです。

やりたいこと

今回やりたいことは『毎月1日の8:00に特定のLambda関数を実行する』こと。

EventBridgeを使うことでcron形式での記述ができるが、タイムゾーンがUTCであるため時差を考慮する (JSTの9時間前を指定する) 必要がある。

cron(0 0 1 * ? *) のように月初を指定すると、9時以前に実行できなかったり、cron(0 23 31 * ? *) みたいに記述すると月末が31日まである場合は対応できるが、28日とか30日の場合にルールが複数出来そうで、可能な限り簡潔に記述したかった。

実現方法

EventBridgeのユーザーガイドを確認してみると、Lを使うことで月末・週末を表現することができるらしい。
https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html

  • The L wildcard in the Day-of-month or Day-of-week fields specifies the last day of the month or week.

cron式には以下の6つのフィールドがあり、先頭から3つ目をLにすることで月末を表現できる。

フィールド ワイルドカード
0-59 , - * /
時間 0-23 , - * /
1-31 , - * ? / L W
1-12 または JAN-DEC , - * /
曜日 1-7 または SUN-SAT , - * ? L #
1970-2199 , - * /

あとは時差 (+9:00) を考慮してcron式を記述すれば良いので、以下のようにすれば良い。

毎月1日のAM8:00に呼び出すためのルール
cron(0 23 L * ? *)

まとめ

9時以降とかであれば cron(0 0 1 * ? *) のような記述で良いですが、9時よりも前に呼び出したい場合はLを使うと簡単に表現できるのでぜひ使ってみてください。

0
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?