首页 > 解决方案 > AWS Cloudwatch 调度

问题描述

我目前有一个 lambda 函数,它可以停止我的 EC2 实例(4 个虚拟服务器),并使用 Cloudwatch 创建了一个时间表来启动这个 lambda 函数,以在周一至周五下午 6:30 停止我的服务器。那部分工作得很好。

但是,如果我在例如下午 3 点在我的服务器上运行特定于应用程序的分析批处理,有时运行分析的应用程序需要 4-5 小时才能完成,这意味着 CloudWatch 基本上会在下午 6:30 停止服务器分析过程的中间。有没有办法构建一个异常来检查服务器上的 CPU 利用率是否大于 10%,以延迟 cloudwatch 事件?

如果 CPU 利用率指标 <10%,我尝试在 CloudWatch 中创建一个警报事件来关闭特定的 EC2 服务器,但如果没有被利用,这基本上会在工作日将它们关闭,这不是我需要的。

最终,我希望能够编写一个脚本(lambda 函数)来检查周一到周五下午 6:30 的 CPU 利用率是否低于 10%,如果是,则停止服务器。如果没有,则每小时检查一次。在这一点上,我会喜欢任何和所有的建议。预先感谢您的帮助!

标签: amazon-web-servicesaws-lambdaamazon-cloudwatch

解决方案


我相信您可以使用AWS Step 函数来定义它 您可以创建一个工作流:

  • 每小时运行一次(参见文档
  • 每小时检查一天中的时间和服务器上的 CPU 负载(使用2 个 lambda 函数 Tasks
  • 如果时间在下午 630 点到午夜之间,从周一到周五,请检查 CPU -请参阅结果路径文档
  • 如果 CPU <10%,则关闭实例。否则什么都不做

推荐阅读