我们使用 Vagrant 在每次提交代码库时启动和配置实例,然后持续部署服务器针对这些实例运行测试。持续部署服务器在运行测试之前启动实例,但如果其中一个测试失败,它会暂停一切,我找不到一种可靠地终止这些实例的方法。
因此,我想要做的是启动实例,将它们标记为临时,并让它们在预设时间后自动终止。
- 最明显的解决方案是在配置盒子时安排关机。不过,我正在寻找一种更好的方法,因为我们使用相同的 Vagrantfile 来配置开发虚拟机,这些虚拟机不应自行关闭。
- AWS CloudWatch 可以在某些事件发生后关闭实例(例如 CPU 空闲 30 分钟),但我找不到将规则应用于所有新实例的方法(更不用说具有给定标签的所有新实例了。)
- 我也研究了 AWS Auto Scaling,但它不允许我在启动配置中拥有零个活动实例。
答案1
答案2
这可以通过多种方式实现,最好和最简单的方法是:
- 在 Windows/Linux EC2 实例上配置 AWS CLI 工具
- 创建从 EC2 上可用的元数据中提取实例 ID 的脚本。
- 您可以创建可执行以下命令的 shell/bash 脚本:
终止实例--实例 ID i-*******--区域 ap-southeast-1
- 如果遇到任何错误/事件,您可以触发此脚本。
我还建议您使用硬编码的 AWS CLI 配置和 EC2 终止脚本创建 Windows/Linux EC2 实例的 AMI。然后使用此 AMI 创建新实例。