You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中配置多行字符串,实现filter字段换行书写

可以通过Terraform HCL原生的多行字符串语法实现filter字段的多行书写,不会影响过滤规则的实际运行效果,最推荐使用heredoc(行内文档)语法,书写更简洁无需转义引号:

resource "google_logging_metric" "my_metric" {
  description = "Check for logs of some cron job\t"
  name        = "mycj-logs"
  # <<-EOF 会自动剔除每行开头的缩进制表符,最终生成的字符串格式更整洁
  filter      = <<-EOF
    resource.type="k8s_container"
    AND resource.labels.cluster_name="${local.k8s_name}"
    AND resource.labels.namespace_name="workable"
    AND resource.labels.container_name="mycontainer-cronjob"
    AND resource.labels.pod_name:"my-pod"
  EOF
  # Terraform v0.12+版本无需用${}包裹顶层插值表达式,直接引用即可
  project     = data.terraform_remote_state.gke_k8s_env.project_id 

  metric_descriptor {
    metric_kind = "DELTA"
    value_type  = "INT64"
  }
}

其他可选方案:

  • 如果不需要保留换行,也可以用字符串拼接实现:
filter = "resource.type=\"k8s_container\" " +
  "AND resource.labels.cluster_name=\"${local.k8s_name}\" " +
  "AND resource.labels.namespace_name=\"workable\" " +
  "AND resource.labels.container_name=\"mycontainer-cronjob\" " +
  "AND resource.labels.pod_name:\"my-pod\""

注意事项:

  • Google Cloud Logging的过滤表达式本身会忽略空白字符(空格、换行、制表符),所以多行书写产生的换行不会影响过滤规则的正确性。
  • 使用heredoc语法时,结束标记EOF必须顶格书写,前面不能有任何缩进。

内容的提问来源于stack exchange,提问作者user16958659

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:48:04