在 AWS 上设置 cronjob 最经济的方法是什么?

在 AWS 上设置 cronjob 最经济的方法是什么?

详细信息:我在 Elastic Beanstalk(Web 服务器)上有一个 Web 应用程序,我需要用 PHP 执行几个 cronjob。这些 cronjob 必须连接到 AWS RDS。为此,我创建了一个 Elastic Beanstalk Worker,但我必须付费才能让该 Worker 实例全天可用,而每个 cronjob 最多只需要 20 分钟。

答案1

您可以使用 Batch 执行运行时间较长的作业,或使用 Lambda 执行运行时间较短的作业(少于 5 分钟)。Batch 和 Lambda 都是有效的 CloudWatch 事件目标,因此您不需要同时使用两者来触发 cron 作业。

对于批处理(长期运行):

在 CloudWatch Events 控制台中,设置计划任务 (cron),并为目标配置批处理作业。CloudWatch 将代表您进行 SubmitJob API 调用。 https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html

对于 Lambda(短期运行):

在 CloudWatch Events 控制台中,设置计划任务 (cron),并为目标指定您的 Lambda 函数。CloudWatch 将自动触发 Lambda 函数。 https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html

答案2

简短回答:CloudWatchEvent -> Lambda fn -> AWS Batch Job

长答案:创建一个计划的 cloudwatch 事件,该事件在特定时间触发。配置一个 lambda 函数以触发此事件。此 lambda 函数将使用 AWS Batch 对作业进行排队(预先配置作业队列和相关项目)。此作业需要指定您要运行的 cron-job。

在这种情况下,Cloudwatch、lambda 和 AWS Batch 实际上是免费的,因此唯一涉及的成本是在作业期间运行您的 ec2 实例。希望这对您有所帮助!

相关内容