Ruby
AWS
CloudWatch

Amazon CloudWatchのルールのスケジュール式のcron式がわかりづらい、のでなんとかしたい。2018-05-28

More than 1 year has passed since last update.

246 Hack Night #1 内に行った作業のメモです。


内容

Amazon CloudWatchのルールのスケジュール式のcron式がわかりづらいので、普通のcrontabのフォーマットをCloudWatchのScheduledEventsのcron式に変換するものをRubyで書きます。


わかりづらいポイント

普通のcrontabにはない ? がわかりづらいです。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html


例: 毎日午前 10:00 (UTC) に実行

crontab

0 10 * * * COMMAND

CloudWatch cron( のフィールドもあるので普通のcrontabより1個多いです)

0 10 * * ? * COMMAND

「曜日」のフィールドを ? にしないといけません。

いつものcrontabな感じで * にするとエラーになります。


作った

https://github.com/abetomo/cloud_watch_scheduled_events_cron

% echo '0 10 * * *' | bundle exec ruby ./bin/to_cwcec

0 10 * * ? *
% echo '5 * * * 1-5' | bundle exec ruby ./bin/to_cwcec
5 * ? * MON-FRI *

のように普通のcrontabの内容をCloudWatchのcron式に変換してくれます。


足りないところ



  • gem が作ったREADMEそのままです 更新しました


  • gemに上げてないです 上げました https://rubygems.org/gems/cloud_watch_scheduled_events_cron

  • AWSのドキュメントにある例しかサポートしていないので、うまく動かないケースのほうが多いと思います

  • 入力が標準出力からのみ


まとめ

CloudWatchのScheduledEventsのcron式でいつもエラーになるのでこのような変換ツールがあるとうれしいです。