如何使用 Terraform 配置 AWS 自动缩放 group/launch 配置以仅 运行 一个 EC2 实例上的 cron 作业?

How can I configure an AWS autoscaling group/launch configuration with Terraform to only run a cron job on one EC2 instance?

我正在为 AWS 系统构建 Terraform 配置,该系统只需要自动缩放组中的一个实例来 运行 按每日节奏执行 cronjob。

是否可以通过 AWS 提供商在 HCL 中表达这一点?社区的 "best practice" 建议是什么?我不想使用批处理计算,因为这需要 ECS。

非常感谢。

如果您想在一个实例上使用 cron,您可以通过将 max_size、min_size 和 desired_capacity 全部设置为 1 来创建单实例自动缩放,如下所示:

resource "aws_autoscaling_group" "foo" {
  name             = "foo"
  max_size         = 1
  min_size         = 1
  desired_capacity = 1
# Other params...
}

如果您想替换实例,可以将其状态设置为 'Unhealthy',ASG 将替换它。如果您同时需要针对 运行 多个代码副本的更多保护,则需要在应用程序级别做一些更复杂的事情(例如获取分布式锁)。