Php – the best way to run cronjob in AWS ECS

amazon-ecsamazon-web-servicescronPHPscheduled-task

I have a web app powered by Laravel that is set up on AWS ECS. I would need to run an artisan command as a cronjob.

I'm looking at "Scheduled Tasks" in ECS Cluster configuration. I can launch new tasks following the "Scheduled Tasks (Cron)" documentation on AWS. I'm using the Laravel's Task Definition in the Target which I use for web services & it has two tasks.

  1. Not sure how I can invoke the artisan command
  2. The scheduled task seems running forever

Any help would be greatly appreciated. Thank you.

Best Answer

I'm not familiar with Laravel or Artisan but essentially you'll need to:

  1. create a container image with your job (artisan)
  2. create a task definition that runs the artisan container when invoked
  3. create the cron-scheduler to invoke the above task definition

Regarding "The scheduled task seems to be running forever" - ECS Tasks do their job and exit and are not restarted (e.g. cron jobs). ECS Services are restarted when they exit (e.g. web servers). Make sure you're creating a Task and not a Service. Then it should be running forever.

Hope that helps :)

Related Topic