如何设置具有特定标签的EC2实例在启动后的一段时间后自动终止?

我们使用Vagrant在每个提交到我们的代码库时启动和提供实例,然后连续部署服务器运行testing。 连续部署服务器在运行testing之前启动实例,但是如果其中一个testing失败,它会停止所有的事情,而且我无法find一种可靠地终止这些实例的方法。

相反,我想要做的是启动这些实例,将它们标记为临时的,并在预设时间后自动终止它们。

  • 最明显的解决scheme是在configuration盒子时安排关机。 我正在寻找一个更好的方法来做到这一点,因为我们使用相同的Vagrantfile来configuration开发虚拟机,它们不应该自行closures。
  • AWS CloudWatch可以在某些事件发生后closures实例(例如,CPU空闲30分钟),但我找不到一种将规则应用于所有新实例的方法(更不用说具有给定标记的所有新实例)。
  • 我还看了一下AWS Auto Scaling,但是它不会让我有零个实例活动的启动configuration。

一个实例可以自行终止 ,也可以访问自己的标签 。 因此,如果实例具有特定的标记,则只需要弄清楚如何在特定时间段之后从实例中运行该实例。

您可以使用cron作业,也可以使用monit来执行终止处理,如果它检测到您的configuration项处理未运行超过5分钟。

这可以用很多方式完成,最好的和最简单的将是:

  1. 在Windows / Linux EC2实例上configurationAWS CLI工具
  2. 创build从EC2上可用的元数据中提取实例ID的脚本。
  3. 你可以创buildshell / bash脚本来执行下面提到的命令:

terminate-instances –instance-id i – ******* –region ap-southeast-1

  1. 而且,如果遇到任何错误/事件,您可以触发此脚本。

我也build议你用硬编码的AWS CLIconfiguration和EC2终止脚本创buildwindows / linux ec2实例的AMI。 并使用这个AMI来创build新的实例。