AWS CloudWatch 到 start/stop 个 EC2 实例

AWS CloudWatch to start/stop EC2 instances

只是在寻找 start/stop AWS EC2 实例的方法,以防 CPU 在另一个 EC2 实例上的利用率增加或减少。我知道 AWS 中有可用的 Auto Scaling 服务,但我有一个无法利用此服务的场景。

所以看看是否可行,或者任何人都可以帮助我。

只是详细说明问题,比如假设我在 AWS 帐户上有 2 个 EC2 实例,名称为 EC21 和 EC22。默认情况下,EC22 实例已停止。

现在我需要设置 CloudWatch 或任何其他服务来检查 load/CPU EC21 实例的利用率是否增加 70% 然后需要启动 EC22 服务器,同样如果 EC21 实例的负载减少 30% 然后停止EC22 服务器。

请指教!

是的,这对于某些类型的 EC2 实例是可行的。查看此详细指南,您可以使用它根据 AWS Cloud Watch 指标在 EC2 实例中设置触发器。

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/UsingAlarmActions.html

当您的 CloudWatch 警报被触发时,它会通知一个 SNS 主题。您可以让该 SNS 主题然后调用 Lambda 函数,然后该函数可以启动您的 EC2 实例。

  1. 创建启动 EC2 实例的 AWS Lambda 函数。
  2. 将您的 SNS 主题配置为在接收消息时调用您的 Lambda 函数。你可以在这里阅读:Invoking Lambda functions using Amazon SNS notifications
  3. 最后,确保您的 CloudWatch 警报将消息发送到 SNS 主题。

我认为你的问题可能符合我现在也在尝试解决的场景 - 我有一些功能无法用 Lambdas 解决,因为它们的生命周期很短,所以我需要一个相对 short-lived EC2完成任务的实例。

该解决方案与 Matt 描述的解决方案类似,但没有 SNS,使用 AWS 触发器启动 lambda 函数来启动实例。额外的好处是 lambda 函数本身可以验证是否真的需要启动 EC2。

How do I stop and start Amazon EC2 instances at regular intervals using AWS Lambda?

Issue

I want to reduce my Amazon Elastic Cloud Compute (Amazon EC2) usage by stopping and starting instances at predefined times or utilization thresholds. Can I configure AWS Lambda and Amazon CloudWatch to help me do that automatically?

Short Description

You can use a CloudWatch Event to trigger a Lambda function to start and stop your EC2 instances at scheduled intervals.

来源:AWS Knowledge Center