AWS cronなタスクスケジュールをまとめてビジュアライズできるツールを作った
AWSのcron式でcronvできるやつ作った。便利っぽい🥳 pic.twitter.com/Sqid4kAxS5
— あらたま (@ar_tama) 2022年6月18日
経緯とか
もともとcronvというツールがあって(めちゃくちゃ便利)、これはcrontabをビジュアライズしてくれる君なんですが、バッチサーバをEC2からECS Task Schedulerにお引越しさせるにあたって当然使えなくなり、何時に何が動くんだっけが一覧できてほしいよな〜EventBridgeのコンソールじゃようわからんしな〜ということで作ってみました。
ついでにベース時刻に+9:00なものを食わせることでJSTにも対応しています。心の目で+9時間しなくてよくなりますね。
しくみ
aws events list-rules
で出てくるjsonをパース- cron式をaws-cron-parserでパース
- Google ChartsのTimelineを組み立て
最初は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とか挟んで弾いてください😇