terraform 循环遍历 ids 列表并从中生成数据块(并再次访问它)

terraform loop through ids list and generate data blocks from it (and access it again)

是否可以有一个 terraform id 列表(作为字符串),如下所示:

locals  {
  secrets = [
    "cloud.secret.id1",
    "cloud.secret.id2",
    "cloud.secret.id3",
  ]
}

并为所有这些 ID 创建动态数据,

data "google_secret_manager_secret_version" "basic" {
  for_each = toset(locals.secrets)
  secret = each.key
}

然后想办法再次访问数组中每个资源中的 属性?

使用 for_each 将导致 data.google_secret_manager_secret_version.basic 成为一个 map,其中的键来自您的 locals.secrets.

因此您可以通过引用地图中的各个元素来访问它,例如:

data.google_secret_manager_secret_version.basic["cloud.secret.id2"].secret_data

或在某些资源中使用 for_each

resourece "google_xxxx" "test" {
  for_each = toset(locals.secrets)
  secret   = data.google_secret_manager_secret_version.basic[each.key].secret_data
}