使用 Terraform 在 Azure API Management 中标记 API

Tag an API in Azure API Management with Terraform

我正在尝试使用 Terraform IaC 我的 API 网关。我正常进行了所有配置,例如后端、产品和策略。但是阅读文档,我没有找到任何方法可以将标签设置为API,只能创建一个新的。

resource "azurerm_api_management_api" "test" {
  name                  = "test*******"
  display_name          = "Test*******"
  api_management_name   = data.azurerm_api_management.example.name
  resource_group_name   = data.azurerm_api_management.example.resource_group_name
  revision              = "1"
  protocols             = ["https"]
  subscription_required = true
  path                  = "test****"

  subscription_key_parameter_names {
    header = "Ocp-Apim-Subscription-Key"
    query  = "subscription-key"
  }
}

我错过了什么吗? Terraform 是否支持此功能?在这种情况下,使用 ARM 模板还是 Powershell 更好?

我已经在我的环境中测试过

根据 azurerm_api_management_api | Resources | hashicorp/azurerm | Terraform Registry 文档,在使用 Terraform 的 Azure API 管理中,没有选项可以将标签设置为 API。

我们可以使用以下代码使用 terraform 为 Azure API 管理创建一个 API 标签:

resource "azurerm_api_management_tag" "example" {
  api_management_id = "resource id of azure-api-management"
  name              = "tag-name"
}

现在,我们可以使用此 powershell 命令为 Azure API 管理中的 API 设置上述标记:

New-AzResource -ResourceGroupName "Resource-Group-Name" -ResourceType Microsoft.ApiManagement/service/apis/tags -ResourceName "api-management-name/api-name/tag-name" -Force 

我们也缺少此功能。

幸运的是,它已添加到 version 0.92.0 recently: azurerm_api_management_api_tag

中的 azurerm Terraform 提供程序

您可以使用新资源将现有标签分配给 API:

resource "azurerm_api_management_api" "example" {
  name                = "example-api"
  resource_group_name = azurerm_resource_group.example.name
  api_management_name = azurerm_api_management.example.name
  revision            = "1"
}

resource "azurerm_api_management_tag" "example" {
  api_management_id = data.azurerm_api_management.example.id
  name              = "example-tag"
  display_name      = "Example Tag"
}

resource "azurerm_api_management_api_tag" "example" {
  api_id = azurerm_api_management_api.example.id
  name   = "example-tag"
}