当 CPU 低于特定水平时停止(而不是终止)EC2 实例

Stop (not terminate) an EC2 Instance when CPU drops below certain level

我已经 运行.. 从 Ubuntu AMI 创建了两台服务器(上面有我的应用程序)。 在使用自动缩放时,它使用 AMI 启动新实例。

我可以使用自动缩放来仅停止实例(而不是终止;这样我以后启动服务器时就不需要 AMI 了)吗?每当 CPU 增加超过 x% !

时,稍后启动实例(我已经停止的旧实例)

如果不自动缩放;我也可以接受任何其他解决方案。我可以使用 Cloudwatch 停止实例,但如何重新启动它?

目前无法使用 AutoScaling 停止实例。 AutoScaling 只能根据 CloudWatch 警报等启动新实例和终止实例

要执行您想要的操作,您需要停止使用 AutoScaling 并使用另一个 "worker" EC2 实例来替换 AutoScaling。该 "worker" 实例需要 运行 24/7,它将监控您其他 EC2 实例的 CPU 并适当地启动和停止它们。

我认为您可以通过以下方式做到这一点:

  • CloudWatch 指标:记录 CPU 使用情况
  • CloudWatch 警报:CPU 指标达到 above/below 时发出警报 一些阈值
  • SNS主题:触发CloudWatch警报时发送通知
  • Lambda 函数:由 SNS 调用到 stop/start 相关的 EC2 实例

查看Scaling ECS article which is similar and Invoking Lambda from SNS

AutoScaling 做不到。您可以禁用 AutoScaling 并使用 CloudWatch trigger some Lambda 功能来 start/stop 您的实例。