我的要求是使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"\njsonPayload.involvedObject.namespace="%s“)中使用each.value.filter值时,它没有产生任何错误,如何使用格式函数中的tfvars文件中的变量??
发布于 2021-04-21 11:36:15
我认为应该是:
filter = format(each.value.filter,var.cluster_name,var.namespace) 基本上就像你在最初的问题中一样。
https://stackoverflow.com/questions/67183400
复制相似问题