英文:
How to enable IF condition on terrafrom modules
问题
locals {
  base_tags = {
    环境 = var.environment
  }
}
resource "aws_cloudwatch_log_metric_filter" "log_metric" {
  count          = var.count
  name           = "Metric"
  pattern        = var.pattern
  log_group_name = var.log_group_name
    
  metric_transformation {
    name      = "name"
    namespace = "namespace"
    value     = "1"
    default_value = "0"
  }
}
英文:
I need to create TF CloudWatch Metrices only of the env is QAT and PROD. Currently using TF modules to create those in all env.
module "aws_cloudwatch_log_metric_filter" {
  source = "https://github.com/modules.git//aws-cloudwatch-log-metric-filter"
  log_group_name = "/aws/lambda/${var.lambda_name}"
  pattern = "{$.message = \"---------------- Message ----------------\"}"
}
locals {
  base_tags = {
    environment      = var.environment
  }
}
Main resource where I am calling module.
resource "aws_cloudwatch_log_metric_filter" "log_metric" {
  count          = var.count
  name           = "Metric"
  pattern        = var.pattern
  log_group_name = var.log_group_name
    
  metric_transformation {
    name      = "name"
    namespace = "namespace"
      value     = "1"
      default_value = "0"
  }
}
答案1
得分: 1
以下是翻译好的部分:
A simple but good solution:
    locals {
      cw_env = ["QUA", "PROD"]
    }
    resource "aws_cloudwatch_log_metric_filter" "log_metric" {
      count          = contains(local.cw_env, var.env) ? 1 : 0
      name           = "Metric";
      pattern        = var.pattern
      log_group_name = var.log_group_name
      metric_transformation {
        name      = "name";
        namespace = "namespace";
        value     = "1";
        default_value = "0";
      }
    }
Note you can also use it at the above level:
    module "aws_cloudwatch_log_metric_filter" {
      source = "https://github.com/modules.git//aws-cloudwatch-log-metric-filter"
      count          = contains(local.cw_env, local.base_tags.environment) ? 1 : 0
      log_group_name = "/aws/lambda/${var.lambda_name}";
      pattern = "{$.message = \"---------------- Message ----------------\"}";
    }
    locals {
      base_tags = {
        environment      = var.environment
      }
      cw_env = ["QUA", "PROD"]
    }
希望这对您有所帮助。
英文:
A simple but good solution :
locals {
  cw_env = ["QUA", "PROD"]
}
resource "aws_cloudwatch_log_metric_filter" "log_metric" {
  count          = contains(local.cw_env, var.env) ? 1 : 0
  name           = "Metric"
  pattern        = var.pattern
  log_group_name = var.log_group_name
  metric_transformation {
    name      = "name"
    namespace = "namespace"
    value     = "1"
    default_value = "0"
  }
}
Note you can also use it at the above level :
module "aws_cloudwatch_log_metric_filter" {
  source = "https://github.com/modules.git//aws-cloudwatch-log-metric-filter"
  count          = contains(local.cw_env, local.base_tags.environment) ? 1 : 0
  log_group_name = "/aws/lambda/${var.lambda_name}"
  pattern = "{$.message = \"---------------- Message ----------------\"}"
}
locals {
  base_tags = {
    environment      = var.environment
  }
  cw_env = ["QUA", "PROD"]
}
答案2
得分: 1
你可以在模块中执行以下操作:
resource "aws_cloudwatch_log_metric_filter" "log_metric" {
  count          = var.environment == "QAT" || var.environment == "PROD" ? 1 : 0
  name           = "Metric"
  pattern        = var.pattern
  log_group_name = "${var.environment}-${var.log_group_name}"
  metric_transformation {
    name      = "name"
    namespace = "namespace"
    value     = "1"
    default_value = "0"
  }
}
log_group_name = "${var.environment}-${var.log_group_name}" 确保您不会遇到相同的日志组名称问题。
英文:
You could do this in the module:
resource "aws_cloudwatch_log_metric_filter" "log_metric" {
  count          = var.environment == "QAT" || var.environment == "PROD" ? 1 : 0
  name           = "Metric"
  pattern        = var.pattern
  log_group_name = "${var.environment}-${var.log_group_name}"
  metric_transformation {
    name      = "name"
    namespace = "namespace"
    value     = "1"
    default_value = "0"
  }
}
The log_group_name = "${var.environment}-${var.log_group_name}" will ensure you don't get issues with the same log group name.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论