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

Terraform:如何基于for_each生成应用名与Key Vault ID的映射

如何基于Terraform foreach创建的Azure Key Vault生成应用名到ID的映射

问题概述

通过toset(var.app_names)使用foreach批量创建Azure Key Vault资源后,需要生成一个以应用名为键、对应Key Vault ID为值的映射,但编写output块时无法获取每个Key Vault对应的应用名。

解决方案

当使用foreach(迭代对象为集合/列表)创建Terraform资源时,生成的资源对象本质是一个映射(Map):其中键就是foreach迭代的每个元素(即你的app_name),值是对应的Key Vault资源实例。直接遍历这个映射的键值对即可生成目标输出结构。

正确的Output代码

output "application_app_name_by_key_vault_id_map" {
  value = { for app_name, akv in azurerm_key_vault.application_key_vault : app_name => akv.id }
}

代码说明

  • azurerm_key_vault.application_key_vault是一个映射,键为var.app_names中的每个应用名(如"app1"、"app2"),值为对应Key Vault的资源实例。
  • for app_name, akv in ...遍历该映射,将每个键(应用名)作为新映射的键,对应资源的id作为值,最终生成符合期望的结构。

执行terraform output后,将得到如下结果:

{
  "app1" = "id1"
  "app2" = "id2"
  "app3" = "id3"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:31:01