Migrating Rate Limiting Policies to Different Environments¶
Rate limiting policies exist at different levels such as Application Level, Subscriber Level, Advanced Policy Level, etc. These rate limiting policies can belong to different environments according to the product lifecycle and are related to different APIs or Applications. Of these rate limiting policies, some of them exist as default policies belonging to every environment, and rate limiting policies can be custom-made. You may need to import custom-made or default rate limiting policies from one environment to another.
Note
You may encounter an error when an API or an Application is imported from an environment that has custom-made rate limiting policies to another environment. This happens if the API or the Application has subscribed to a rate limiting policy that is not in the destination environment. Importation fails to indicate the rate limiting policy is not supported.
Before importing either the API or App to the destination environment, rate limiting policies are imported to the destination environment using a separate step. After rate limiting policies are imported to the destination environment, you can import the API/Application to the destination environment without any rate limiting policy support errors.
Info
Before you begin
-
Make sure apictl is initialized and setup, if not follow the steps in Download and Initialize the apictl.
-
Make sure to add an environment before you start working with the following apictl commands, because all API Products need to be imported or exported to/from a specific environment.
For more information, visit Add an Environment.
Export a rate limiting policy¶
Export rate limiting policy allows the user to export a rate limiting policy by name. Since rate limiting policies can exist with the same name across different policy levels, policy levels can also be specified.
In order to export a specific rate limiting policy, the rate limiting policy name should be known. In a case where rate limiting policies exist with the same name in different policy levels, policy type should be known too. For this purpose, the get policies rate-limiting command should be used if the policy name/type is unknown.
Run the following apictl command to export a rate limiting policy.
-
Command
apictl export policy rate-limiting -e <environment name> -n <policy name> -- type <policy type> -- format
Info
Flags
-- type
- Here the type is optional and when the type is not given, the first rate limiting policy found with the name is exported. If the user wants to specify a certain policy, then the type can be used.Parameter Description advanced to export advanced rate limiting policies custom to export only custom rate limiting policies subscription to export only subscription rate limiting policies application to export only application rate limiting policies -- format
- File format of exported file(json or yaml) (default "YAML")Example
apictl export policy rate-limiting -n Silver -e prod -- type subscription
Exported File
type: throttling policy subtype: subscription policy version: v4.2.0 data: policyId: 15797f4c-3742-4909-920c-13f164fd2b1c policyName: Silver displayName: Silver description: Allows 2000 requests per minute isDeployed: true type: SubscriptionThrottlePolicy graphQLMaxComplexity: 0 graphQLMaxDepth: 0 defaultLimit: type: REQUESTCOUNTLIMIT requestCount: timeUnit: min unitTime: 1 requestCount: 2000 bandwidth: null eventCount: null monetization: null rateLimitCount: 0 rateLimitTimeUnit: null subscriberCount: 0 customAttributes: [] stopOnQuotaReach: true billingPlan: FREE permissions: null
Import a rate limiting policy¶
Import rate limiting policy operation allows users to import exported rate limiting policy files to a different environment and it also has the capability to overwrite existing policies.
Run the following apictl command to import a rate limiting policy.
-
Command
apictl import policy rate-limiting -f <file path> -e <environment name> -- update
Example
apictl import policy rate-limiting -f ~/Application-Gold -e prod -- update
Info
Flag
--update
- Update an existing rate limiting policy or create a new rate limiting policy