使用 CloudWatch Events 触发 EC2 实例上的 cron 作业是否矫枉过正?

using CloudWatch Events to trigger cron jobs on an EC2 instance overkill?

我们有一个 EC2 服务器 运行s cronjobs。目前该服务器上有一个 crontab,用于保存 cronjob 设置。 运行在此服务器上一切正常。

使用 AWS Cloudwatch Events 来触发 crons 会不会有点矫枉过正?即创建一个调用 lambda 的 cloudwatch 事件 运行 EC2 实例上的 shell 命令。

我的想法是这些可能的好处:

根据 AWS 文档,看起来确实有好处: https://aws.amazon.com/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/

  • 分离作业计划和 AMI:如果您的 cron 作业是 AMI 的一部分,则每个计划更改都需要您创建新的 AMI 版本,并更新现有实例 运行 该 AMI。这既麻烦又费时。使用计划的 Lambda 函数,您可以将作业计划保留在 AMI 之外并即时更改计划。

  • EC2 实例的灵活定位:通过从 AMI 和 EC2 实例中提取作业计划,您可以根据标签或其他条件灵活地定位 EC2 实例队列的一个子集。在此示例中,我们将目标为带有“Environment=Dev”标签的 EC2 实例。

  • 智能调度:使用调度的 Lambda 函数,您可以向抽象的作业调度程序添加自定义逻辑。

根据我的经验,这根本不算过火。我使用相同的设置取得了巨大的成功 运行 份工作(大约 50 份不同的工作),工作量很大。

我的设置略有不同

cloudwatch 计划的事件正在调用一个 lambda,后者又将消息放在 sqs 上,运行 中的应用程序在 ec2 实例上从 sqs 抓取消息并处理它们。

为了稳健性而简单地添加了 sqs。

但这在您的用例中可能有意义也可能没有意义。