我正在编写 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>
资源 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")
}