Запланированное масштабирование ECS с использованием Terraform - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь внедрить автоматическое масштабирование по расписанию с помощью Terraform с автоматическим масштабированием в AWS Служба кластеров Fargate.

Мне нужно выполнить масштабирование службы ECS в 7 часов утра по стандарту UST и масштабирование в 7 часов вечера. UST. Для масштабирования сервиса ECS я использую запланированное масштабирование в Terraform, которое работает нормально. Но меня беспокоит то, как можно масштабировать при использовании одной и той же логики c или другой логики c Здесь я попытался использовать разные логики c для увеличения и уменьшения масштаба. Когда я использую обе логики, когда применяю terraform apply, это дает ошибку, такую ​​как

Error: ConcurrentUpdateException: You already have a pending update to an Auto Scaling resource.

, я успешно автоматически масштабирую свои услуги ECS, используя приведенный ниже код в определенное время. Теперь я могу масштабировать свою службу ECS в определенное время?

resource "aws_appautoscaling_target" "my_service" {
  max_capacity       = var.my_service-max_count
  min_capacity       = var.my_service-count
  resource_id        = "service/mycluster/${aws_ecs_service.my_service.name}"
  scalable_dimension = "ecs:service:DesiredCount"
  service_namespace  = "ecs"
}
resource "aws_appautoscaling_scheduled_action" "my_service" {
  name               = "my_service"
  service_namespace  = "${aws_appautoscaling_target.my_service.service_namespace}"
  resource_id        = "${aws_appautoscaling_target.my_service.resource_id}"
  scalable_dimension = "${aws_appautoscaling_target.my_service.scalable_dimension}"
  schedule           = "cron(0 7 * * ? *)"

  scalable_target_action {
    min_capacity = 2
    max_capacity = 10
  }
}
resource "aws_appautoscaling_scheduled_action" "my_service_scale_out" {
  name               = "my_service"
  service_namespace  = "${aws_appautoscaling_target.my_service.service_namespace}"
  resource_id        = "${aws_appautoscaling_target.my_service.resource_id}"
  scalable_dimension = "${aws_appautoscaling_target.my_service.scalable_dimension}"
  schedule           = "cron(0 19 * * ? *)"

  scalable_target_action {
    min_capacity = 1
    max_capacity = 1
  }
}
...