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

如何用Azure PowerShell获取并通过Terraform配置Azure APIM的Definitions

Azure APIM API Definitions 处理方案(PowerShell 获取 + Terraform 配置)

一、用Azure PowerShell获取APIM API Definitions

  • 先安装并导入Az.ApiManagement模块:
    Install-Module -Name Az.ApiManagement -Force -AllowClobber
    Import-Module Az.ApiManagement
    
  • 登录Azure账号并切换到目标订阅:
    Connect-AzAccount
    Set-AzContext -SubscriptionId "你的订阅ID"
    
  • 获取目标APIM实例下的所有API,找到需要导出定义的API的ApiId:
    $apis = Get-AzApiManagementApi -ResourceGroupName "你的资源组名" -ServiceName "你的APIM服务名"
    # 查看所有API的Id和名称
    $apis | Select-Object ApiId, Name, DisplayName
    
  • 导出指定API的定义内容到本地文件:
    # 替换为你的实际参数
    $resourceGroup = "你的资源组名"
    $apimName = "你的APIM服务名"
    $apiId = "目标API的ApiId"
    $outputPath = "./api-definition.json"
    
    # 获取API定义(格式根据实际情况选,比如openapi+json、swagger-json等)
    $apiDefinition = Get-AzApiManagementApiContent -ResourceGroupName $resourceGroup -ServiceName $apimName -ApiId $apiId -Format "openapi+json"
    # 保存到本地
    $apiDefinition.Content | Out-File -FilePath $outputPath -Encoding UTF8
    

二、Terraform配置APIM API Definitions

1. 基础配置示例

使用azurerm_api_management_api资源,通过本地文件加载API定义:

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_api_management" "example" {
  name                = "example-apim"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  publisher_name      = "Example Publisher"
  publisher_email     = "publisher@example.com"

  sku_name = "Developer_1"
}

resource "azurerm_api_management_api" "example_api" {
  name                = "echo-api"
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name
  revision            = "1"
  display_name        = "Echo API"
  path                = "echo"
  protocols           = ["https"]

  # 配置API定义
  content_format = "openapi+json" # 匹配导出时的格式
  content_value  = file("./api-definition.json") # 加载本地导出的定义文件
}

2. 导入现有API到Terraform

如果已经通过门户创建了API,需要先导入到Terraform状态:

terraform import azurerm_api_management_api.example_api /subscriptions/{订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.ApiManagement/service/{APIM服务名}/apis/{API的ApiId}

导入后运行terraform plan,对比现有配置和Terraform代码,补充content_format和content_value参数后即可实现代码管理。

注意事项

  • content_format需与API定义的实际格式匹配,可选值包括openapi+json、openapi-yaml、swagger-json、swagger-yaml等。
  • 确保使用的AzureRM Provider版本≥3.0,避免出现参数兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:05:14