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

如何获取Terraform资源属性的键名?

在Terraform中如何通过反射获取Secret的键名?

Terraform没有传统编程语言里的“反射”机制,但可以通过操作Secret的data映射本身来获取键名,而非针对单个键的值。

你之前的代码报错,是因为kubernetes_secret.my_secret.data.secret是单个敏感值,并非map或object类型——keys()函数要求输入必须是map/object,所以会抛出参数错误。

正确的做法是直接对data这个map对象调用keys():

  • 如果你的Secret里只有一个键,直接取第一个元素即可拿到键名:
extraEnvs = [{
    name = "BLAH_BLAH"
    valueFrom= {
      secretKeyRef= {
        name = kubernetes_secret.my_secret.id
        key = keys(kubernetes_secret.my_secret.data)[0]
      }
    }
  }]
  • 如果Secret包含多个键,你可以根据需要筛选特定键,比如用contains()判断后取值,或者直接指定索引。

另外你提到的“通过映射变量创建Secret并复用变量”确实是更稳妥的方案——比如提前在变量里定义键名,后续直接引用变量,避免依赖资源的动态属性。但如果必须从已存在的Secret资源中提取键名,上述keys()的用法完全可行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:47:07