Для того, чтобы это работало, вам не хватает компонента key . Сигналы тревоги Cloudwatch
Cloudwatch предупредит автомасштабирующую группу о необходимости принять меры. Пример конфигурации:
Это создаст необходимый сигнал тревоги для уменьшения при недостаточной загрузке машины. Настройтесь на ваши потребности с помощью Vars.
resource "aws_cloudwatch_metric_alarm" "alarm-cpu-down" {
alarm_name = "ecs-down"
comparison_operator = "LessThanOrEqualToThreshold"
evaluation_periods = "${var.evaluation_periods}"
metric_name = "${var.metric_name}"
namespace = "${var.namespace}"
period = "${var.period_down}"
statistic = "${var.statistic}"
threshold = "${var.threshold_down}"
dimensions = "${map(var.dimension_name, var.dimension_value == "false" ? var.autoscaling_group_name[count.index] : var.dimension_value)}"
alarm_description = "This metric monitors CPU utilization down"
alarm_actions = ["${aws_autoscaling_policy.down-scale.*.arn}"]
}
Это создаст необходимый сигнал тревоги для увеличения, когда требуется машина (CPUReservation (= Что нужно вашим услугам) больше, чем доступно)
resource "aws_cloudwatch_metric_alarm" "alarm-cpu-up" {
alarm_name = "${var.environment}-${var.project}-${var.name}-${var.metric_name}-up${count.index}"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "${var.evaluation_periods}"
metric_name = "${var.metric_name}"
namespace = "${var.namespace}"
period = "${var.period_up}"
statistic = "${var.statistic}"
threshold = "${var.threshold_up}"
dimensions = "${map(var.dimension_name, var.dimension_value == "false" ? var.autoscaling_group_name[count.index] : var.dimension_value)}"
alarm_description = "This metric monitors CPU utilization up"
alarm_actions = ["${aws_autoscaling_policy.up-scale.*.arn}"]
}
Это действительные политики автоматического масштабирования. Это действие, которое должен выполнять будильник Cloudwatch при срабатывании будильника.
resource "aws_autoscaling_policy" "up-scale" {
count = "${var.num_asg}"
name = "${var.environment}-${var.project}-${var.name}-${var.metric_name}-up${count.index}"
autoscaling_group_name = "${var.autoscaling_group_name[count.index]}"
adjustment_type = "${var.adjustment_type}"
policy_type = "${var.policy_type}"
cooldown = "${var.cooldown_up}"
scaling_adjustment = "${var.adjustment_up}"
}
resource "aws_autoscaling_policy" "down-scale" {
count = "${var.num_asg}"
name = "${var.environment}-${var.project}-${var.name}-${var.metric_name}-down${count.index}"
autoscaling_group_name = "${var.autoscaling_group_name[count.index]}"
adjustment_type = "${var.adjustment_type}"
policy_type = "${var.policy_type}"
cooldown = "${var.cooldown_down}"
scaling_adjustment = "${var.adjustment_down}"
}