Я пытаюсь внедрить автоматическое масштабирование по расписанию с помощью 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
}
}