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

如何将Terraform数据源结果合并到现有对象映射中

解决方案

要将OpenAPI规范的响应内容合并到原元数据映射中,你可以利用Terraform的merge函数和for表达式直接关联原变量与HTTP数据源的结果,生成包含完整信息的新映射。

1. 合并元数据与OpenAPI规范内容

修改本地变量定义,创建一个包含原元数据和JSON响应体的新映射:

locals {
  api_definitions_with_spec = {
    for api_key, api_meta in var.open_api_definitions : api_key => merge(
      api_meta,
      {
        json_body = data.http.url_responses[api_key].response_body
      }
    )
  }
}
  • 由于data.http.url_responses的键与var.open_api_definitions完全一致(for_each基于原变量),可以通过api_key直接索引到对应API的HTTP响应。
  • merge函数会将原元数据对象与新增的json_body字段合并,生成你需要的结构。

2. 验证合并结果(可选)

通过output块确认合并后的结构是否符合预期:

output "merged_api_definitions" {
  value = local.api_definitions_with_spec
}

3. 生成Azure APIM API

基于合并后的映射,批量创建Azure APIM API资源:

resource "azurerm_api_management_api" "apis" {
  for_each = local.api_definitions_with_spec

  name                = each.value.api_name
  api_management_name = "<你的APIM实例名称>"
  resource_group_name = "<你的资源组名称>"
  revision            = "1"
  display_name        = each.value.api_name
  service_url         = each.value.service_url
  path                = each.value.api_url_suffix

  import {
    content_format = "openapi+json"
    content_value  = each.value.json_body
  }
}
  • 若你的OpenAPI规范是YAML格式,将content_format改为"openapi+yaml"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:35:09