通过terraform管理自动缩放组

通过terraform管理自动缩放组,terraform,terraform-provider-aws,aws-auto-scaling,Terraform,Terraform Provider Aws,Aws Auto Scaling,比如说,我有一个通过terraform管理的自动缩放组。我希望这个自动缩放组能够根据我们的工作时间进行放大和缩小 用于管理ASG的TF模板: resource "aws_autoscaling_group" "foobar" { availability_zones = ["us-west-2a"] name = "terraform-test-foobar5&q

比如说,我有一个通过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%

我怎样才能做到这一点


非常感谢您的帮助。请告诉我如何度过难关。

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

  • 创建一个Lambda函数以缩小ASG(例如,使用Boto3和Python)
  • 分配具有正确权限的IAM角色
  • 使用aws\u cloudwatch\u event\u规则为“每周六晚上9点”创建Cron触发器
  • 使用先前创建的Cron触发器和Lambda函数创建一个
    aws\u cloudwatch\u event\u target
  • 重复上述步骤以放大

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

当前代码有什么问题?有错误吗?这里有没有你没有展示的更复杂的东西?现在你有一个非常静态的ASG,然后你在一个特定的时间改变它。如果您没有将自动缩放策略附加到ASG以扩展实例的数量,那么您的上述代码没有问题(尽管我假设您在一周内有10个实例,然后在周末将其扩展到9个)。如果有比这更复杂的问题,那么你应该在问题中进行解释,理想情况下展示实现这种扩展所需的最小代码。我已经用我正在使用的详细代码以及我想要实现的目标创建了一篇新文章。这是链接。请参考此帮助,我已经创建了一个新的帖子,里面有我正在使用的详细代码,以及我想要实现的目标。这是链接:stackoverflow.com/questions/67212282/manage-asg-via-terraform。请参考此文件并提供帮助。感谢您在这方面的帮助1既然AWS已经有了基于时间的自动缩放功能,为什么还需要Lambda函数来实现这一点?