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な感じで *
にするとエラーになります。
作った
% 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式でいつもエラーになるのでこのような変換ツールがあるとうれしいです。