Azure api management api policy terraform



我正在尝试使用terraform实现一些api管理策略。 我创建了一个api_managementapi_management_api,到目前为止,问题为零,我确实使用xml_content向 api 添加了一个策略,并且创建base策略工作得很好。但是如果我想创建多个策略,则会收到该策略已存在的错误。

我按如下方式构建了我的地形:

resource "azurerm_api_management_api" "example" {
api_management_name = azurerm_api_management.example.name
display_name = "Api name ${var.env}"
name = "api-name-${var.env}"
path = "apiName${var.env}"
protocols = ["http"]
resource_group_name = azurerm_resource_group.example.name
revision = "1"
}
resource "azurerm_api_management_api_policy" "base-policy" {
api_management_name = azurerm_api_management.example.name
api_name = azurerm_api_management_api.example.name
resource_group_name = azurerm_resource_group.example.name
xml_content = file("./policy.xml")
}
resource "azurerm_api_management_api_policy" "base-policy-random" {
api_management_name = azurerm_api_management.example.name
api_name = azurerm_api_management_api.example.name
resource_group_name = azurerm_resource_group.example.name
xml_content = file("./policy_2.xml")
}

当我应用此地形时,出现以下错误:

A resource with the ID "/subscriptions/ID/resourceGroups/example/providers/Microsoft.ApiManagement/service/example/apis/example/policies/policy" already exists - to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for "azurerm_api_management_api_policy" for more information.
目前在我的 API 策略中,我只应用了base

策略,我想创建第二个策略,例如名为policy_two,但据我了解,terraform 尝试创建名为base的第二个策略,这就是它失败的原因。所以我想知道如何指定策略名称?

我希望我说得足够清楚我的问题,非常感谢你们的时间

对于一个 API,只能有一个"BasePolicy".
这是 API Management 中的设计使然。

但是,您可以为每个操作">operation_id"指定策略:

resource "azurerm_api_management_api_operation" "example" {
#...
}
resource "azurerm_api_management_api_operation_policy" "example" {
api_name            = azurerm_api_management_api_operation.example.api_name
api_management_name = azurerm_api_management_api_operation.example.api_management_name
resource_group_name = azurerm_api_management_api_operation.example.resource_group_name
operation_id        = azurerm_api_management_api_operation.example.operation_id
xml_content = <<XML
<policies>
<inbound>
<find-and-replace from="xyz" to="abc" />
</inbound>
</policies>
XML
}

最新更新