Fargateがタスクスケジュールをサポートしたの嬉しい

最近はプライベートでFargateを使う機会が増えてきて常駐させるサービスから一定間隔(例えば毎週金曜日の9:30)でのバッチとして使っている

今回は一定間隔でのバッチの実行用途で使うFargateの話

ネタ元は8月末にリリースされたこの機能!!!!
AWS Fargate が時間とイベントベースのタスクスケジューリングをサポート

今まではFargateのタスクをバッチ用途として定期的に動かそうと思うとECS RunTask APIをうまいこと実行させる必要があった

僕は以前↓の記事で書いたようにLambda FunctionでCloudWatch Eventをトリガーにして実行していた
blog.hatappi.me

それが8月末からは必要なくなった!!

タスクのスケジューリングは今回はGUIで設定しました
任意のクラスターの詳細からタスクのスケジューリングを選択することで作成することが出来ます

f:id:hatappi1225:20180902005628p:plain

スケジューリングの設定などは公式のドキュメントが参考になります

docs.aws.amazon.com

設定時のポイントとしては起動タイプでFargateを選択することくらいかと思います

時間がきてもタスクが実行されない

今回設定して動作させるまでに一つだけ問題にあたりました
それは時間がきてもタスクが実行されないとう問題。。。

CloudWatchのメトリクスを見るとすべてFailedInvocationsになっています

原因としてはタスクのスケジュールを設定する際の CloudWatch Events IAM ロール で設定するポリシーが足りませんでした

f:id:hatappi1225:20180902010716p:plain

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