首页 > 解决方案 > 在 API Manager 上添加新的默认层

问题描述

我正在使用 API 管理器 2.2.0

默认情况下,WSO2 API Manager 附带一些订阅限制策略,例如 Gold、Silver 和 Bronze。我想添加一个新的,名为 Diamond。

我使用管理网页(例如https://localhost:9443/admin)在所有现有租户上添加了这个新层。

我现在想要的是在创建新租户时默认生成此钻石层。

我编辑了文件,default-tiers.xml添加了以下代码:

<wsp:Policy>
    <throttle:ID throttle:type="ROLE">Diamond</throttle:ID>
    <wsp:Policy>
        <throttle:Control>
            <wsp:Policy>
                <throttle:MaximumCount>2000</throttle:MaximumCount>
                <throttle:UnitTime>1000</throttle:UnitTime>
                <wsp:Policy>
                    <throttle:Attributes>
                        <throttle:x-wso2-BillingPlan>FREE</throttle:x-wso2-BillingPlan>
                        <throttle:x-wso2-StopOnQuotaReach>true</throttle:x-wso2-StopOnQuotaReach>
                    </throttle:Attributes>
                </wsp:Policy>
            </wsp:Policy>
        </throttle:Control>
    </wsp:Policy>
</wsp:Policy>

当我创建新租户并访问管理网页时,该层不存在。如果我浏览该租户的 Carbon 资源,我可以看到该文件tiers.xml包含上面的代码。

由于当我使用此 Diamond 层订阅 API 时新闻租户没有它,它总是向我返回 403。如果我使用其他的(例如黄金),一切都会按预期工作。

如何将新层添加到默认层列表中?

非常感谢任何帮助。

标签: wso2wso2-amwso2carbon

解决方案


由于租户是孤立的实体,因此没有 OOTB 方法来实现这一点。但是,您可以使用TenantMgtListener(实现onTenantCreate)[1] 并调用订阅添加 API[2]。

[1] https://docs.wso2.com/display/Carbon4411/TenantMgtListener [2] https://docs.wso2.com/display/AM260/apidocs/admin/#!/operations#SubscriptionPolicyCollection#throttlingPoliciesSubscriptionPost

psdefault-tiers.xml也没有tiers.xml在新的限制实现中使用。


推荐阅读