未经身份验证的无限配额 API
Unlimited quota for unauthenticated API
我正在使用 1.10.0 新 Rest API 创建一个 API。以下是我要发送的一些参数:
body.setTransport(createList("http", "https"));
body.setApiDefinition("{\"paths\":{\"/*\":{\"post\":{\"x-auth-type\":\"None\",\"responses\":{\"201\":{\"description\":\"Created\"}},\"x-throttling-tier\":\"Unlimited\"},\"get\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"},\"delete\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"},\"put\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"}}},\"swagger\":\"2.0\",\"info\":{\"title\":\"" + providerApi.getName() + "\",\"version\":\"1.0.0\"}}");
body.setTiers(createList("Unlimited"));
body.setVisibility(VisibilityEnum.PUBLIC);
body.setVisibleRoles(createList());
因此 API 被创建为 Unlimited/PUBLIC。
我更改了所有三个默认层配置文件:
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-res-tiers.xml
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-app-tiers.xml
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-tiers.xml
允许未验证角色每分钟 10000 个请求。
<throttle:ID throttle:type="ROLE">Unauthenticated</throttle:ID>
<wsp:Policy>
<throttle:Control>
<wsp:Policy>
<throttle:MaximumCount>10000</throttle:MaximumCount>
<throttle:UnitTime>60000</throttle:UnitTime>
</wsp:Policy>
</throttle:Control>
</wsp:Policy>
</wsp:Policy>
然而,在每分钟发送 60 个请求后 - API 以状态代码 429 响应,错误日志表明超出配额...
每次更改后,我都会重新启动 APIM 网关并重新创建 API,以防万一。
知道为什么网关不遵守 10000 的限制吗?
API 管理器将在服务器的第一次启动时读取这些文件并将内容复制到注册表,此后,API 管理器将不会检查这些文件是否有任何更新。
您必须在注册表中更新策略。
通过管理控制台使用注册表浏览器并导航到以下位置 /_system/governance/apimgt/applicationdata
。您可以看到层 xml 文件。
登录 APIM 管理控制台 (https://:9443/carbon) 并 select 在资源下浏览
- 导航到/_system/governance/apimgt/applicationdata
- 你会看到 app-tiers.xml, res-tiers.xml, tiers.xml.
我正在使用 1.10.0 新 Rest API 创建一个 API。以下是我要发送的一些参数:
body.setTransport(createList("http", "https"));
body.setApiDefinition("{\"paths\":{\"/*\":{\"post\":{\"x-auth-type\":\"None\",\"responses\":{\"201\":{\"description\":\"Created\"}},\"x-throttling-tier\":\"Unlimited\"},\"get\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"},\"delete\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"},\"put\":{\"x-auth-type\":\"None\",\"responses\":{\"200\":{\"description\":\"OK\"}},\"x-throttling-tier\":\"Unlimited\"}}},\"swagger\":\"2.0\",\"info\":{\"title\":\"" + providerApi.getName() + "\",\"version\":\"1.0.0\"}}");
body.setTiers(createList("Unlimited"));
body.setVisibility(VisibilityEnum.PUBLIC);
body.setVisibleRoles(createList());
因此 API 被创建为 Unlimited/PUBLIC。
我更改了所有三个默认层配置文件:
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-res-tiers.xml
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-app-tiers.xml
./opt/wso2am-1.10.0/repository/resources/default-tiers/default-tiers.xml
允许未验证角色每分钟 10000 个请求。
<throttle:ID throttle:type="ROLE">Unauthenticated</throttle:ID>
<wsp:Policy>
<throttle:Control>
<wsp:Policy>
<throttle:MaximumCount>10000</throttle:MaximumCount>
<throttle:UnitTime>60000</throttle:UnitTime>
</wsp:Policy>
</throttle:Control>
</wsp:Policy>
</wsp:Policy>
然而,在每分钟发送 60 个请求后 - API 以状态代码 429 响应,错误日志表明超出配额...
每次更改后,我都会重新启动 APIM 网关并重新创建 API,以防万一。
知道为什么网关不遵守 10000 的限制吗?
API 管理器将在服务器的第一次启动时读取这些文件并将内容复制到注册表,此后,API 管理器将不会检查这些文件是否有任何更新。
您必须在注册表中更新策略。
通过管理控制台使用注册表浏览器并导航到以下位置 /_system/governance/apimgt/applicationdata
。您可以看到层 xml 文件。
登录 APIM 管理控制台 (https://:9443/carbon) 并 select 在资源下浏览
- 导航到/_system/governance/apimgt/applicationdata
- 你会看到 app-tiers.xml, res-tiers.xml, tiers.xml.