Which solution will meet these requirements with the LEAST operational overhead?
Use AWS Batch to run the tasks as jobs. Schedule the jobs by using Amazon EventBridge (Amazon CloudWatch Events).
Convert the EC2 instance to a container. Use AWS App Runner to create the container on demand to run the tasks as jobs.
Copy the tasks into AWS Lambda functions. Schedule the Lambda functions by using Amazon EventBridge (Amazon CloudWatch Events).
Create an Amazon Machine Image (AMI) of the EC2 instance that runs the tasks. Create an Auto Scaling group with the AMI to run multiple copies of the instance.
Explanations:
AWS Batch efficiently manages batch jobs, allowing for the scheduling and execution of tasks in a scalable manner without the need for manual management of resources. Amazon EventBridge can trigger jobs based on schedules, making this a low-overhead solution that accommodates various programming languages.
While using AWS App Runner could provide scalability, it introduces complexity by requiring the tasks to be containerized. This adds operational overhead in managing containerization, which is not necessary if the tasks can run as jobs directly.
AWS Lambda can run various languages and is scalable, but it has limitations on execution time (15 minutes maximum), which does not fit the 1-hour task requirement. Additionally, managing multiple Lambda functions for different tasks can increase operational overhead.
Creating an Auto Scaling group from an AMI can provide scalability, but it introduces more operational complexity. The solution requires managing EC2 instances, including scaling policies and health checks, which increases operational overhead compared to a serverless approach like AWS Batch.