😀

aws EventBridge × ecs Run Task aws コンソールから定期実行タスクを作成する

2023/06/25に公開

はじめに

aws コンソール画面から ecs 定期実行タスクを作成しました。
ecsで運用しているサービスの場合、定期実行が必要なタスクをどこで実行するか悩むことがあると思います。
aws Batch,Lambda,ec2を立てて実行するなど、いくつか方法はありますが
今回は ecs task スケジュールをコンソールから作成することを経験したので共有します。
自分はコンテナ上でlaravelを動かして、artisanコマンドを実行を試しました。

参考

基本的に公式で紹介されている設定の仕方の通りに行えば作成できました。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/scheduled_tasks.html

aws コンソールから作成

Amazon EventBridgeからスケジュールを作成

スケジュールの詳細の指定

期間に関しては、開始日、終了日を設定、間隔はcron式、もしくはrate式にて設定します。

ターゲットの選択

起動したいecsタスクのクラスター、タスク定義など選択します。
サブネットとセキュリティグループに関しては手動でIDを手入力します。稼働しているecsの情報と合わせて入力します。(セレクトボックスで選択できるようにして欲しいところですが...)

そしてここがミソになりますが、
オーバーライドの項目で実行したいコンテナ名、コマンドをjson形式で指定します。ここで cmd コマンドを上書き、コンテナで実行したいコマンドを指定できます。

下記は一例です。

{
  "containerOverrides": [
    {
      "name": "web", // コンテナ名
      "command": [
        "/bin/bash",
        "-c",
        "php artisan TestCommand"
      ]
    }
  ]
}

以上になります。

注意点

EventBridgeは仕様として、同じルールを複数回トリガーしてしまうことがあります。そのため、多重実行しても問題ないような処理、もしくは多重実行されないよう排他処理を実装する必要があります。

参考

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/CWE_Troubleshooting.html?fbclid=IwAR2rYOjBfgh0N6n_zt_7mnyjdWt5gqj7Ez2xSkEABV23vRdNAAcUYWAI4Ug#RuleTriggeredMoreThanOnce

終わりに

作成も楽、コンソール上から起動/停止の操作も楽にできるのでは非常に便利だと思いました。

Discussion