Creates a forwarding rule for a listener.
Operation description
Take note of the following limits:
-
When you configure the Redirect action, you can use the default value only for the HttpCode parameter. Do not use the default values for the other parameters.
-
If you specify the Rewrite action together with other actions in a forwarding rule, make sure that the ForwardGroup action is specified.
-
CreateRule is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call the ListRules operation to query the status of a forwarding rule.
- If a forwarding rule is in the Provisioning state, the forwarding rule is being created.
- If a forwarding rule is in the Available state, the forwarding rule is created.
-
You can set RuleConditions and RuleActions to add conditions and actions to a forwarding rule. The limits on conditions and actions are:
- Limits on conditions: 5 for a basic Application Load Balancer (ALB) instance, 10 for a standard ALB instance, and 10 for a WAF-enabled ALB instance.
- Limits on actions: 3 for a basic ALB instance, 5 for a standard ALB instance, and 5 for a WAF-enabled ALB instance.
Debugging
Authorization information
Request parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
ListenerId | string | Yes | The listener ID of the ALB instance. | lsr-bp1bpn0kn908w4nbw**** |
ClientToken | string | No | The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters. Note
If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.
| 5A2CFF0E-5718-45B5-9D4D-70B3FF3898 |
DryRun | boolean | No | Specifies whether to perform only a dry run, without performing the actual request. Valid values:
| false |
Priority | integer | Yes | The priority of the forwarding rule. Valid values: 1 to 10000. A smaller value indicates a higher priority. Note
The priorities of the forwarding rules created for the same listener must be unique.
| 10 |
Direction | string | No | The direction to which the forwarding rule is applied. Valid values:
Note
Basic ALB instances do not support the Response value.
| Request |
RuleActions | array<object> | Yes | The maximum cache time of dry run requests in the browser. Unit: seconds. Valid values: -1 to 172800. | |
object | Yes | The headers that can be exposed. You can specify an asterisk ( | ||
FixedResponseConfig | object | No | The configuration of the custom response. | |
Content | string | No | The content of the custom response. The content can be up to 1 KB in size and can contain only ASCII characters. | dssacav |
ContentType | string | No | The format of the response. Valid values: text/plain, text/css, text/html, application/javascript, and application/json. | text/plain |
HttpCode | string | No | The HTTP status code in the response. Valid values: HTTP_2xx, HTTP_4xx, and HTTP_5xx. x must be a digit. | HTTP_200 |
ForwardGroupConfig | object | No | The server groups to which requests are distributed. Each forwarding rule supports at most five server groups. | |
ServerGroupTuples | array<object> | No | The server groups to which requests are distributed. Each forwarding rule supports at most five server groups. | |
object | No | The server groups to which requests are distributed. | ||
ServerGroupId | string | No | The server group to which requests are distributed. | sgp-k86c1ov501id6p**** |
Weight | integer | No | The weight of the server group. A larger value specifies a higher weight. A server group with a higher weight receives more requests. Valid values: 0 to 100.
| 100 |
ServerGroupStickySession | object | No | The configuration of session persistence for server groups. | |
Enabled | boolean | No | Specifies whether to enable session persistence. Valid values:
| false |
Timeout | integer | No | The timeout period of sessions. Unit: seconds. Valid values: 1 to 86400. Default value: 1000. | 100 |
InsertHeaderConfig | object | No | The configuration of the header to be inserted. | |
Key | string | No | The key of the header. The key must be 1 to 40 characters in length, and can contain letters, digits, underscores (_), and hyphens (-). The header key specified by InsertHeaderConfig must be unique. Note
You cannot specify the following header keys (case-insensitive): slb-id , slb-ip , x-forwarded-for , x-forwarded-proto , x-forwarded-eip , x-forwarded-port , x-forwarded-client-srcport , connection , upgrade , content-length , transfer-encoding , keep-alive , te , host , cookie , remoteip , and authority .
| key |
Value | string | No | The value of the header to be inserted.
| UserDefined |
ValueType | string | No | The type of header. Valid values:
| UserDefined |
Order | integer | Yes | The priority of the action. Valid values: 1 to 50000. A smaller value indicates a higher priority. The actions of a forwarding rule are applied in descending order of priority. This parameter is required. The priority of each action within a forwarding rule must be unique. | 1 |
RedirectConfig | object | No | The redirect configuration. Note
When you configure the RedirectConfig action, you can use the default value only for the httpCode parameter. Do not use the default values for the other parameters.
| |
Host | string | No | The hostname to which requests are redirected. Valid values:
| ${host} |
HttpCode | string | No | The redirect type. Valid values: 301, 302, 303, 307, and 308. | 301 |
Path | string | No | The path to which requests are redirected. Valid values:
| /test |
Port | string | No | The port to which requests are redirected.
| 10 |
Protocol | string | No | The redirect protocol. Valid values:
Note
HTTPS listeners support only HTTPS to HTTPS redirects.
| HTTP |
Query | string | No | The query string of the URL to which requests are redirected.
| ${query} |
RewriteConfig | object | No | The rewrite configuration. Note
If multiple actions are configured within a forwarding rule, you must set RewriteConfig to the value of ForwardGroup.
| |
Host | string | No | The hostname to which requests are redirected. Valid values:
| www.example.com |
Path | string | No | The path to which requests are redirected. Valid values:
| /tsdf |
Query | string | No | The query string of the URL to which requests are redirected.
| ${query} |
Type | string | Yes | The action type. Valid values:
The following action types are supported:
| ForwardGroup |
TrafficLimitConfig | object | No | The action to throttle traffic. | |
QPS | integer | No | The queries per second (QPS). Valid values: 1 to 100000. | 100 |
PerIpQps | integer | No | The QPS of each IP address. Valid values: 1 to 100000. Note
If both the QPS and PerIpQps properties are specified, make sure that the value of the QPS property is smaller than the value of the PerIpQps property.
| 80 |
TrafficMirrorConfig | object | No | The action to mirror traffic. | |
TargetType | string | No | The type of destination to which network traffic is mirrored. Valid values:
| ForwardGroupMirror |
MirrorGroupConfig | object | No | The configuration of the server group to which traffic is mirrored. | |
ServerGroupTuples | array<object> | No | The configuration of the server group to which traffic is mirrored. | |
object | No | The server group to which network traffic is mirrored. | ||
ServerGroupId | string | No | The ID of the server group. | sgp-00mkgijak0w4qgz9**** |
CorsConfig | object | No | The origins allowed. | |
AllowOrigin | array | No | The allowed origins of CORS requests. | |
string | No | The source site that is allowed to access the destination. You can specify an asterisk (
| http://example.com | |
AllowMethods | array | No | The allowed HTTP methods for CORS requests. | |
string | No | The allowed HTTP methods for CORS requests. Valid values:
| GET | |
AllowHeaders | array | No | The allowed headers for CORS requests. | |
string | No | The allowed headers for CORS requests. You can specify an asterisk ( | test_123 | |
ExposeHeaders | array | No | The headers that can be exposed. | |
string | No | The headers that can be exposed. You can specify | test_123 | |
AllowCredentials | string | No | Specifies whether credentials can be carried in CORS requests. Valid values:
| on |
MaxAge | long | No | The maximum cache time of dry run requests in the browser. Unit: seconds. Valid values: -1 to 172800. | 1000 |
RuleConditions | array<object> | Yes | The configuration of the source IP-based forwarding rule. | |
object | Yes | The IP addresses or CIDR blocks. | ||
CookieConfig | object | No | The configurations of the cookies. | |
Values | array<object> | No | The cookie values. | |
object | No | The value construct of the cookie. | ||
Key | string | No | The key of the cookie.
| test |
Value | string | No | The value of the cookie.
| test |
HeaderConfig | object | No | The configuration of the header. | |
Key | string | No | The key of the header.
| Port |
Values | array | No | The value of the header. | |
string | No | The value of the header. The header values within a forwarding rule must be unique.
| 5006 | |
HostConfig | object | No | The configurations of the host. | |
Values | array | No | The hostname. | |
string | No | The hostname. Each match condition of a forwarding rule can contain only one hostname. The hostname must be unique.
| www.example.edu | |
MethodConfig | object | No | The configurations of the request methods. | |
Values | array | No | The request methods. | |
string | No | The request methods. Valid values: HEAD, GET, POST, OPTIONS, PUT, PATCH, and DELETE. | PUT | |
PathConfig | object | No | The configurations of the URLs. | |
Values | array | No | The path. | |
string | No | The path. Valid values:
| /test | |
QueryStringConfig | object | No | The configurations of the query strings. | |
Values | array<object> | No | The query strings. | |
object | No | The query strings. | ||
Key | string | No | The key of the query string.
| test |
Value | string | No | The value of the query string.
| test |
Type | string | Yes | The type of forwarding rule. Valid values:
| Host |
SourceIpConfig | object | No | The configuration of the source IP-based forwarding rule. This parameter is required and takes effect only when Type is set to SourceIP. | |
Values | array | No | The configuration of the source IP-based forwarding rule. | |
string | No | The IP addresses or CIDR blocks. | 192.168.0.0/32 | |
RuleName | string | Yes | The name of the forwarding rule.
| rule-doc |
Response parameters
Examples
Sample success responses
JSON
format
{
"JobId": "72dcd26b-f12d-4c27-b3af-18f6aed5****",
"RequestId": "365F4154-92F6-4AE4-92F8-7FF34B540750",
"RuleId": "rule-a3x3pg1yohq3lq****"
}
Error codes
HTTP status code | Error code | Error message | Description |
---|---|---|---|
400 | IncorrectStatus.Listener | The status of %s [%s] is incorrect. | The status of %s [%s] is incorrect. |
400 | OperationDenied.SameGroupForForwardAndMirrorAction | The operation is not allowed because of %s. | The operation is not allowed because of %s. |
400 | OperationDenied.IpGroupCanNotUsedForMirrorAction | The operation is not allowed because of %s. | The operation is not allowed because of %s. |
400 | OperationDenied.GRPCServerGroup | The operation is not allowed because of %s. | The operation is not allowed because of %s. |
400 | Conflict.Priority | There is already %s having the same configuration with %s. | There is already %s having the same configuration with %s. |
400 | ResourceQuotaExceeded.LoadBalancerRulesNum | The quota of %s is exceeded for resource %s, usage %s/%s. | The quota of %s is exceeded for resource %s. Usage: %s/%s. |
400 | ResourceQuotaExceeded.ServerGroupAttachedNum | The quota of %s is exceeded for resource %s, usage %s/%s. | The quota of %s is exceeded for resource %s, usage %s/%s. |
400 | ResourceQuotaExceeded.LoadBalancerServersNum | The quota of %s is exceeded for resource %s, usage %s/%s. | The quota of %s is exceeded for resource %s. Usage: %s/%s. |
400 | ResourceQuotaExceeded.ServerAddedNum | The quota of %s is exceeded for resource %s, usage %s/%s. | The quota of %s is exceeded for resource %s. Usage: %s/%s. |
400 | QuotaExceeded.RuleWildcardsNum | The quota of %s is exceeded, usage %s/%s. | The quota of %s is exceeded, usage %s/%s. |
400 | QuotaExceeded.RuleMatchEvaluationsNum | The quota of %s is exceeded, usage %s/%s. | The quota of %s is exceeded. Usage: %s/%s. |
400 | QuotaExceeded.RuleActionsNum | The quota of %s is exceeded, usage %s/%s. | The quota of %s is exceeded. Usage: %s/%s. |
400 | Mismatch.Protocol | The %s is mismatched for %s and %s. | The %s is mismatched for %s and %s. |
400 | Mismatch.VpcId | The %s is mismatched for %s and %s. | The %s is mismatched for %s and %s. |
400 | OperationDenied.RewriteMissingForwardGroup | The operation is not allowed because of RewriteMissingForwardGroup. | The operation is not allowed because rewrite is missing the forward group. |
400 | ResourceInConfiguring.Listener | The specified listener is being configured, please try again later. | - |
400 | OperationDenied.MirrorActionSupportHttpGroupOnly | The operation is not allowed because of MirrorActionSupportHttpGroupOnly. | - |
400 | OperationDenied.ProtocolMustSameForForwardGroupAction | The operation is not allowed because of ProtocolMustSameForForwardGroupAction. | - |
404 | ResourceNotFound.Listener | The specified resource %s is not found. | The specified resource %s is not found. |
404 | ResourceNotFound.ServerGroup | The specified resource %s is not found. | The specified resource %s is not found. |
For a list of error codes, visit the Service error codes.
Change history
Change time | Summary of changes | Operation |
---|---|---|
2024-01-18 | The Error code has changed | View Change Details |
2023-11-09 | The Error code has changed | View Change Details |