【问题标题】:Transform a list to a map with Terraform 0.11使用 Terraform 0.11 将列表转换为地图
【发布时间】:2019-06-17 18:44:07
【问题描述】:

使用 Terraform 0.11.x(我不关心 0.12),假设我有一个列表键,我想将其转换为地图,使用类似:

locals {
  account = "287985351234"
  names   = ["alpha", "beta", "gamma"]
  region  = "eu-west-1"
}

data "null_data_source" "kms" {
  count = "${length(local.names)}"

  inputs = {
    key   = "${upper(local.names[count.index])}"
    value = "${format("arn:aws:kms:%s:%s:key/%s",local.region, local.account, local.names[count.index])}"
  }
}

output "debug" {
  value = "${data.null_data_source.kms.*.outputs}"
}

输出是地图列表:

data.null_data_source.kms[2]: Refreshing state...
data.null_data_source.kms[0]: Refreshing state...
data.null_data_source.kms[1]: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

debug = [
    {
        key = ALPHA,
        value = arn:aws:kms:eu-west-1:287985351234:key/alpha
    },
    {
        key = BETA,
        value = arn:aws:kms:eu-west-1:287985351234:key/beta
    },
    {
        key = GAMMA,
        value = arn:aws:kms:eu-west-1:287985351234:key/gamma
    }
]

有没有办法让它一个映射到所有像这样的键?:

{
    ALPHA = "arn:aws:kms:eu-west-1:287985351234:key/alpha",
    BETA = "arn:aws:kms:eu-west-1:287985351234:key/beta",
    GAMMA = "arn:aws:kms:eu-west-1:287985351234:key/gamma"
}

【问题讨论】:

    标签: terraform


    【解决方案1】:

    SweetOps Slack 频道上一个叫 Loren 的人给了我解决方案。我把它留在这里给以后来的人:

    locals {
      its_a_map = "${zipmap(data.null_data_source.kms.*.outputs.key, data.null_data_source.kms.*.outputs.value)}"
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 2020-11-17
      • 2020-11-21
      • 2021-04-09
      • 2021-04-20
      • 1970-01-01
      • 2018-04-08
      • 2020-07-21
      • 1970-01-01
      相关资源
      最近更新 更多