Я пытаюсь создать составную сигнализацию облачных часов, используя terraform. Но, к сожалению, мой код terraform ломается со следующей ошибкой:

Ошибка: ошибка создания составного аварийного сигнала CloudWatch (количество узлов-офис-время-составной-аварийный-DP-1474-пустыня): ValidationError: AlarmRule не должно содержать начальных или конечных пробелов или быть нулевым кодом состояния: 400, идентификатор запроса: 272b14ae- e6bd-4e65-8bb8-25372d9a5f7c

Ниже приведен мой код терраформирования:

resource "aws_cloudwatch_composite_alarm" "node_count_office_time_alarm" {
  depends_on = [aws_cloudwatch_metric_alarm.node_count, aws_cloudwatch_metric_alarm.office_time]
  alarm_description = "Composite alarm for node count & office time"
  alarm_name        = "node-count-office-time-composite-alarm-${local.postfix}"
  alarm_actions = [var.sns_topic_arn]
  ok_actions    = [var.sns_topic_arn]
alarm_rule =<<-EOF
ALARM(${aws_cloudwatch_metric_alarm.node_count.alarm_name}) AND
ALARM(${aws_cloudwatch_metric_alarm.office_time.alarm_name})
EOF
}

Я проверял много раз, и в моем alarm_rule нет начальных и конечных пробелов. Только новая строка после оператора AND. Я использую версию terraform 0.15.3. Кто-нибудь сталкивается с подобными проблемами, и как я могу решить эту проблему? Благодарность

2
Hafiz Mujadid 18 Май 2021 в 02:19

1 ответ

Лучший ответ

Не нашел решения, как заставить работать heredoc. Но я пока исправил это, используя прямое строковое выражение вместо блока heredoc. Ниже приводится строковое выражение:

alarm_rule        = "ALARM(${aws_cloudwatch_metric_alarm.node_count.alarm_name}) AND ALARM(${aws_cloudwatch_metric_alarm.office_time.alarm_name})"

Я надеюсь, что это будет полезно для других, если они столкнутся с той же проблемой. Благодарность

0
Hafiz Mujadid 18 Май 2021 в 07:52