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

如何通过Terraform为Azure API Management的API操作指定后端API

解决Azure APIM单个API操作关联后端URL的Terraform实现方法

azurerm_api_management_api_operation资源本身没有直接配置后端URL的字段,需要通过操作级别的策略来实现,以下是两种常用方案:

方案一:直接在操作策略中指定后端URL

无需预先创建Backend资源,直接在操作的策略里定义专属后端地址:

resource "azurerm_api_management_api_operation" "example" {
  name                = "example-operation"
  api_name            = azurerm_api_management_api.example.name
  api_management_name = azurerm_api_management.example.name
  resource_group_name = azurerm_resource_group.example.name
  method              = "GET"
  url_template        = "/example"
  display_name        = "Example Operation"
}

# 为该操作绑定后端策略
resource "azurerm_api_management_api_operation_policy" "example" {
  api_name            = azurerm_api_management_api.example.name
  api_management_name = azurerm_api_management.example.name
  resource_group_name = azurerm_resource_group.example.name
  operation_id        = azurerm_api_management_api_operation.example.name

  policy = <<POLICY
<policies>
  <inbound>
    <base />
    <!-- 直接指定当前操作的后端URL -->
    <set-backend-service base-url="https://your-specific-backend-url.com" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>
POLICY
}

方案二:关联预先创建的Backend资源

如果你已经通过azurerm_api_management_backend创建了后端资源,可以在操作策略中直接引用该后端的名称:

# 预先创建的全局后端资源
resource "azurerm_api_management_backend" "example" {
  name                = "example-backend"
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name
  protocol            = "http"
  url                 = "https://backend"
}

resource "azurerm_api_management_api_operation" "example" {
  name                = "example-operation"
  api_name            = azurerm_api_management_api.example.name
  api_management_name = azurerm_api_management.example.name
  resource_group_name = azurerm_resource_group.example.name
  method              = "GET"
  url_template        = "/example"
  display_name        = "Example Operation"
}

# 将预先创建的后端关联到操作
resource "azurerm_api_management_api_operation_policy" "example" {
  api_name            = azurerm_api_management_api.example.name
  api_management_name = azurerm_api_management_api_management.example.name
  resource_group_name = azurerm_resource_group.example.name
  operation_id        = azurerm_api_management_api_operation.example.name

  policy = <<POLICY
<policies>
  <inbound>
    <base />
    <!-- 引用已创建的后端资源名称 -->
    <set-backend-service backend-id="${azurerm_api_management_backend.example.name}" />
  </inbound>
  <backend>
    <base />
  </backend>
  <outbound>
    <base />
  </outbound>
  <on-error>
    <base />
  </on-error>
</policies>
POLICY
}

补充说明

  • 这两种方式对应你截图中Azure门户里操作的策略配置页,通过<set-backend-service>策略指令实现单个操作的后端绑定。
  • 如果给整个API设置了默认后端(通过azurerm_api_management_api_policy),单个操作的策略会优先覆盖全局配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:15:13