最近はプライベートで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
を設定することで無事起動できました!!!