AWS cronなタスクスケジュールをまとめてビジュアライズできるツールを作った

www.npmjs.com

経緯とか

もともとcronvというツールがあって(めちゃくちゃ便利)、これはcrontabをビジュアライズしてくれる君なんですが、バッチサーバをEC2からECS Task Schedulerにお引越しさせるにあたって当然使えなくなり、何時に何が動くんだっけが一覧できてほしいよな〜EventBridgeのコンソールじゃようわからんしな〜ということで作ってみました。
ついでにベース時刻に+9:00なものを食わせることでJSTにも対応しています。心の目で+9時間しなくてよくなりますね。

しくみ

最初はruleの取得もスクリプトでやろうかなと思ったんですが、aws cliでプレフィクス絞り込みとかしたいよね?と思い外からjsonファイルを入力してもらうようにしました。

こういったちょっとしたツールはGoで書きたいなと思いつつ、cronパーサがnpmにあったので早々に宗旨変えしました。TypeScript筋が落ちているので普通にコードレビューが欲しい。

活用例

SchedulerのRulesはrepo管理しているので、GitHub Actions経由でaws-cronvを呼び出すようにしてみました。かなり強力です。

既知の課題

cronvオプションのサポート

一番困るのが期間指定かも。デフォルトで1日のみサポートしているので、例えば毎月15日のスケジュールが(ベース日時を動かさないと)記録されません。

html以外のアウトプットフォーマット

Google ChartsのTimeline型は画像吐き出しに対応していないようなので、サクッと実装するのが難しくて諦めました。あるとGitHub上で確認が完結するからいいよねと思っています。パッチお待ちしてます!

cron式以外のScheduleExpressionのサポート

cron式以外のScheduleExpressionが来ると落ちます。間にjqとか挟んで弾いてください😇