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

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

我们使用 Vagrant 在每次提交代码库时启动和配置实例,然后持续部署服务器针对这些实例运行测试。持续部署服务器在运行测试之前启动实例,但如果其中一个测试失败,它会暂停一切,我找不到一种可靠地终止这些实例的方法。

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

  • 最明显的解决方案是在配置盒子时安排关机。不过,我正在寻找一种更好的方法,因为我们使用相同的 Vagrantfile 来配置开发虚拟机,这些虚拟机不应自行关闭。
  • AWS CloudWatch 可以在某些事件发生后关闭实例(例如 CPU 空闲 30 分钟),但我找不到将规则应用于所有新实例的方法(更不用说具有给定标签的所有新实例了。)
  • 我也研究了 AWS Auto Scaling,但它不允许我在启动配置中拥有零个活动实例。

答案1

实例可以自行终止并且访问自己的标签。因此,如果实例具有特定标签,您只需要弄清楚如何在一定时间后从实例内部运行该操作。

你可以使用 cron 任务,或者类似监控如果检测到你的 CI 进程运行时间超过 5 分钟,则执行终止操作。

答案2

这可以通过多种方式实现,最好和最简单的方法是:

  1. 在 Windows/Linux EC2 实例上配置 AWS CLI 工具
  2. 创建从 EC2 上可用的元数据中提取实例 ID 的脚本。
  3. 您可以创建可执行以下命令的 shell/bash 脚本:

终止实例--实例 ID i-*******--区域 ap-southeast-1

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

我还建议您使用硬编码的 AWS CLI 配置和 EC2 终止脚本创建 Windows/Linux EC2 实例的 AMI。然后使用此 AMI 创建新实例。

相关内容