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

Terraform迭代创建azurerm_key_vault_secret时如何用keyname替换数字索引

答案

你只需调整azurerm_key_vault_secret资源中for_each的遍历逻辑,将映射键从数组下标替换为元素的keyname字段即可,修改后的核心代码如下:

resource "azurerm_key_vault_secret" "injections" {
    # 仅修改此行,将原来的下标idx替换为v.keyname作为映射键
    for_each = { for v in local.helper_list: v.keyname => v }
    name = each.value.name
    value = each.value.value
    key_vault_id = azurerm_key_vault.example.id
}

原理说明

原来的写法{ for idx, v in local.helper_list: idx => v }是用数组的数字下标作为映射的键,因此Terraform生成的资源索引就是"0"、"1"这类数字。修改后直接取每个元素的keyname作为映射键,Terraform自然就会用该值作为资源实例的索引。

注意:请确保local.helper_list中所有元素的keyname值唯一,否则Terraform会抛出映射键冲突的错误,当前你的示例场景符合唯一性要求,可直接使用。
修改后执行terraform plan,输出的资源索引就会变为你期望的格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:30:03