es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
}
Tags:  , , ,

Answer

  1. Avatar for 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.

Comments are closed.