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

如何通过Terraform对接API Management与已部署Function App

Terraform 配置 Azure API Management 对接已部署 Function App 方法

AzureRM Provider v3.0+ 版本已经原生支持该对接能力,和控制台点选的效果完全一致,不需要手动拼接函数密钥、后端地址,配置步骤如下:

  • 第一步:引用已部署的存量资源
    因为你的Function App和APIM已经提前部署完成,先通过Terraform数据源读取两个资源的属性,不需要重复创建:
# 读取已存在的APIM实例
data "azurerm_api_management" "apim" {
  name                = "<替换为你的APIM实例名称>"
  resource_group_name = "<替换为APIM所在资源组名称>"
}

# 读取已存在的Linux Function App,Windows版本替换为azurerm_windows_function_app数据源即可
data "azurerm_linux_function_app" "func" {
  name                = "<替换为你的Function App名称>"
  resource_group_name = "<替换为Function App所在资源组名称>"
}
  • 第二步:创建APIM后端绑定Function App
    这一步对应控制台里「添加API -> 选择Function App」的核心绑定逻辑,配置后APIM会自动同步Function的访问密钥,后续密钥轮换也会自动适配,不需要手动维护:
resource "azurerm_api_management_backend" "func_backend" {
  name                = "azure-func-backend"
  resource_group_name = data.azurerm_api_management.apim.resource_group_name
  api_management_name = data.azurerm_api_management.apim.name
  protocol            = "https"
  url                 = "https://${data.azurerm_linux_function_app.func.default_hostname}"

  # 指定后端类型为Azure Function App
  credentials {
    source = "Azure-Function-App"
  }

  # 绑定Function App资源ID,完成身份关联
  azure_function_app {
    function_app_id = data.azurerm_linux_function_app.func.id
  }
}
  • 第三步:创建APIM API与路由转发规则
    绑定后端后,按需创建API和对应操作,把请求转发到Function App的HTTP触发器即可:
resource "azurerm_api_management_api" "func_api" {
  name                = "func-http-api"
  resource_group_name = data.azurerm_api_management.apim.resource_group_name
  api_management_name = data.azurerm_api_management.apim.name
  revision            = "1"
  display_name        = "HTTP触发器接口"
  path                = "func"
  protocols           = ["https"]
}

# 示例:绑定单个HTTP触发器路由,替换method和url_template为你实际的函数配置
resource "azurerm_api_management_api_operation" "http_trigger" {
  operation_id        = "http-trigger-op"
  api_name            = azurerm_api_management_api.func_api.name
  api_management_name = data.azurerm_api_management.apim.name
  resource_group_name = data.azurerm_api_management.apim.resource_group_name
  display_name        = "HTTP触发入口"
  method              = "GET,POST"
  url_template        = "/api/HttpExample"

  # 关联之前创建的Function后端
  backend {
    backend_id = azurerm_api_management_backend.func_backend.id
  }
}

配置注意事项

  • 如果Function App开启了网络访问限制,需要把APIM实例的出站IP段加入Function App的允许规则,同区域部署建议开启VNet服务端点,走内网流量转发,避免公网暴露
  • 如果需要批量导入Function App下所有HTTP触发器,不需要手动逐个配置operation,可以在azurerm_api_management_api资源中增加import块,指定导入格式为openapi,源地址为Function App的OpenAPI文档地址(需要提前在Function App配置中开启OpenAPI导出能力)
  • 对接完成后,所有APIM的访问管控能力(IP限流、JWT校验、订阅鉴权、访问日志等)都可以正常配置,和控制台手动绑定的效果没有差异
  • 不要使用低于v3.0版本的AzureRM Provider做该配置,旧版本不支持azure_function_app配置块,需要手动在请求头中注入x-functions-key,后续函数密钥轮换时会出现服务中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:30:59