首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure api管理api策略terraform

Azure api管理api策略terraform
EN

Stack Overflow用户
提问于 2021-07-01 20:36:31
回答 1查看 272关注 0票数 0

我正在尝试使用terraform实现一些api管理策略。我创建了一个api_managementapi_management_api,到目前为止没有任何问题,我确实使用xml_content向api添加了一个策略,并且它可以很好地创建base policy..but。如果我想创建多个策略,我会收到一个错误,说明该策略已经存在。

我的地形结构如下:

代码语言:javascript
复制
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")
}

当我应用这个terraform时,我得到以下错误:

代码语言:javascript
复制
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的策略,这就是它失败的原因。所以我想知道如何指定策略名称?

我希望我已经把我的问题讲得够清楚了,非常感谢你们抽出时间。

EN

回答 1

Stack Overflow用户

发布于 2021-07-02 13:07:15

一个接口只能有一个BasePolicy。

这是在API管理中设计的。

但是您可以为每个operation“operation_id”指定一个策略:

代码语言:javascript
复制
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

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68210335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档