如何根据API要求为不同的API添加策略

问题描述 投票:0回答:1

我正在编写 terraform 代码,同时也在编写 xml。我有两个 API 和不同的策略要求。我试图按照下面的代码实现它,但它没有帮助。有谁知道如何根据API要求添加策略吗?

<choose>
     ########## API ONE ###########
     <when condition="@(context.Request.Headers.GetValueOrDefault("ApiKey") == "Default")">
         <rate-limit-by-key calls="10" renewal-period="60" counter-key="@(context.Request.IpAddress)" />
     </when>
     ########## API TWO ###########
     <when condition="@(context.Subscription.Name.Contains("API_name") and context.Request.Headers.GetValueOrDefault("ApiKey") == "Default")">
          <rate-limit-by-key calls="2000" renewal-period="60" counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Subject)" />
      </when>
      <otherwise>
           <rate-limit-by-key calls="10000" renewal-period="60" counter-key="@(context.Subscription.Id)" />
      </otherwise>
xml azure terraform terraform-provider-azure apim
1个回答
0
投票

资源 azurerm_api_management_api_policy 管理 API 管理 API 策略。

为了简单起见,我将每个策略放在单独的 XML 文件中:

policies/
  foo-policy.xml
  bar.policy.xml

然后为每个策略创建

azurerm_api_management_api_policy
资源。

示例:

resource "azurerm_api_management_api_policy" "foo" {
  api_name            = "foo-api"
  api_management_name = var.api_management_name
  resource_group_name = var.resource_group_name

  xml_content = file("${path.module}/policies/foo-policy.xml")
}

resource "azurerm_api_management_api_policy" "bar" {
  api_name            = "bar-api"
  api_management_name = var.api_management_name
  resource_group_name = var.resource_group_name

  xml_content = file("${path.module}/policies/bar-policy.xml")
}
© www.soinside.com 2019 - 2024. All rights reserved.