通过 Terraform 管理 Auto Scaling 组

Managing Auto Scaling Group via terraform

假设我有一个通过 Terraform 管理的自动缩放组。我希望自动缩放组根据我们的工作时间扩大和缩小规模。

用于管理 ASG 的 TF 模板:

resource "aws_autoscaling_group" "foobar" {
  availability_zones        = ["us-west-2a"]
  name                      = "terraform-test-foobar5"
  max_size                  = 1
  min_size                  = 1
  health_check_grace_period = 300
  health_check_type         = "ELB"
  force_delete              = true
  termination_policies      = ["OldestInstance"]
}

resource "aws_autoscaling_schedule" "foobar" {
  scheduled_action_name  = "foobar"
  min_size               = 0
  max_size               = 1
  desired_capacity       = 0
  start_time             = "2016-12-11T18:00:00Z"
  end_time               = "2016-12-12T06:00:00Z"
  autoscaling_group_name = aws_autoscaling_group.foobar.name
}

正如我们在这里看到的,我必须为操作设置特定的日期和时间。

我想要的是:我想在星期六晚上 9 点缩小我当前容量的 10%,然后在星期一早上 6 点再次扩大 10%。

我怎样才能做到这一点。

非常感谢任何帮助。请告诉我如何解决这个问题。

解决方案并不简单,但可行。所需的步骤是:

  • 创建一个缩小 ASG 的 Lambda 函数(例如使用 Boto3 和 Python)
  • 分配具有正确权限的 IAM 角色
  • 使用 aws_cloudwatch_event_rule
  • 为“每周六晚上 9 点”创建一个 Cron 触发器
  • 使用之前创建的 Cron 触发器和 Lambda 函数创建 aws_cloudwatch_event_target
  • 重复放大

This module 可能会满足您的需求,您只需编写 Lambda 代码并使用该模块按计划触发它。