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

无法为azurerm_api_management_api使用Terraform for_each块求助

问题根源

你的Terraform配置无法正常工作,核心原因是变量中content_value存储的是file()函数的字符串字面量,而非实际读取的OpenAPI文件内容。Terraform不会自动解析字符串中的函数调用,导致API Management服务接收到的是无效的配置文本。

修复方案

推荐采用类型安全的方式重构配置,确保正确加载OpenAPI文件:

1. 优化变量定义

将content_value改为存储文件路径,并明确变量类型,避免潜在配置错误:

variable "apimanagement" {
  type = map(object({
    name           = string
    revision       = string
    display_name   = string
    path           = string
    protocols      = list(string)
    content_format = string
    content_path   = string # 仅存储文件路径
  }))
  default = {
    api_management_1 = {
      name           = "flight-health"
      revision       = "1"
      display_name   = "flt-health"
      path           = "extranet/v1"
      protocols      = ["https"]
      content_format = "openapi"
      content_path   = "${path.module}/openapione.yaml"
    }
    api_management_2 = {
      name           = "availabilities"
      revision       = "2"
      display_name   = "avail"
      path           = "extranet/v1"
      protocols      = ["http"]
      content_format = "openapi"
      content_path   = "${path.module}/openapitwo.yaml"
    }
  }
}

2. 更新资源配置

在资源块中调用file()函数,读取路径对应的OpenAPI文件内容:

resource "azurerm_api_management_api" "sharatapimgmntapi" {
  for_each = var.apimanagement

  name                = each.value.name
  resource_group_name = azurerm_resource_group.windows-function-rg.name
  api_management_name = azurerm_api_management.apim.name
  revision            = each.value.revision
  display_name        = each.value.display_name
  path                = each.value.path
  protocols           = each.value.protocols
       
  import {
    content_format = each.value.content_format
    content_value  = file(each.value.content_path) # 实际读取文件内容
  }
}
验证步骤

执行terraform plan,检查输出中content_value字段是否显示为OpenAPI文件的实际YAML内容,而非file(...)字符串。若内容正确,说明配置修复完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:25