如何在Terraform模块中启用条件判断,仅在指定环境创建CloudWatch指标
仅在QAT和PROD环境创建CloudWatch指标的解决方案
要实现仅在QAT和PROD环境创建CloudWatch日志指标过滤器,只需在模块调用时根据环境变量动态设置count参数的值即可,具体操作如下:
- 修改模块调用代码
在调用aws_cloudwatch_log_metric_filter模块时,新增count参数,通过判断当前环境是否为QAT或PROD来决定是否创建资源:
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 ----------------\"}" count = contains(["QAT", "PROD"], var.environment) ? 1 : 0 } locals { base_tags = { environment = var.environment } }
- 逻辑说明
- 借助Terraform的
contains函数,检查var.environment是否属于指定的环境列表(["QAT", "PROD"]) - 若环境匹配,
count设为1,模块会创建对应的CloudWatch指标过滤器;若不匹配,count设为0,模块不会生成任何相关资源 - 模块内部的
aws_cloudwatch_log_metric_filter.log_metric资源已通过count = var.count关联了传入的count值,无需修改模块代码
- 借助Terraform的
通过上述配置,就能确保仅在QAT和PROD环境部署该CloudWatch指标过滤器,其他环境不会创建对应资源。
内容的提问来源于stack exchange,提问作者Sangeetha
相关产品推荐
相关产品推荐

