Terraform迭代JSON文件以获取键值对

vfwfrxfs  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(66)

我有一个appconfig.json文件,其中包含Azure应用程序配置的键值详细信息。示例appConfig.json:

[
    {
        "contentType": "",
        "key": "FuncApp:Ihub:Common:D365Api:JobStatusRelativePath",
        "tags": {
        },
        "value": "/api/connector/jobstatus"
    },
    {
        "contentType": "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8",
        "key": "secretName",
        "label": null,
        "tags": {
        },
        "value": "{\"uri\":\"https://iac-key-vault-sandbox2.net/secrets/secretName\"}"
    }
]

字符串
现在,在appconfig.tf文件中,我想读取json的内容,并迭代地将值分配给azurerm_app_configuration_key. sample代码

locals {
appConfigData = jsondecode(file("appConfig.json"))
}

resource "azurerm_app_configuration_key" "appConfigKey" {
configuration_store_id = azurerm_app_configuration.appConfiguration.id
for_each = [for element in local.appConfigData: local.appConfigData]
key                    = each.value.key
label                  = each.value.label
value                  = each.value.value
content_type           = each.value.contentType
}


我想知道如何做这个任务,因为我一直没有这样做。我不断得到错误,如:

╷
│ Error: Invalid for_each argument
│ 
│   on terraform_AppConfig.tf line 17, in resource "azurerm_app_configuration_key" "appConfigKey":
│   17:   for_each = [for element in local.appConfigData: local.appConfigData]
│     ├────────────────
│     │ local.appConfigData is tuple with 4 elements
│ 
│ The given "for_each" argument value is unsuitable: the "for_each" argument must be a map, or set of strings, and you have provided a value of type tuple.

fbcarpbf

fbcarpbf1#

这应该对你有用:

locals {
  appConfigData = jsondecode(file("appConfig.json"))
}

resource "azurerm_app_configuration_key" "appConfigKey" {
  configuration_store_id = azurerm_app_configuration.appConfiguration.id
  for_each               = { for element in local.appConfigData : element.key => element }
  key                    = each.value.key
  label                  = each.value.label
  value                  = each.value.value
  content_type           = each.value.contentType
}

字符串

inb24sb2

inb24sb22#

terraform区分大小写,因此您需要将每个.value.contentType替换为each.value.contentType

相关问题