最近はプライベートでFargateを使う機会が増えてきて常駐させるサービスから一定間隔(例えば毎週金曜日の9:30)でのバッチとして使っている
今回は一定間隔でのバッチの実行用途で使うFargateの話
ネタ元は8月末にリリースされたこの機能!!!!
AWS Fargate が時間とイベントベースのタスクスケジューリングをサポート
今まではFargateのタスクをバッチ用途として定期的に動かそうと思うとECS RunTask APIをうまいこと実行させる必要があった
僕は以前↓の記事で書いたようにLambda FunctionでCloudWatch Eventをトリガーにして実行していた
blog.hatappi.me
それが8月末からは必要なくなった!!
タスクのスケジューリングは今回はGUIで設定しました
任意のクラスターの詳細からタスクのスケジューリングを選択することで作成することが出来ます

スケジューリングの設定などは公式のドキュメントが参考になります
設定時のポイントとしては起動タイプでFargateを選択することくらいかと思います
時間がきてもタスクが実行されない
今回設定して動作させるまでに一つだけ問題にあたりました
それは時間がきてもタスクが実行されないとう問題。。。
CloudWatchのメトリクスを見るとすべてFailedInvocationsになっています
原因としてはタスクのスケジュールを設定する際の CloudWatch Events IAM ロール で設定するポリシーが足りませんでした

解決はポリシーに AmazonEC2ContainerServiceEventsRole を設定することで無事起動できました!!!