こんにちは。かっぺいです。
前回の記事から、かなり時間が経過してしまいましたが、ECSの続きです。
定期的に実行するタスクを実行時間単位でLamdaみたいな感じの費用感覚で利用できます。
私の場合は、今までEC2で自動起動・定時実行していたPHPをコンテナのタスク実行で利用しています。
ECSのクラスター定義
まずは、ECSを使うための、クラスター定義を行います。

クラスターから、クラスターの作成を選びます。

クラスター名、インフラストラクチャはデフォルトの「Fragateのみ」を選んでおきます。
モニタリングオプションのContainer Insightsはオンにすることを推奨と記載されていますが、オンにするとCloudWatchでメトリクスを見ることができます。
ただし、小規模タスクをたくさん起動する場合、メトリクスをたくさん作られてしまうので、費用が嵩むことになります。通常はオフにしておくことをお勧めします。
タスク定義
続いて、タスク定義を行います。
ここでタスク定義で設定するのが、実際の実行するコンテナの設定になります。

タスク定義では、コンテナイメージの名前とリソースサイズ等を指定します。
注意点として、アーキテクチャでコンテナイメージのCPUの種類を指定します。コンテナイメージと同じX86かARMを選びましょう。
ここを間違えると、実行時にexec format errorが発生します。

続いて、CPU数とメモリ量を指定。ここで指定したもので料金が変動してきます。

タスクロールとタスク実行ロールには、IAMロールを指定します。
タスクロールが、コンテナとして起動するインスタンスが利用するロールで、例えばコンテナで実行するタスク内でS3を利用するのであれば、S3のアクセス権が付与されたロールを指定します。

コンテナ設定で、実行するコンテナの定義を行います。
イメージURIで、事前にECRにアップロードしたプライベートイメージを指定できます。
ポートマッピングはバッチ起動の場合には必要ないので定義を削除します。
イメージURIでは、ECRイメージを閲覧を選びます。

イメージ選択では、イメージタグを選んで、latestを選んでおくと、イメージを更新した場合には最新を選んで実行するようになります。
最後にDocker設定で、実行するコマンド類を設定します。

クラスター・タスク定義
実際に実行するために、クラスターの中にあるスケジュールされたタスクを定義します。

ある一定の時間で実行する場合は、実行サイクルはcron式で定義します。

起動タイプはFRAGATEを、プラットフォームバージョンはLATESTを選びます。

タスク定義ファミリーには、事前に定義したタスクから選びます。
つまり、実行したいDocker設定を選ぶ感じになります。

ネットワークは、実行するインスタンスが使用するVPCとサブネット、セキュリティグループを選びます。
以上で、指定したCRONのタイミングでタスクが実行されます。
実行ログ
クラスターのタスクに、直近に実行されたタスクがリストアップされます。
そこから、ログなどで実行時のログを確認することができます。
同様に、CloudWatchでもログの確認をすることができます。
最後に
EC2でも実行時間単位の課金となっており、EventBridgeからオートメーション設定を行いタスク起動できますが、ECSではコンテナイメージをアップロードするだけで次に実行されるタスクでは新しい実行モジュールで実行されるので、大変手間が省けて便利です。