这是 AWS Auto Scaling 组的正确情况吗?

Is this the correct situation for AWS auto scaling group?

我一直在关注有关 AWS 自动缩放组的教程,但其中 none 提到了人们可能需要使用它的所有原因。所以我想知道我的需求是否适合它,或者我是否需要其他东西。

我想要 运行 X 次并行测试,每个测试都使用 testNg 在不同的 ec2 实例上进行。能否使用 Auto Scaling 组在 X 次测试之前动态创建这些实例 运行,然后在完成后删除它们?

我不太了解 testng 或它可能具有的任何潜在 AWS 集成,但我不确定 Auto Scaling 是这里的最佳选择。虽然它允许您启动一组实例(将 minimum/maximum 容量设置为 N),但您必须处理健康检查和其他 ASG-specific 功能。

我可能会使用 EC2 Fleet。除了将一组 EC2 实例作为一个单元来管理之外,它还有一些有用的成本选项,允许您在 on-demand 和现货以及您愿意支付的最高价格中进行选择。

另一个可能的选择是 AWS Batch

如果这些都不符合要求,那么您可以使用 RunInstances API 简单地启动 N 个实例。使用允许它获取其测试脚本的用户数据脚本启动每个脚本,运行 脚本,然后是 shutdown/terminate.

对于您的情况,由于您知道测试所需的 EC2 实例数量,因此更适合:

  • 启动 EC2 实例
  • 启动测试
  • 完成测试后终止 EC2 实例

此外,由于测试不是 business-critical activity,您可以通过将 EC2 实例作为 Spot 实例启动来节省资金,这可以节省高达 90% 的成本(通常为 50- 70%)。它们的启动时间稍长,如果需要容量,实例可能会被 AWS“收回”。您可以通过在不同实例类型的多个可用区 and/or 中启动实例来减少实例“收回”的可能性。