こんにちは、バックエンドエンジニアの小林です。
今回はAmazon ECSでのタスクスケジュールの設定方法をお伝えします。
EC2ではcronで定期的に実行していた処理は、ECSではタスクスケジュールを利用すれば同じように実現できる場合があります。
そこで、タスクスケジュールを設定しようと、公式ドキュメントを含め、ECSのタスクスケジュールの設定方法についての記事を見つけるものの、コンソールを利用する方法ではなぜかそのとおりにできない、という状況に直面したのでその解決方法をお伝えします。
おそらく、今の期間だけかと思われますが、もし同じような状況の方がいらっしゃればその一助になれば幸いです。
タスクスケジュールの設定が見つからない
まずはコンソール内からタスクスケジュールの設定へのリンクをひたすら探していました。しかし、まったくそれらしいものが見つからない。
そういう場合は、コンソールのデザインを見てください。
こうなっていませんか?
そしてクラスター内のタブはこうなっているかと思います。
コンソールのデザインを戻す
「新しいECSエクスペリエンス」の設定をオフにします。
そうするとコンソールのデザインはこのようになるかと思います。
クラスター内のタブに「タスクのスケジューリング」が表示されています。このタブまでたどり着ければ、あとはドキュメントどおりで設定できるようになります。
コンソールのデザインによる違い
コンソールの新旧でできたりできなかったりする機能は他にもありそうです。
例えば、タスク定義のタスクロールを後から変更するというのは新しいコンソールでは現在まだできないみたいで、下記のような項目が見当たらなくなっています。
旧デザインであればコンソールからタスクロールを設定できます。
タスクスケジュールで常に最新のタスク定義を利用する
最後にもうひとつ、ECSタスクスケジュールの設定に関してです。
ECSタスクスケジュールのコンソールから設定すると、ターゲットのタスク定義のリビジョンが固定されてしまいます。開発時に自動的にタスク定義が更新されていくような仕組みを組んだ場合でも、タスクスケジュールはリビジョンが固定されてしまっているので、その都度手動で更新していかなければなりません。
その場合、Amazon EventBridgeを使うと、常に最新のタスク定義を利用することができます。
Amazon EventBridgeのコンソールを開くと、ECSのコンソールで作成したスケジュールタスクがルールとして既に登録されていますので、これを編集します。
固定のリビジョンか最新かを選択することができるようになっています。
最新を選択すればいいだけなのですが、ここを切り替えると設定値が既存の設定が一旦クリアされてしまいます。再度入力する必要がありますので、VPNなどのネットワークまわりや、ロールなどを同じように設定しておきます。
これで、タスクスケジュールが常に最新のタスク定義を利用するようになりました。
まとめ
ときどきこのような変更に戸惑うときもありますが、AWSは常に改善されて日々使いやすくなっていますので、本当にありがたいです。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。