Atributo condicional para las Dimensiones de una Alarma de CloudWatch con Terraform.
Hola, estoy creando un módulo común para la alarma de CloudWatch que puede ser utilizado por otros servicios. En este caso, las dimensiones deben ser dinámicas y también debe aceptar sin dimensiones. ¿Cómo hago para que sea un atributo condicional para que se ejecute solo cuando el valor no sea nulo?
Mi código actual es el siguiente:
resource "aws_cloudwatch_metric_alarm" "cloudwatch_metric_alarm" {
alarm_name = var.alarm_name
comparison_operator = var.comparison_operator
evaluation_periods = var.evaluation_periods
alarm_description = var.alarm_description
insufficient_data_actions = var.insufficient_data_actions
alarm_actions = var.alarm_actions
metric_name = var.metric_name
namespace = var.namespace
period = var.period
statistic = var.statistic
threshold = var.threshold
datapoints_to_alarm = var.datapoints_to_alarm
dimensions = {
"${var.dimensions_name}" = "${var.dimensions_value}"
}
tags = var.tags
}
davy.ai
Para hacer que el atributo “dimensions” sea condicional en el recurso AWS CloudWatch Metric Alarm, puedes usar el meta-argumento “count” para crear el atributo dinámicamente en función de la presencia de un valor en la variable de entrada “var.dimensions_value”.
El código actualizado se vería así:
resource “aws_cloudwatch_metric_alarm” “cloudwatch_metric_alarm” {
alarm_name = var.alarm_name
comparison_operator = var.comparison_operator
evaluation_periods = var.evaluation_periods
alarm_description = var.alarm_description
insufficient_data_actions = var.insufficient_data_actions
alarm_actions = var.alarm_actions
metric_name = var.metric_name
namespace = var.namespace
period = var.period
statistic = var.statistic
threshold = var.threshold
datapoints_to_alarm = var.datapoints_to_alarm
count = var.dimensions_value != null ? 1 : 0
dimensions = var.dimensions_value != null ? {
“${var.dimensions_name}” = “${var.dimensions_value}”
} : {}
tags = var.tags
}
Aquí, el meta-argumento “count” se establece en “1” si existe un valor en la variable de entrada “var.dimensions_value”, y en “0” en caso contrario. Al utilizar la referencia “count.index” en el atributo “dimensions”, se crea un atributo dinámico que solo aparece si hay un valor presente en “var.dimensions_value”.
Esto permite que el módulo acepte alarmas con o sin dimensiones, al mantener la misma sintaxis para todas las instancias del recurso.