我们希望在具有 16 个 vCPU 的 AWS EC2 Windows Server 实例上运行耗时的 C++ 构建。由于成本高昂,我们希望此实例 - 启动 - 运行构建 - 当构建完成(或由于错误而停止)时,停止实例
我考虑过为此目的使用警报,但是构建过程有些部分 CPU 使用率不高(例如,上传文件时使用网络但几乎不使用 CPU),并且警报无法处理 CPU 和网络流量的检查(缺少 AND 运算符)。
还有其他机制可用于空闲检测吗?在某种程度上,我们可以更改构建脚本以向 AWS 发送消息(例如网络消息)。
答案1
您的做法是错误的——正如您所发现的,根据资源利用率执行这样的关机任务并不是最可靠的解决方案。
相反,使用计划的 Lambda 作业(或某个服务器上运行的 cron 脚本)来检测何时需要构建,然后启动服务器。然后,对于关闭,为实例提供具有自行停止权限的实例角色,作为构建过程的最后一步,实例可以使用 AWS API 自行关闭。