terraform - 如何在 google_logging_metric 资源中使用格式函数
问题描述
我的要求是可变 cluster_name 和命名空间,并在 google_logging_metric 资源中使用
我的 tfvars 文件:
log_based_metrics = [
{
name = "name1",
filter = "resource.type=\"k8s_pod\"\njsonPayload.kind=\"Event\"\nresource.labels.cluster_name=\"%s\"\njsonPayload.message:\"something\"\njsonPayload.involvedObject.namespace=\"%s\"", << here I used %s for cluster name and namespace within filter>>
metric_kind = "DELTA",
value_type = "INT64"
}
]
我的资源文件:
resource "google_logging_metric" "logging_metric" {
for_each = { for inst in var.log_based_metrics : inst.name => inst }
name = each.value.name
filter = "${format("${each.value.filter}",var.cluster_name,var.namespace)}"
*<< here when I am using each.value.filter inside format ,it is giving error , instead if I am replacing it with actual value from tfvars file it is not giving any error >>*
metric_descriptor {
metric_kind = each.value.metric_kind
value_type = each.value.value_type
dynamic "labels" {
for_each = each.value.labels
content {
key = labels.value["label_key"]
value_type = labels.value["label_value_type"]
description = labels.value["label_description"]
}
}
Error: Invalid function argument
on log_based_metrics.tf line 4, in resource "google_logging_metric" "logging_metric":
4: filter = "${format("${each.value.filter}",var.cluster_name,var.namespace)}"
|----------------
| var.cluster_name is "cluster-5"
Invalid value for "args" parameter: too many arguments; no verbs in format
string.
当我在 "resource.type="k8s_pod"\njsonPayload.kind="Event"\nresource.labels.cluster_name="%s"\njsonPayload.message:"something"\ 的格式中使用each.value.filter的值时njsonPayload.involvedObject.namespace="%s" 它没有给出任何错误 如何在格式函数中使用 tfvars 文件中的变量?
解决方案
我认为应该是:
filter = format(each.value.filter,var.cluster_name,var.namespace)
所以基本上就像你在原来的问题中所说的那样。
推荐阅读
- rxjs - 使用 2 个 observables 和 1 个输出 observable
- db2 - 在 DB2 中创建数据库时出现不一致的错误:SQL0440N
- javascript - 基于redux状态控制反应组件的正确方法是什么
- css - filter:invert(1) 在速记背景图像 css 中的位置
- javascript - Shopify 元字段 AJAX 调用以获取对象数据作为变量
- django - 通过 django admin 上传图像文件时输入错误
- python-3.x - 为什么不会在此字符串中创建新行?是不是太长了?
- css - CSS 缓进出规模
- javascript - 在我的应用程序中播放本地音频文件而不使用输入类型文件
- vue.js - 我想使用来自两个组件的相同路由如何使用 vue 路由器执行此操作