【问题标题】:Terraform map to string valueTerraform 映射到字符串值
【发布时间】:2021-01-15 22:56:13
【问题描述】:

如何使用 Terraform12 将地图变量解析为资源值中的字符串?

我有这个变量:

variable "tags" {
  type                = map
  default = {
    deployment_tool   = "Terraform"
    code              = "123"
  }
}

想要这个:{deployment_tool=Terraform, code=123}

我尝试了以下方法但没有成功:

resource "aws_ssm_parameter" "myparamstore" {
  ***
  value = {
    for tag in var.tags:
      join(",",value, join("=",tag.key,tag.values))
  }
}

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案1】:

    用“=”替换“:”并不是一个完美的解决方案,只需考虑一个具有这样一个值的映射:https://example.com - 它变成了https=//example.com。这不好。
    所以这是我的解决方案:

    environment_variables = join(",", [for key, value in var.environment_variables : "${key}=${value}"])
    

    【讨论】:

      【解决方案2】:

      您请求的输出只是格式错误的 JSON 字符串。因此,您可以使用jsonencode 将变量转换为json,然后删除" 并将: 更改为=

      value = replace(replace(jsonencode(var.tags), "\"", ""), ":", "=")
      

      【讨论】:

      • 重新投票以注意到 Map 没有功能似乎很奇怪 --> 当 ListList --> Map 作为 join 的中介存在。可能是 Hacktoberfest 的一个有趣的 PR。
      猜你喜欢
      • 2012-08-21
      • 2018-07-09
      • 2021-11-09
      • 2019-06-09
      • 2012-01-23
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多