cron
Unix 系 OS のスケジュール実行の仕組みと、cron 式によるスケジュール定義
自動化
cron とは
cron は Unix 系 OS のスケジュール実行の仕組みで、指定した日時にコマンドを自動実行する。AWS では EventBridge (旧 CloudWatch Events) が cron 式でスケジュール実行を提供する。
cron 式
┌───────── 分 (0-59)
│ ┌─────── 時 (0-23)
│ │ ┌───── 日 (1-31)
│ │ │ ┌─── 月 (1-12)
│ │ │ │ ┌─ 曜日 (0-6, 0=日曜)
│ │ │ │ │
* * * * *
| 式 | 意味 |
|---|---|
0 9 * * * |
毎日 9:00 |
*/5 * * * * |
5 分ごと |
0 0 * * 1 |
毎週月曜 0:00 |
0 0 1 * * |
毎月 1 日 0:00 |
0 9-17 * * 1-5 |
平日 9:00〜17:00 の毎時 |
AWS の cron 式は 6 フィールド (秒なし、年あり) で、曜日と日の同時指定に ? を使う。
AWS cron vs Unix cron
| 観点 | Unix cron | AWS EventBridge |
|---|---|---|
| フィールド数 | 5 | 6 (年を含む) |
| 曜日 | 0-6 (0=日) | 1-7 (1=日) or SUN-SAT |
? |
なし | 日 or 曜日に使用 |
| タイムゾーン | サーバーのローカル | UTC (EventBridge Scheduler で指定可能) |
GitHub Actions のスケジュール
on:
schedule:
- cron: '0 0 * * 1' # 毎週月曜 0:00 UTC
よくある間違い
- UTC とローカル時間の混同 →
cron(0 0 * * ? *)は UTC の 0:00 = JST の 9:00 - 曜日と日を同時に指定 → AWS では片方を
?にする - 実行間隔が短すぎる → Lambda の同時実行上限に注意
cron の関連書籍も参考になる。