whenever+cronを使ってRails上のバッチを定期的に処理を行なっていたのだけど、
マネージドな環境に移したくなった。
手順
railsをdockerに詰める
普通にsrc詰めて、bundle installする
cmd
cmdにrails runnner Hoge::moge を設定する
ECRへpushする
ECSタスク定義を設定する
↑のECRを設定する
Fargateを指定する
ポートは指定しなくて良い
テスト実行
cli run-taskコマンドで試してみる。
aws ecs run-task --launch-type FARGATE \
--cluster #{cluster-arn} \
--task-definition #{task define arn} \
--network-configuration #{vpc config}
ECSタスクスケジュールへ登録
ECSクラスター => タスクスケジュールへタスク定義を登録する
実行間隔をcronとかで設定可能
補足
railsをapiサーバとして使っている場合、dockerコンテナ・ECRは共用出来そう
apiサーバの場合cmdが puma とかになってると思うので、
タスク定義で、cmdをrails runnerで上書きしてあげる。