Terraform 映射到字符串值
Terraform map to string value
如何使用 Terraform12 将映射变量解析为资源值中的字符串?
我有这个变量:
variable "tags" {
type = map
default = {
deployment_tool = "Terraform"
code = "123"
}
}
并想要这个:{deployment_tool=Terraform,代码=123}
我尝试了以下方法但没有成功:
resource "aws_ssm_parameter" "myparamstore" {
***
value = {
for tag in var.tags:
join(",",value, join("=",tag.key,tag.values))
}
}
您请求的输出只是格式错误的 JSON 字符串。因此,您可以使用 jsonencode
将变量转换为 json,然后删除 "
并将 :
更改为 =
:
value = replace(replace(jsonencode(var.tags), "\"", ""), ":", "=")
将“:”替换为“=”并不是一个完美的解决方案,只需考虑具有这样一个值的映射:https://example.com
- 它变成了https=//example.com
。这样不好。
所以这是我的解决方案:
environment_variables = join(",", [for key, value in var.environment_variables : "${key}=${value}"])
如何使用 Terraform12 将映射变量解析为资源值中的字符串?
我有这个变量:
variable "tags" {
type = map
default = {
deployment_tool = "Terraform"
code = "123"
}
}
并想要这个:{deployment_tool=Terraform,代码=123}
我尝试了以下方法但没有成功:
resource "aws_ssm_parameter" "myparamstore" {
***
value = {
for tag in var.tags:
join(",",value, join("=",tag.key,tag.values))
}
}
您请求的输出只是格式错误的 JSON 字符串。因此,您可以使用 jsonencode
将变量转换为 json,然后删除 "
并将 :
更改为 =
:
value = replace(replace(jsonencode(var.tags), "\"", ""), ":", "=")
将“:”替换为“=”并不是一个完美的解决方案,只需考虑具有这样一个值的映射:https://example.com
- 它变成了https=//example.com
。这样不好。
所以这是我的解决方案:
environment_variables = join(",", [for key, value in var.environment_variables : "${key}=${value}"])