You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Terraform元素的名称(如本地变量的键名)?

解决方案:在Terraform中引用Map键名而非值

要实现你想要的效果,不用依赖不存在的get_name_of函数,Terraform本身有两种简洁的方式来直接引用Map的键名,避免后续重命名时遗漏更新:

方法1:单独定义键名变量(推荐)

把需要复用的键名单独抽成Local变量,后续修改时只改这一处,Map的键和生成的代码会同步更新。

locals {
  # 单独定义键名,后续重命名只需改这里
  db_conn_str_key = "db_connection_string"
  environment_variables = {
    # 用变量作为Map的键
    (local.db_conn_str_key) = "🤫🤐"
  }
}

resource local_file configuration_strings {
  content = <<EOT
public class Config {
    /* ... stuff ... */
    public string ConnectionString => configProvider["${local.db_conn_str_key}"];
    /* ... things ... */
}
EOT
}

生成的代码会自动变成:

public class Config {
    /* ... stuff ... */
    public string ConnectionString => configProvider["db_connection_string"];
    /* ... things ... */
}

方法2:利用Map操作函数

如果不想单独定义键名变量,可以通过keys()函数提取Map的所有键,再通过索引或查找获取目标键名。不过这种方式依赖Map的键顺序,新增其他键时需要调整索引,适合简单场景:

locals {
    environment_variables = {
        db_connection_string = "🤫🤐"
    }
}

resource local_file configuration_strings {
  content = <<EOT
public class Config {
    /* ... stuff ... */
    public string ConnectionString => configProvider["${keys(local.environment_variables)[0]}"];
    /* ... things ... */
}
EOT
}

内容的提问来源于stack exchange,提问作者Tar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:24:25