トップ «前の日記(2020/03/08 (日) ) 最新 次の日記(2020/03/10 (火) )» 編集 RSS feed

HsbtDiary


2020/03/09 (月) [長年日記]

Jets を使って雑に cron 牧場を作る

最近はプロダクションのコードをガチでは書いてなくて、GitHub やら Slack などをいじるようなコードを書いたりして自動化をやってるんだけど、サーバーは建てたくないけど何かを定期実行する cron っぽいものが欲しいなあと思い、Jets を使って作ってみた。

$ jets new awesomecron --mode job

などしてひな形を作ってから、公式ドキュメントの https://rubyonjets.com/docs/jobs/ にあるような感じでジョブごとに Rails よろしくクラスを作る感じ。

class HardJob < ApplicationJob
  class_timeout 300 # 300s or 5m, current Lambda max is 15m

  rate "10 hours" # every 10 hours
  def dig
    puts "done digging"
  end

  # Cron expression is AWS Cron Format and require 6 fields
  cron "0 */12 * * ? *" # every 12 hours
  def lift
    puts "done lifting"
  end
end

デプロイは jets deploy でできるのも良くて、環境変数も .env で制御できたり、AWS Lambda を中心としていろいろできるのも便利だし、こなれていてよかった。

リクエストを受け付けるようなやつも作れてそちらは API Gateway を使いつつ、まんま Rails っぽい仕組みのようなんだけどそっちも適当に作ってみるかなあ。何か Rails に寄せすぎなのでは?って感じはあるけど、AWS の managed をフルに使ってだいぶ良い感じに動くものができるのは期待できるので引き続き頑張ってほしい。