'1.0',
'info' => ['style' => 'RPC', 'product' => 'Alb', 'version' => '2020-06-16'],
'directories' => [
[
'children' => ['GetLoadBalancerAttribute', 'UpdateLoadBalancerAttribute', 'UpdateLoadBalancerZones', 'UpdateLoadBalancerEdition', 'UpdateLoadBalancerAddressTypeConfig', 'DisableDeletionProtection', 'EnableDeletionProtection', 'StartShiftLoadBalancerZones', 'CancelShiftLoadBalancerZones', 'EnableLoadBalancerIpv6Internet', 'DisableLoadBalancerIpv6Internet', 'LoadBalancerJoinSecurityGroup', 'LoadBalancerLeaveSecurityGroup'],
'type' => 'directory',
'title' => 'Instances',
],
[
'children' => ['CreateListener', 'GetListenerAttribute', 'DeleteListener', 'ListListeners', 'StartListener', 'StopListener', 'UpdateListenerAttribute', 'UpdateListenerLogConfig', 'GetListenerHealthStatus'],
'type' => 'directory',
'title' => 'Listeners',
],
[
'children' => ['AddServersToServerGroup', 'CreateServerGroup', 'DeleteServerGroup', 'UpdateServerGroupAttribute', 'UpdateServerGroupServersAttribute', 'ListServerGroups', 'ListServerGroupServers', 'RemoveServersFromServerGroup', 'ReplaceServersInServerGroup'],
'type' => 'directory',
'title' => 'Server groups',
],
[
'children' => ['CreateRules', 'DeleteRules', 'UpdateRuleAttribute', 'UpdateRulesAttribute'],
'type' => 'directory',
'title' => 'Forwarding rules',
],
[
'children' => ['AssociateAdditionalCertificatesWithListener', 'DissociateAdditionalCertificatesFromListener', 'ListListenerCertificates'],
'type' => 'directory',
'title' => 'Listener certificates',
],
[
'children' => ['DetachCommonBandwidthPackageFromLoadBalancer', 'AttachCommonBandwidthPackageToLoadBalancer'],
'type' => 'directory',
'title' => 'Shared bandwidth packages',
],
[
'children' => ['DisableLoadBalancerAccessLog', 'EnableLoadBalancerAccessLog'],
'type' => 'directory',
'title' => 'Access logs',
],
[
'children' => ['CreateHealthCheckTemplate', 'GetHealthCheckTemplateAttribute', 'DeleteHealthCheckTemplates', 'UpdateHealthCheckTemplateAttribute', 'ListHealthCheckTemplates'],
'type' => 'directory',
'title' => 'Health checks',
],
[
'children' => ['CreateSecurityPolicy', 'DeleteSecurityPolicy', 'UpdateSecurityPolicyAttribute', 'ListSecurityPolicies', 'ListSecurityPolicyRelations', 'ListSystemSecurityPolicies'],
'type' => 'directory',
'title' => 'Security policies',
],
[
'children' => ['AddEntriesToAcl', 'CreateAcl', 'DeleteAcl', 'UpdateAclAttribute', 'ListAcls', 'ListAclEntries', 'AssociateAclsWithListener', 'ListAclRelations', 'DissociateAclsFromListener', 'RemoveEntriesFromAcl'],
'type' => 'directory',
'title' => 'Access control',
],
[
'children' => ['ListAsynJobs'],
'type' => 'directory',
'title' => 'Asynchronous tasks',
],
[
'children' => ['DescribeCapacityReservation'],
'type' => 'directory',
'title' => 'Resource reservation',
],
[
'children' => ['UpdateAScripts', 'CreateAScripts', 'DeleteAScripts', 'ListAScripts'],
'type' => 'directory',
'title' => 'Programmable scripts',
],
[
'children' => ['ApplyHealthCheckTemplateToServerGroup', 'CreateLoadBalancer', 'CreateRule', 'DeleteLoadBalancer', 'DeleteRule', 'DescribeRegions', 'DescribeZones', 'ListLoadBalancers', 'ListRules', 'ListTagKeys', 'ListTagResources', 'ListTagValues', 'ModifyCapacityReservation', 'MoveResourceGroup', 'TagResources', 'UnTagResources'],
'title' => 'Others',
'type' => 'directory',
],
],
'components' => [
'schemas' => [],
],
'apis' => [
'AddEntriesToAcl' => [
'summary' => 'Adds IP entries to an access control list (ACL).',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'create'],
'parameters' => [
[
'name' => 'AclId',
'in' => 'query',
'schema' => ['title' => 'AclId', 'description' => 'The ID of the ACL.'."\n", 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
],
[
'name' => 'AclEntries',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The ACL entries that you want to add. You can add at most 20 entries in each call.'."\n",
'type' => 'array',
'items' => [
'description' => 'The ACL entry.'."\n",
'type' => 'object',
'properties' => [
'Description' => ['title' => '', 'description' => 'The description of the ACL entry. The description must be 2 to 256 characters in length, and can contain letters, digits, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).'."\n"
."\n"
.'You can add at most 20 entries in each call.'."\n", 'type' => 'string', 'required' => false, 'example' => 'test-entry'],
'Entry' => ['title' => '', 'description' => 'The CIDR block in the ACL entry.'."\n", 'type' => 'string', 'required' => true, 'example' => '10.0.1.0/24'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'JobId' => ['title' => 'job', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceAlreadyExist.AclEntry', 'errorMessage' => 'The specified resource %s already exists.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AclEntriesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ListenerAclEntriesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerAclEntriesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'AddEntriesToAcl',
'description' => '* Each ACL can contain IP addresses or CIDR blocks. Take note of the following limits on ACLs:'."\n"
."\n"
.' * The maximum number of IP entries that can be added to an ACL with each Alibaba Cloud account at a time: 20'."\n"
.' * The maximum number of IP entries that each ACL can contain: 1,000'."\n"
."\n"
.'* **AddEntriesToAcl** 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 [ListAclEntries](~~213616~~) operation to query the status of the task.'."\n"
."\n"
.' * If the ACL is in the **Adding** state, the IP entries are being added.'."\n"
.' * If the ACL is in the **Available** state, the IP entries are added.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AddEntriesToAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
],
'AddServersToServerGroup' => [
'summary' => 'Adds backend servers to a server group.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbULKWF1'],
],
'parameters' => [
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtop****', 'title' => ''],
],
[
'name' => 'Servers',
'in' => 'formData',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of backend servers. You can add up to 200 servers in a single call.',
'type' => 'array',
'items' => [
'description' => 'The backend server.',
'type' => 'object',
'properties' => [
'Description' => ['description' => 'The description of the backend server. The description must be 2 to 256 characters in length and cannot start with http\\:// or https\\://.', 'type' => 'string', 'example' => 'test', 'title' => '', 'required' => false],
'Port' => ['description' => 'The port used by the backend server. Valid values: **1** to **65535**. You can add up to 200 servers in a single call.'."\n"
."\n"
.'> This parameter is required when **ServerType** is set to **Ecs**, **Eni**, **Eci**, or **Ip**. You do not need to set this parameter when **ServerType** is set to **Fc**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'docRequired' => false, 'example' => '80', 'title' => ''],
'ServerId' => ['description' => 'The ID of the backend server. You can add up to 200 servers in a single call.'."\n"
."\n"
.'- If the server group is of the **Instance** type, set this parameter to the ID of an **ECS** instance, an **ENI**, or an **ECI** instance.'."\n"
."\n"
.'- If the server group is of the **Ip** type, set this parameter to an IP address.'."\n"
."\n"
.'- If the server group is of the **Fc** type, set this parameter to the Alibaba Cloud Resource Name (ARN) of a function in Function Compute.', 'type' => 'string', 'required' => false, 'example' => 'i-uf616vu8me******', 'title' => ''],
'ServerIp' => ['description' => 'The IP address of the backend server. You can add up to 200 servers in a single call.'."\n"
."\n"
.'If **ServerType** is set to **Eni**, you can specify the primary private IP address or a secondary private IP address of the ENI.'."\n"
."\n"
.'> You do not need to set this parameter when **ServerType** is set to **Fc**.', 'type' => 'string', 'example' => '192.168.1.1', 'title' => '', 'required' => false],
'ServerType' => ['description' => 'The type of backend server. You can add up to 200 servers in a single call. Valid values:'."\n"
."\n"
.'- **Ecs**: an ECS instance.'."\n"
."\n"
.'- **Eni**: an ENI.'."\n"
."\n"
.'- **Eci**: an ECI.'."\n"
."\n"
.'- **Ip**: an IP address.'."\n"
."\n"
.'- **Fc**: a function in Function Compute.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'Ecs', 'title' => ''],
'Weight' => ['description' => 'The weight of the backend server. Valid values: **0** to **100**. Default value: **100**. If you set the weight to **0**, no requests are forwarded to the backend server. You can add up to 200 servers in a single call.'."\n"
."\n"
.'> You do not need to set this parameter when **ServerType** is set to **Fc**.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => '', 'required' => false],
'RemoteIpEnabled' => ['description' => 'Specifies whether to enable the remote IP feature. You can add up to 200 servers in a single call. Valid values:'."\n"
."\n"
.'- **true**: enabled.'."\n"
."\n"
.'- **false**: disabled.'."\n"
."\n"
.'> This parameter takes effect only when **ServerType** is set to **Ip**.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 200,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'Generate a token on your client to make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each API request may be different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error is returned. If the request passes the dry run, the `DryRunOperation` error code is returned. In a dry run, no backend servers are added.'."\n"
."\n"
.'- **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'Conflict.BackendServer', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'OperationDenied.VpcVportNotFound', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'IncorrectStatus.Eni', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource %s is in use.', 'description' => 'The specified resource %s is in use.'],
['errorCode' => 'OperationDenied.NoAvailableVSwitch', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.VgwVipNotFound', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.CloudBox', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'Mismatch.Type', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
['errorCode' => 'DuplicatedParam.BackendServer', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The param of %s is duplicated.'],
['errorCode' => 'OperationDenied.EciNotSupportJobType', 'errorMessage' => 'The operation is not allowed because of eci not support job type.', 'description' => 'The operation is not allowed because of eci not support job type.'],
['errorCode' => 'IllegalParam.ServerIp', 'errorMessage' => 'The param of ServerIp is illegal.', 'description' => ''],
['errorCode' => 'Mismatch.ServerType', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => ''],
['errorCode' => 'ServiceUnavailable', 'errorMessage' => 'The request has failed due to a temporary failure of the server.', 'description' => 'The request has failed due to a temporary failure of the server.'],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Ecs', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Eci', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Eni', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'AddServersToServerGroup',
'description' => '**AddServersToServerGroup** is an asynchronous operation. After you send a request, the system returns a request ID, but the backend servers are not added immediately. The system adds the servers in the background.'."\n"
."\n"
.'1. Call [ListServerGroups](~~213627~~) to query the status of the server group:'."\n"
."\n"
.'- If the server group is in the **Configuring** state, the configuration of the server group is being modified.'."\n"
."\n"
.'- If the server group is in the **Available** state, the server group is running.'."\n"
."\n"
.'2. Call [ListServerGroupServers](~~213628~~) to query the status of the backend servers:'."\n"
."\n"
.'- If a backend server is in the **Adding** state, it is being added to the server group.'."\n"
."\n"
.'- If a backend server is in the **Available** state, it is running.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AddServersToServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","type":"json"}]',
],
'ApplyHealthCheckTemplateToServerGroup' => [
'summary' => 'Applies a health check template to a server group.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'HealthCheckTemplateId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The template ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'hct-bp1qjwo61pqz3ahltv****'],
],
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The server group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'sgp-n80wyad08u0tox****'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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 and cannot exceed 64 characters in length.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The server group to which the template is applied.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.HealthCheckTemplate', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.HealthCheckTemplate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'ApplyHealthCheckTemplateToServerGroup',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:ApplyHealthCheckTemplateToServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthCheckTemplateId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#serverGroupId}'],
],
],
],
],
],
'AssociateAclsWithListener' => [
'summary' => 'Associates access control lists (ACLs) with a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'abilityTreeCode' => '161',
'abilityTreeNodes' => ['FEATUREslbAYSA83'],
],
'parameters' => [
[
'name' => 'AclIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The IDs of the ACLs. You can specify up to three IDs in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the ACL.'."\n", 'type' => 'string', 'required' => false, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
'required' => true,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-bp1bpn0kn9*******'],
],
[
'name' => 'AclType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the ACL. Valid values:'."\n"
."\n"
.'* **White**: a whitelist. Only requests from the IP addresses or CIDR blocks in the ACL are forwarded. The whitelist applies to scenarios in which you want to allow only specific IP addresses to access an application. Your service may be adversely affected if the whitelist is not properly configured. If a whitelist is configured for a listener, only requests from IP addresses that are added to the whitelist are forwarded by the listener. If you enable a whitelist but do not add an IP address to the whitelist, the listener forwards all requests.'."\n"
.'* **Black**: a blacklist. All requests from the IP addresses or CIDR blocks in the ACL are blocked. The blacklist applies to scenarios in which you want to block access from specific IP addresses to an application. If a blacklist is configured for a listener but no IP address is added to the blacklist, the listener forwards all requests.'."\n", 'type' => 'string', 'required' => true, 'example' => 'White'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to associate ACLs with a listener.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The synchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F87******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'QuotaExceeded.AclsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ListenerAclEntriesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['errorCode' => 'OperationDenied.AclNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceAlreadyExist.AclEntry', 'errorMessage' => 'The specified resource %s already exists.', 'description' => ''],
['errorCode' => 'ResourceInUse.Acl', 'errorMessage' => 'The specified resource %s is in use.', 'description' => 'The specified resource %s is in use.'],
['errorCode' => 'OperationDenied.LoadBalancerJoinedSecurityGroupNotSupportAcl', 'errorMessage' => 'The operation is not allowed because of loadbalancer joined security group not support acl.', 'description' => 'The operation is not supported because SLB instances in security groups cannot be added to ACLs.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F87******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":""}]',
'title' => 'AssociateAclsWithListener',
'description' => '**DeleteDhcpOptionsSet** 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 [ListAclRelations](~~213618~~) operation to query the status of the task.'."\n"
."\n"
.'* If an ACL is in the **Associating** state, the ACL is being associated with a listener.'."\n"
.'* If an ACL is in the **Associated** state, the ACL is associated with a listener.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AssociateAclsWithListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'AssociateAdditionalCertificatesWithListener' => [
'summary' => 'Associates additional certificates with a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'create'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The listener ID. This parameter is valid only for HTTPS and QUIC listeners.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'lsn-5qnirjhpt******'],
],
[
'name' => 'Certificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The additional certificates.',
'type' => 'array',
'items' => [
'description' => 'The additional certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the certificate. Only server certificates are supported.'."\n"
."\n"
.'> The globally unique certificate ID, which ends with a region ID, for example, 1011\\*\\*\\*\\*-cn-hangzhou.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '1011****-cn-hangzhou'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 15,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** as the **ClientToken**. The **RequestId** is different for each request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3F******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform only a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run, then performs the operation. If the request passes the check, a `2xx` HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Associating an extension certificate with an HTTPS or QUIC listener.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.DefaultCertificateUsed', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationFailed.DefaultCertificateNotFound', 'errorMessage' => 'The operation failed because of %s.', 'description' => 'The operation failed because of %s.'],
['errorCode' => 'ResourceAlreadyAssociated.Certificate', 'errorMessage' => 'The specified resource %s is already associated.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerCertificatesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'OperationDenied.HttpListenerNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'InvalidParameter', 'errorMessage' => 'Invalid parameter, please check the parameter input.', 'description' => 'Invalid parameter, please check the parameter input.'],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource %s is configuring, please try again later.', 'description' => 'The specified resource %s is being configured. Please try again later.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication has failed for LoadBalancer.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.Certificate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","type":"json"}]',
'title' => 'AssociateAdditionalCertificatesWithListener',
'description' => '**AssociateAdditionalCertificatesWithListener** 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 [](t2324519.xdita#)operation to query the status of the task:'."\n"
."\n"
.'- If the HTTPS or QUIC listener is in the **Associating** state, the additional certificates are being associated.'."\n"
."\n"
.'- If the HTTPS or QUIC listener is in the **Associated** state, the certificates are associated.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AssociateAdditionalCertificatesWithListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'AttachCommonBandwidthPackageToLoadBalancer' => [
'summary' => 'Associates an Internet Shared Bandwidth instance with an Application Load Balancer (ALB) instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'readAndWrite',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbZBWWR9'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665*****'],
],
[
'name' => 'RegionId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The region ID of the ALB instance.'."\n"
."\n"
.'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.'."\n", 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou'],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-d676fho813rmu3****'],
],
[
'name' => 'BandwidthPackageId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The EIP bandwidth plan ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'cbwp-bp1pzf0ym72pu3y76****'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '2EF39708-974B-5E74-AFF5-3445******'],
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectStatus.CommonBandwidthPackage', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.CommonBandwidthPackage', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2EF39708-974B-5E74-AFF5-3445******\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2EF39708-974B-5E74-AFF5-3445263035A8\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n","errorExample":""}]',
'title' => 'AttachCommonBandwidthPackageToLoadBalancer',
'description' => '**AttachCommonBandwidthPackageToLoadBalancer** 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 [GetLoadBalancerAttribute](~~214362~~) to query the status of the task.'."\n"
."\n"
.'* If the ALB instance is in the **Configuring** state, the EIP bandwidth plan is being associated with the ALB instance.'."\n"
.'* If the ALB instance is in the **Active** state, the EIP bandwidth plan is associated with the ALB instance.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:AttachCommonBandwidthPackageToLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
],
'CancelShiftLoadBalancerZones' => [
'summary' => 'Adds the elastic IP address (EIP) and virtual IP address (VIP) of a zone to a DNS record.',
'methods' => ['post', 'get'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbFTB0NK'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n", 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ALB instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****'."\n", 'title' => ''],
],
[
'name' => 'ZoneMappings',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The mappings between zones and vSwitches.'."\n"
."\n"
.'> You can add only one zone in each call.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'VSwitchId' => ['description' => 'The ID of the vSwitch in the zone. By default, each zone uses one vSwitch and one subnet.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'vsw-bp1rmcrwg3erh1fh8****'."\n"],
'ZoneId' => ['description' => 'The zone ID. You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cn-hangzhou-a'],
],
'required' => false,
'description' => '',
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 1,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n"],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectBusinessStatus.Eip', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'OperationDenied.ZoneVSwitchChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'."\n"],
['errorCode' => 'OperationDenied.ZoneMappingsNotChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.ZoneVSwitchNotExist', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The instance does not contain the zone or vSwitch specified in the request.'],
['errorCode' => 'OperationDenied.EniStatusNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'This operation is not supported by the status of the ENI.'],
['errorCode' => 'OperationDenied.OnlyFixedAddressAllocatedModeSupported', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'This operation is not supported by the IP mode of the SLB instance.'],
['errorCode' => 'OperationFailed.CancelShiftLoadBalancerZonesFailed', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'Failed to restore the A record of the IP address in the zone.'],
['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource %s is not enough.', 'description' => 'The specified resource %s is not enough.'],
['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.VSwitch', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'staticInfo' => ['returnType' => 'synchronous'],
'title' => 'CancelShiftLoadBalancerZones',
'description' => 'This operation is supported only by Application Load Balancer (ALB) instances that use static IP addresses. Before you call this operation, you must call the StartShiftLoadBalancerZones operation to remove the zone from the ALB instance.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:CancelShiftLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5A2CFF0E-5718-45B5-9D4D-70B3FF3898\\\\n\\"\\n}","type":"json"}]',
],
'CreateAScripts' => [
'summary' => 'Create a script.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '34526',
'abilityTreeNodes' => ['FEATUREslb2Q6O49'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'A client token used to ensure request idempotency.'."\n"
."\n"
.'You can generate this value on your client. The value must be unique across requests and contain only ASCII characters.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run without creating the AScript. The system checks the request for required parameters, format validity, and service limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, the system returns an HTTP 2xx status code and performs the operation.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-6hfq3zs0x04ibn****', 'title' => ''],
],
[
'name' => 'AScripts',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The AScripts to create.',
'type' => 'array',
'items' => [
'description' => 'An AScript configuration.',
'type' => 'object',
'properties' => [
'AScriptName' => ['description' => 'The name of the AScript.'."\n"
."\n"
.'The name must be 2 to 128 characters long, and must start with a letter, a digit, or a Chinese character. It can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''],
'Position' => ['description' => 'Specifies when the AScript is executed. Valid values:'."\n"
."\n"
.'- **RequestHead** (default): Executes before request rules.'."\n"
."\n"
.'- **RequestFoot**: Executes after request rules.'."\n"
."\n"
.'- **ResponseHead**: Executes before response rules.', 'type' => 'string', 'required' => false, 'example' => 'RequestFoot', 'default' => 'RequestHead', 'title' => ''],
'Enabled' => ['description' => 'Specifies whether the AScript is enabled. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false** (default): Disabled.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
'ScriptContent' => ['description' => 'The content of the AScript.', 'type' => 'string', 'required' => true, 'example' => 'if and(match_re($uri, \'^/1.txt$\'), $arg_type) { rewrite(concat(\'/1.\', $arg_type), \'break\') }', 'title' => ''],
'ExtAttributes' => [
'title' => '',
'description' => 'The extended attributes.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'AttributeKey' => ['description' => 'The attribute key.'."\n"
."\n"
.'The only valid value is **EsDebug**. If a request contains the \\_es\\_dbg parameter and its value matches the secret key specified in AttributeValue, the system adds a debug header to the response, which contains rule execution logs.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'EsDebug'],
'AttributeValue' => ['description' => 'The attribute value, which is used as the secret key for the EsDebug attribute. The value must be 1 to 128 characters long and can contain uppercase letters, lowercase letters, and digits.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'test123'],
],
'required' => false,
'description' => '',
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'ExtAttributeEnabled' => ['description' => 'Specifies whether to enable extended attributes for the AScript. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false** (default): Disabled.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '5c607642-535e-4e06-9d77-df53049b****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => 'BF0FE763-9603-558F-A55B-0F4******'],
'AScriptIds' => [
'title' => '',
'description' => 'A list of programmable script IDs.',
'type' => 'array',
'items' => [
'description' => 'The programmable script ID.',
'type' => 'object',
'properties' => [
'AScriptId' => ['description' => 'The ID of the programmable script.', 'type' => 'string', 'title' => '', 'example' => 'as-xvq5igaa7uv6vr****'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptsNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptsTotalLinesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptLinesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"5c607642-535e-4e06-9d77-df53049b****\\",\\n \\"RequestId\\": \\"BF0FE763-9603-558F-A55B-0F4******\\",\\n \\"AScriptIds\\": [\\n {\\n \\"AScriptId\\": \\"as-xvq5igaa7uv6vr****\\"\\n }\\n ]\\n}","type":"json"}]',
'title' => 'CreateAScripts',
'description' => '### Prerequisites'."\n"
."\n"
.'- You have created a standard edition or WAF-enhanced edition ALB instance. For more information, see [CreateLoadBalancer](~~214358~~).'."\n"
."\n"
.'### Usage'."\n"
."\n"
.'**CreateAScripts** is an asynchronous operation. After you send a request, the system returns a request ID, but the programmable script is not created immediately because the creation task runs in the background. You can call [ListAScripts](~~472574~~) to query the creation status of the programmable script:'."\n"
."\n"
.'- If the programmable script is in the **Creating** state, it is being created.'."\n"
."\n"
.'- If the programmable script is in the **Available** state, it has been created.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'CreateAcl' => [
'summary' => 'Creates an access control list (ACL) in a specified region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'abilityTreeCode' => '131',
'abilityTreeNodes' => ['FEATUREslbAYSA83'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [
[
'name' => 'AclName',
'in' => 'query',
'schema' => ['description' => 'The name of the ACL. The name must be 2 to 128 characters in length, and can contain digits, periods (.), underscores (\\_), hyphens (-), letters, and Chinese characters. The name must start with a letter, a Chinese character, or a digit.', 'type' => 'string', 'example' => 'test-acl', 'title' => '', 'required' => false],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'You can use the client to generate a value, but you must make sure that the value is unique among different requests. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request may be different.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3*****'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned. No ACL is created.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'required' => false],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'example' => 'rg-atstuj3rtop****', 'title' => '', 'required' => false],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags to add to the ACL.',
'type' => 'array',
'items' => [
'description' => 'This object represents a single tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => 'rg-12313',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response object.',
'type' => 'object',
'properties' => [
'AclId' => ['title' => 'AclId', 'description' => 'The ID of the ACL.', 'type' => 'string', 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'QuotaExceeded.AclsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'NotExist.ResourceGroup', 'errorMessage' => 'ResourceGroup does not exist.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'ACL authentication has failed.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","type":"json"}]',
'title' => 'CreateAcl',
'description' => '**CreateAcl** is an asynchronous operation. After you send a request, the system returns an instance ID and starts to create the ACL in the background. You can call the [ListAcls](~~213617~~) operation to query the status of the ACL.'."\n"
."\n"
.'- If the ACL is in the **Creating** state, the ACL is being created.'."\n"
."\n"
.'- If the ACL is in the **Available** state, the ACL is available for use.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/*'],
],
],
],
],
],
'CreateHealthCheckTemplate' => [
'summary' => 'Create a health check template in a specified region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'readAndWrite',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'abilityTreeCode' => '149',
'abilityTreeNodes' => ['FEATUREslb6RAQIN'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['description' => 'The client token used to ensure the idempotence of the request.'."\n"
."\n"
.'You can generate this token, but you must ensure that it is unique across requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the `RequestId` of the request as the client token. Each API request has a unique `RequestId`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'HealthCheckTemplateName',
'in' => 'query',
'schema' => ['description' => 'The name of the health check template.'."\n"
."\n"
.'The name must be 2 to 128 characters in length, must start with a letter, a digit, or a Chinese character, and can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'HealthCheckTemplate1'],
],
[
'name' => 'HealthCheckConnectPort',
'in' => 'query',
'schema' => ['description' => 'The port used for health checks.'."\n"
."\n"
.'Valid values: **0** to **65535**.'."\n"
."\n"
.'Default value: **0**. This value indicates that the port of a backend server is used for health checks.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '80'],
],
[
'name' => 'HealthCheckHost',
'in' => 'query',
'schema' => ['description' => 'The domain name used for the health check. Valid values:'."\n"
."\n"
.'- **$SERVER\\_IP**: The private IP address of a backend server. If you set this parameter to `$SERVER_IP` or leave it empty, the load balancer uses the private IP address of the backend server as the domain name for the health check.'."\n"
."\n"
.'- **domain**: The domain name must be 1 to 80 characters in length and can contain letters, digits, periods (.), and hyphens (-).'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '$SERVER_IP'],
],
[
'name' => 'HealthCheckCodes',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The HTTP status codes that indicate a successful health check.',
'type' => 'array',
'items' => ['description' => 'The HTTP status codes that indicate a successful health check.'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can specify **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. You can specify multiple HTTP status codes. Separate them with commas (,).'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **gRPC**, the valid status codes are from **0** to **99**. The default value is **0**. You can specify up to 20 value ranges. Separate them with commas (,).'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'required' => false, 'example' => 'http_2xx', 'title' => ''],
'required' => false,
'example' => '5',
],
],
[
'name' => 'HealthCheckInterval',
'in' => 'query',
'schema' => ['description' => 'The interval at which health checks are performed.'."\n"
."\n"
.'Valid values: **1** to **50**. Unit: seconds.'."\n"
."\n"
.'Default value: **2**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'],
],
[
'name' => 'HealthCheckTimeout',
'in' => 'query',
'schema' => ['description' => 'The timeout period for a health check response. If a backend server does not respond within this period, the health check fails.'."\n"
."\n"
.'Valid values: **1** to **300**. Unit: seconds.'."\n"
."\n"
.'Default value: **5**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '5'],
],
[
'name' => 'HealthCheckPath',
'in' => 'query',
'schema' => ['title' => 'uri', 'description' => 'The URL that is used for health checks.'."\n"
."\n"
.'The URL must be 1 to 80 characters in length. It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `- / . % ? # & _;~!()*[]@$^:\',+`.'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'required' => false, 'example' => '/test/index.html'],
],
[
'name' => 'HealthCheckMethod',
'in' => 'query',
'schema' => ['description' => 'The method used for the health check. Valid values:'."\n"
."\n"
.'- **HEAD** (default): For HTTP and HTTPS listeners, the default health check method is HEAD.'."\n"
."\n"
.'- **POST**: For gRPC listeners, the default health check method is POST.'."\n"
."\n"
.'- **GET**: If the response body exceeds 8 KB, it is truncated. This does not affect the health check result.'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HEAD'],
],
[
'name' => 'HealthCheckProtocol',
'in' => 'query',
'schema' => ['description' => 'The protocol used for the health check. Valid values:'."\n"
."\n"
.'- **HTTP** (default): simulates browser access by sending HEAD or GET requests to check whether the server application is healthy.'."\n"
."\n"
.'- **HTTPS**: simulates browser access by sending HEAD or GET requests to check whether the server application is healthy. HTTPS provides encrypted data transmission and is more secure than HTTP.'."\n"
."\n"
.'- **TCP**: checks whether the server port is responsive by sending SYN packets.'."\n"
."\n"
.'- **gRPC**: checks whether the server application is healthy by sending POST or GET requests.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP'],
],
[
'name' => 'HealthCheckHttpVersion',
'in' => 'query',
'schema' => ['description' => 'The version of the HTTP protocol that is used for the health check.'."\n"
."\n"
.'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
."\n"
.'Default value: **HTTP1.1**.'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP 1.0'],
],
[
'name' => 'HealthyThreshold',
'in' => 'query',
'schema' => ['description' => 'The number of consecutive successful health checks required to change the health status of a backend server from **unhealthy** to **healthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '4'],
],
[
'name' => 'UnhealthyThreshold',
'in' => 'query',
'schema' => ['description' => 'The number of consecutive failed health checks required to change the health status of a backend server from **healthy** to **unhealthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '4'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run. The system checks the request for potential issues, including missing required parameters, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned. The resource is not created.'."\n"
."\n"
.'- **false** (default): Sends a normal request. If the request is valid, a 2xx HTTP status code is returned and the health check template is created.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The health check template object.',
'type' => 'object',
'properties' => [
'HealthCheckTemplateId' => ['description' => 'The ID of the health check template.', 'type' => 'string', 'title' => '', 'example' => 'hct-pno8sisi******'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'QuotaExceeded.HealthCheckTemplatesNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
],
403 => [
['errorCode' => 'Forbidden.HealthCheckTemplate', 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"HealthCheckTemplateId\\": \\"hct-pno8sisi******\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34******\\"\\n}","type":"json"}]',
'title' => 'CreateHealthCheckTemplate',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateHealthCheckTemplate',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/*'],
],
],
],
],
],
'CreateListener' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '186',
'abilityTreeNodes' => ['FEATUREslbM7ALO6', 'FEATUREslbK3ZR0L', 'FEATUREslbN5IE4S'],
],
'parameters' => [
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-n5qw04uq8vavfe****', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'A client-generated token that is used to ensure the idempotency of the request. The token must be unique across different requests and can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the API request as the **ClientToken**. The **RequestId** is unique for each API request.', 'type' => 'string', 'example' => '123e4567-e89b-12d3-a456-426655440000', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run to check the request for potential issues, including required parameters, request format, and service limits. The listener is not created. If the request fails the check, the system returns an error. If the request passes the check, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): Sends the request. If the request passes the check, the system performs the operation and returns an HTTP 2xx status code.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'ListenerProtocol',
'in' => 'query',
'schema' => ['description' => 'The listener protocol.'."\n"
."\n"
.'Valid values: **HTTP**, **HTTPS**, and **QUIC**.', 'type' => 'string', 'required' => true, 'example' => 'HTTP', 'title' => ''],
],
[
'name' => 'ListenerPort',
'in' => 'query',
'schema' => ['description' => 'The frontend port used by the listener.'."\n"
."\n"
.'Valid values: **1** to **65535**.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '80'],
],
[
'name' => 'ListenerDescription',
'in' => 'query',
'schema' => ['description' => 'A custom name for the listener.'."\n"
."\n"
.'The name must be 2 to 256 characters long and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), underscores (\\_), and Chinese characters.', 'type' => 'string', 'example' => 'HTTP_80', 'title' => '', 'required' => false],
],
[
'name' => 'RequestTimeout',
'in' => 'query',
'schema' => ['description' => 'The request timeout in seconds.'."\n"
."\n"
.'Valid values: **1** to **600**.'."\n"
."\n"
.'Default value: **60**.'."\n"
."\n"
.'If a backend server does not respond within the timeout period, the load balancer returns an `HTTP 504` error to the client.'."\n"
."\n"
.'> You can request a quota increase to a maximum of 3,600 seconds.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '1', 'example' => '60', 'default' => '60', 'title' => '', 'required' => false],
],
[
'name' => 'IdleTimeout',
'in' => 'query',
'schema' => ['description' => 'The idle timeout in seconds.'."\n"
."\n"
.'Valid values: **1** to **600**.'."\n"
."\n"
.'Default value: **15**.'."\n"
."\n"
.'If no requests are received on a connection within the idle timeout, the load balancer closes the connection. A new connection is established for the next request.'."\n"
."\n"
.'> You can request a quota increase to a maximum of 3,600 seconds.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '1', 'example' => '3', 'default' => '15', 'title' => '', 'required' => false],
],
[
'name' => 'GzipEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable `Gzip` compression to compress specific types of files. Valid values:'."\n"
."\n"
.'- **true** (default): Enables Gzip compression.'."\n"
."\n"
.'- **false**: Disables Gzip compression.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'Http2Enabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable `HTTP/2`. Valid values:'."\n"
."\n"
.'- **true** (default): Enables HTTP/2.'."\n"
."\n"
.'- **false**: Disables HTTP/2.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'SecurityPolicyId',
'in' => 'query',
'schema' => ['description' => 'The ID of the security policy. Both system and custom security policies are supported.'."\n"
."\n"
.'Default value: **tls\\_cipher\\_policy\\_1\\_0** (a system security policy).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'example' => 'tls_cipher_policy_1_0', 'title' => '', 'required' => false],
],
[
'name' => 'CaEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable mutual authentication. Valid values:'."\n"
."\n"
.'- **true**: Enables mutual authentication.'."\n"
."\n"
.'- **false** (default): Disables mutual authentication.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'XForwardedForConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The configuration of `X-Forwarded-*` headers.',
'type' => 'object',
'properties' => [
'XForwardedForClientCertClientVerifyAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters long and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_client-verify-alias_123456'],
'XForwardedForClientCertClientVerifyEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Cert-Client-Verify` header to retrieve the client certificate\'s verification result. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForClientCertFingerprintAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters long and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_finger-print-alias_123456'],
'XForwardedForClientCertFingerprintEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Cert-Fingerprint` header to retrieve the fingerprint of the client certificate. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForClientCertIssuerDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters long and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_issue-dn-alias_123456'],
'XForwardedForClientCertIssuerDNEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Cert-Issuer-DN` header to retrieve information about the issuer of the client certificate. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForClientCertSubjectDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters long and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_subject-dn-alias_123456'],
'XForwardedForClientCertSubjectDNEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Cert-Subject-DN` header to retrieve information about the owner of the client certificate. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForClientSrcPortEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Srcport` header to retrieve the source port of the client. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve the client IP address. Valid values:'."\n"
."\n"
.'- **true** (default): Enables this feature.'."\n"
."\n"
.'- **false**: Disables this feature.'."\n"
."\n"
.'> 1. If you set this parameter to **true**, the default value of **XForwardedForProcessingMode** is **append**. You can change the value to **remove**.'."\n"
.'>'."\n"
.'> 2. If you set this parameter to **false**, ALB retains the `X-Forwarded-For` header and does not perform additional processing before sending the request to a backend server.'."\n"
.'>'."\n"
.'> 3. This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForProcessingMode' => ['description' => 'The mode used to process the `X-Forwarded-For` header. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
."\n"
.'- **append** (default): Appends the IP address of the last hop to the `X-Forwarded-For` header.'."\n"
."\n"
.'- **remove**: Deletes the `X-Forwarded-For` header.'."\n"
."\n"
.'> 1. If you set the value to **append**, ALB adds the IP address of the last hop to the `X-Forwarded-For` header before sending a request to a backend server.'."\n"
.'>'."\n"
.'> 2. If you set the value to **remove**, ALB deletes the `X-Forwarded-For` header before sending a request to a backend server, regardless of whether the request contains an `X-Forwarded-For` header.'."\n"
.'>'."\n"
.'> 3. This parameter is available for HTTP and HTTPS listeners.', 'type' => 'string', 'required' => false, 'example' => 'append', 'title' => ''],
'XForwardedForProtoEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Proto` header to retrieve the listener protocol of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForSLBIdEnabled' => ['description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForSLBPortEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Port` header to retrieve the listener port of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientSourceIpsEnabled' => ['description' => 'Specifies whether to allow ALB to retrieve the client IP address from the X-Forwarded-For header. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
'XForwardedForClientSourceIpsTrusted' => ['description' => 'Specifies the trusted proxy IP addresses.'."\n"
."\n"
.'ALB traverses the `X-Forwarded-For` header from right to left, selecting the first IP address not in this trusted list as the client IP address. This IP is then used for features such as source IP-based throttling.', 'type' => 'string', 'required' => false, 'example' => '10.1.1.0/24', 'title' => ''],
'XForwardedForHostEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the domain name that is used to access the ALB instance. Valid values:'."\n"
."\n"
.'- **true**: Enables this feature.'."\n"
."\n"
.'- **false** (default): Disables this feature.'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'QuicConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The configuration of the associated QUIC listener.',
'type' => 'object',
'properties' => [
'QuicListenerId' => ['description' => 'The ID of the QUIC listener to associate with the listener. This parameter is required for HTTPS listeners when **QuicUpgradeEnabled** is set to **true**.'."\n"
."\n"
.'> The HTTPS listener and the associated QUIC listener must belong to the same ALB instance, and the QUIC listener must not be already associated with another listener.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'lsn-o4u54y73wq7b******'],
'QuicUpgradeEnabled' => ['description' => 'Specifies whether to enable QUIC upgrade. Valid values:'."\n"
."\n"
.'- **true**: Enables QUIC upgrade.'."\n"
."\n"
.'- **false** (default): Disables QUIC upgrade.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'Certificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of server certificates.',
'type' => 'array',
'items' => [
'description' => 'The certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the default server certificate. Only one default server certificate is supported.'."\n"
."\n"
.'> - This parameter is required if **ListenerProtocol** is set to **HTTPS** or **QUIC**.'."\n"
.'>'."\n"
.'> - To associate additional certificates, call the [AssociateAdditionalCertificatesWithListener](~~2254830~~) operation after the listener is created.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '103705*******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 1,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'CaCertificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of CA certificates for the listener. Only one CA certificate is supported.',
'type' => 'array',
'items' => [
'description' => 'The CA certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the CA certificate.'."\n"
."\n"
.'> This parameter is required if **CaEnabled** is set to **true**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123157*******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 1,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'DefaultActions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The default actions for the listener.',
'type' => 'array',
'items' => [
'description' => 'The list of default actions.',
'type' => 'object',
'properties' => [
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the forward action. You can specify up to 20 forward actions.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The destination server groups.',
'type' => 'array',
'items' => [
'description' => 'The destination server groups.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the destination server group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'sgp-8ilqs4axp6******'],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'example' => '',
],
],
'required' => true,
'example' => '',
],
'Type' => ['description' => 'The type of action.'."\n"
."\n"
.'Set this to **ForwardGroup** to forward requests to one or more server groups.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ForwardGroup'],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'A list of tags to add to the listener.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The key can be up to 128 characters long and cannot start with `aliyun` or `acs:`, or contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The value can be up to 128 characters long and cannot start with `aliyun` or `acs:`, or contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'Details of the created listener',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'Asynchronous task ID', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'ListenerId' => ['description' => 'Listener ID', 'type' => 'string', 'title' => '', 'example' => 'lsn-o4u54y73wq7b******'],
'RequestId' => ['title' => '', 'description' => 'Request ID', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876*******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceAlreadyExist.Listener', 'errorMessage' => 'The specified resource %s is already exist.', 'description' => ''],
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerListenersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['errorCode' => 'OperationDenied.CrossLoadBalancerQUICListener', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'ResourceAlreadyAssociated.Listener', 'errorMessage' => 'The specified resource %s is already associated.', 'description' => 'The specified resource %s is already associated.'],
['errorCode' => 'ResourceQuotaExceeded.SecurityPolicyAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s. Usage: %s/%s.'],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'OperationDenied.ServerGroupProtocolNotSupport', 'errorMessage' => 'The operation is not allowed because of ServerGroupProtocolNotSupport.', 'description' => 'The operation is not allowed because the server group protocol is not supported.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'InvalidParameter', 'errorMessage' => 'Invalid parameter, please check the parameter input.', 'description' => 'Invalid parameter, please check the parameter input.'],
['errorCode' => 'OperationDenied.CACertificateCorrupted', 'errorMessage' => 'The CA certificate is corrupted.', 'description' => 'CA certificate is corrupted'],
],
403 => [
['errorCode' => 'Forbidden.SecurityPolicy', 'errorMessage' => 'Authentication has failed for SecurityPolicy.', 'description' => ''],
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
['errorCode' => 'Forbidden.Listener', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Certificate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'CreateListener',
'summary' => 'Create a listener.',
'description' => 'The **CreateListener** operation is an asynchronous operation. A successful request returns a request ID, but the listener is created in the background. Call [GetListenerAttribute](~~2254865~~) to query the listener\'s creation status:'."\n"
."\n"
.'- The **Provisioning** state indicates that the listener is being created.'."\n"
."\n"
.'- The **Running** state indicates that the listener has been created successfully.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateListener',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:ListenerProtocol', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876*******\\"\\n}","type":"json"}]',
],
'CreateLoadBalancer' => [
'summary' => 'Create an application load balancer in a specified region',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '194',
'abilityTreeNodes' => ['FEATUREslbM7ALO6'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'A client token to ensure the idempotency of the request.'."\n"
."\n"
.'You can generate a unique value from your client for each request. The `ClientToken` parameter supports only ASCII characters.'."\n"
."\n"
.'> If you omit this parameter, the system uses the **RequestId** of the request as the **ClientToken**.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run without creating the Application Load Balancer instance. The system checks for required parameters, the request format, and service limits. If the request fails the check, an error is returned. If the request passes the check, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the request passes the check, the system returns an HTTP 2xx status code and performs the operation.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'VpcId',
'in' => 'query',
'schema' => ['description' => 'The ID of the VPC for the Application Load Balancer instance.', 'type' => 'string', 'required' => true, 'example' => 'vpc-bp1b49rqrybk45nio****', 'title' => ''],
],
[
'name' => 'AddressType',
'in' => 'query',
'schema' => ['description' => 'The address type of the Application Load Balancer. Valid values:'."\n"
."\n"
.'- **Internet**: The load balancer is assigned a public IP address. Its domain name is resolved to the public IP address, allowing access from the public network.'."\n"
."\n"
.'- **Intranet**: The load balancer is assigned a private IP address. Its domain name is resolved to the private IP address, allowing access only from the private network of the VPC where the load balancer is deployed.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'Internet'],
],
[
'name' => 'LoadBalancerName',
'in' => 'query',
'schema' => ['description' => 'The name of the Application Load Balancer instance.'."\n"
."\n"
.'The name must be 2 to 128 characters long. It must start with a letter, a Chinese character, or a digit, and can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'alb1'],
],
[
'name' => 'DeletionProtectionEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable deletion protection. Valid values:'."\n"
."\n"
.'- **true**: Enables deletion protection.'."\n"
."\n"
.'- **false** (default): Disables deletion protection.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
[
'name' => 'ModificationProtectionConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The modification protection settings.',
'type' => 'object',
'properties' => [
'Reason' => ['description' => 'The reason for enabling modification protection.'."\n"
."\n"
.'The reason must be 2 to 128 characters long. It must start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-).'."\n"
."\n"
.'> This parameter is effective only when **Status** is set to **ConsoleProtection**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Managed Instance'],
'Status' => ['description' => 'The modification protection status of the Application Load Balancer instance. Valid values:'."\n"
."\n"
.'- **NonProtection**: Modification protection is disabled. If you specify a value for **Reason**, the value is cleared.'."\n"
."\n"
.'- **ConsoleProtection**: Console-based modification protection is enabled. If you specify a value for **Reason**, the value takes effect.'."\n"
."\n"
.'> If you set the value to **ConsoleProtection**, you cannot modify the instance in the Application Load Balancer console. However, you can still modify it by calling API operations.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ConsoleProtection'],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'ZoneMappings',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The mappings between availability zones and subnets. You can specify up to 10 availability zones. If the region has two or more availability zones, you must specify at least two.',
'type' => 'array',
'items' => [
'description' => 'The mappings between availability zones and subnets. You can specify up to 10 availability zones. If the region has two or more availability zones, you must specify at least two.',
'type' => 'object',
'properties' => [
'VSwitchId' => ['description' => 'The ID of the subnet in the specified availability zone. Each availability zone can be mapped to only one subnet.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'vsw-sersdf****'],
'ZoneId' => ['description' => 'The ID of the availability zone.'."\n"
.'You can call the [DescribeZones](~~36064~~) operation to query for available zones.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cn-hangzhou-a'],
'AllocationId' => ['description' => 'The ID of the Elastic IP address (EIP) to associate with the public-facing instance.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'eip-bp1aedxso6u80u0qf****'],
'EipType' => ['description' => 'The type of the Elastic IP address. Valid values:'."\n"
."\n"
.'- **Common** (default): an Elastic IP address.'."\n"
."\n"
.'- **Anycast**: an Anycast EIP.'."\n"
."\n"
.'> For regions that support binding Anycast EIPs to an Application Load Balancer instance, see [Limitations](~~460727~~).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Common'],
'IntranetAddress' => ['description' => 'The private IPv4 address.', 'type' => 'string', 'required' => false, 'example' => '192.168.10.1', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 10,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'AddressAllocatedMode',
'in' => 'query',
'schema' => ['description' => 'The address allocation mode. Valid values:'."\n"
."\n"
.'- **Fixed** (default): A static IP address is assigned to each availability zone.'."\n"
."\n"
.'- **Dynamic**: An IP address is dynamically assigned to each availability zone.'."\n"
."\n"
.'> Starting from 00:00:00 on February 25, 2025 (Beijing time)00:00:00 on February 25, 2025 (UTC+8), all instances created by calling this API will be [upgraded ALB instances](~~2864070~~) regardless of the mode you specify. IP modes are no longer distinguished, and the allocated IP addresses scale automatically. Existing ALB instances created before the upgrade are not affected.', 'type' => 'string', 'default' => 'Fixed', 'title' => '', 'required' => false, 'example' => 'Fixed'],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-atstuj3rtop****'],
],
[
'name' => 'LoadBalancerEdition',
'in' => 'query',
'schema' => ['description' => 'The edition of the Application Load Balancer. Different editions have different features and billing policies. Valid values:'."\n"
."\n"
.'- **Basic**: Basic edition.'."\n"
."\n"
.'- **Standard**: Standard edition.'."\n"
."\n"
.'- **StandardWithWaf**: WAF-enabled edition.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'Standard'],
],
[
'name' => 'LoadBalancerBillingConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The billing configuration of the Application Load Balancer instance.',
'type' => 'object',
'properties' => [
'PayType' => ['description' => 'The billing method of the instance.'."\n"
."\n"
.'Set the value to **PostPay** for pay-as-you-go.', 'type' => 'string', 'required' => true, 'default' => 'PostPay', 'title' => '', 'example' => 'PostPay'],
'BandwidthPackageId' => ['description' => 'The ID of the shared bandwidth package that is associated with the public-facing instance.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'cbwp-bp1vevu8h3ieh****'],
],
'required' => true,
'example' => '',
],
],
[
'name' => 'AddressIpVersion',
'in' => 'query',
'schema' => ['description' => 'The protocol version. Valid values:'."\n"
."\n"
.'- **IPv4**: IPv4.'."\n"
."\n"
.'- **DualStack**: The instance supports both IPv4 and IPv6.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'IPv4'],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags to add to the instance.',
'type' => 'array',
'items' => [
'description' => 'The tag structure.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The key can be up to 128 characters long, cannot start with aliyun or acs:, and cannot contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The value can be up to 128 characters long, cannot start with aliyun or acs:, and cannot contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'SecurityGroupIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'SecurityGroupId' => ['description' => 'The ID of the security group.', 'type' => 'string', 'example' => 'sg-gw82chzr7ru23iwbn9mu', 'title' => '', 'required' => false],
],
'title' => '',
'description' => 'The IDs of the security groups to associate with the instance.',
'required' => false,
'example' => '',
],
'title' => '',
'description' => 'The IDs of the security groups to associate with the instance.',
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The response from creating an Application Load Balancer instance.',
'type' => 'object',
'properties' => [
'LoadBalancerId' => ['description' => 'The Application Load Balancer instance ID.', 'type' => 'string', 'title' => '', 'example' => 'alb-o9ulmq5hqn68jk****'],
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource %s is not enough.', 'description' => 'The specified resource %s is not enough.'],
['errorCode' => 'QuotaExceeded.LoadBalancersNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'DuplicatedParam.ZoneId', 'errorMessage' => 'The param of ZoneId is duplicated.', 'description' => ''],
['errorCode' => 'OperationDenyed.ServiceLinkedRoleNotExist', 'errorMessage' => 'The service linked role AliyunServiceRoleForAlb does not exist.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.VSwitch', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hqn68jk****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","type":"json"}]',
'title' => 'CreateLoadBalancer',
'description' => 'The **CreateLoadBalancer** operation is asynchronous. A successful call returns an instance ID, but the application load balancer instance is created in the background. Call [GetLoadBalancerAttribute](~~214362~~) to check the creation status of the application load balancer instance:'."\n"
."\n"
.'- If the instance is in the **provisioning** state, it is being created.'."\n"
."\n"
.'- If the instance is in the **active** state, it has been created.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/*'],
],
],
],
],
],
'CreateRule' => [
'summary' => 'Creates a forwarding rule for a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '417',
'abilityTreeNodes' => ['FEATUREslbM7ALO6'],
],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the listener.', 'type' => 'string', 'required' => true, 'example' => 'lsn-l16uo9y******', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token used to ensure request idempotence.'."\n"
."\n"
.'The client must generate a unique token for each request. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the **RequestId** of the API request as the **ClientToken**. Each API request has a unique **RequestId**.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run. The system checks for potential issues, such as required parameters, request format, and service limits, without creating the forwarding rule. If the check fails, the system returns an error. If the check passes, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): Sends a normal request. If the check passes, the system performs the operation and returns an `HTTP 2xx` status code.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'Priority',
'in' => 'query',
'schema' => ['description' => 'The priority of the rule. Valid values: **1** to **10000**. A smaller value indicates a higher priority.'."\n"
."\n"
.'> The priority of each forwarding rule within the same listener must be unique.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '10'],
],
[
'name' => 'Direction',
'in' => 'query',
'schema' => ['description' => 'The direction in which the forwarding rule is applied. Valid values:'."\n"
."\n"
.'- **Request** (default): The rule matches and processes requests sent from the client to the ALB instance.'."\n"
."\n"
.'- **Response**: The rule matches and processes responses returned from server groups to the ALB instance.'."\n"
."\n"
.'> Basic ALB instances do not support the **Response** type.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Request'],
],
[
'name' => 'RuleActions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of actions for the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The actions of the forwarding rule.',
'type' => 'object',
'properties' => [
'FixedResponseConfig' => [
'title' => '',
'description' => 'The fixed response configuration.',
'type' => 'object',
'properties' => [
'Content' => ['description' => 'The content of the fixed response. The content can be up to 1 KB in size and can contain only ASCII characters.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'dssacav'],
'ContentType' => ['description' => 'The content type of the fixed response.'."\n"
."\n"
.'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, or **application/json**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'text/plain'],
'HttpCode' => ['description' => 'The HTTP response status code. Valid values are strings that represent **2xx**, **4xx**, and **5xx** status codes, where **x** is any digit.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '200'],
],
'required' => false,
'example' => '',
],
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration for forwarding requests to one or more server groups.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The server groups to which requests are forwarded. You can specify up to five server groups.',
'type' => 'array',
'items' => [
'description' => 'The configuration for a server group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sgp-k86c1ov501id6p****'],
'Weight' => ['description' => 'The weight of the server group. A server group with a higher weight receives more requests. Valid values: **0** to **100**.'."\n"
."\n"
.'- If you specify only one server group, the default weight is **100**.'."\n"
."\n"
.'- If you specify more than one server group, you must specify a weight for each group.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '0', 'title' => '', 'required' => false, 'example' => '100'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'ServerGroupStickySession' => [
'title' => '',
'description' => 'The session persistence configuration.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
."\n"
.'- **true**: Enables session persistence.'."\n"
."\n"
.'- **false** (default): Disables session persistence.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'Timeout' => ['description' => 'The timeout period, in seconds. Valid values: **1** to **86400**. Default: **1000**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '100'],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'InsertHeaderConfig' => [
'title' => '',
'description' => 'The header insertion configuration.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The name of the header to be inserted. The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). Header names must be unique within this action.'."\n"
."\n"
.'> The following header names are not allowed (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`, `authority`, and `x-forwarded-host`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the header to be inserted.'."\n"
."\n"
.'- If **ValueType** is set to **SystemDefined**, you can set the value to one of the following:'."\n"
."\n"
.' - **ClientSrcPort**: The source port of the client.'."\n"
."\n"
.' - **ClientSrcIp**: The source IP address of the client.'."\n"
."\n"
.' - **Protocol**: The request protocol (HTTP or HTTPS).'."\n"
."\n"
.' - **SLBId**: The ID of the ALB instance.'."\n"
."\n"
.' - **SLBPort**: The listener port of the ALB instance.'."\n"
."\n"
.'- If **ValueType** is set to **UserDefined**, you can specify a custom header value. The value must be 1 to 128 characters in length and can contain printable characters with an ASCII value in the range of `ch >= 32 && ch < 127`. You can use asterisks (\\*) and question marks (?) as wildcards. The value cannot contain double quotation marks (`"`), start or end with a space, or end with a backslash (`\\`).'."\n"
."\n"
.'- If **ValueType** is set to **ReferenceHeader**, you can reference a request header. The value must be 1 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'UserDefined'],
'ValueType' => ['description' => 'The type of the header value. Valid values:'."\n"
."\n"
.'- **UserDefined**: A user-defined header value.'."\n"
."\n"
.'- **ReferenceHeader**: A value that is referenced from a request header.'."\n"
."\n"
.'- **SystemDefined**: A system-defined header value.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'UserDefined'],
],
'required' => false,
'example' => '',
],
'Order' => ['description' => 'The execution order of the action. Valid values: **1** to **50000**. Actions are executed in ascending order of this value. Each action must have a unique order value.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '1'],
'RedirectConfig' => [
'title' => '',
'description' => 'The redirect configuration.'."\n"
."\n"
.'> You must specify a non-default value for at least one of the following parameters: **Host**, **Path**, **Port**, **Protocol**, or **Query**.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The host to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${host}** (default): This value cannot be used with other characters.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The host must be 3 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), carets (^), exclamation points (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), square brackets (\\[]), and question marks (?).'."\n"
."\n"
.' - The host must contain at least one period (.) and cannot start or end with a period (.).'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcards, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
."\n"
.' - A domain label cannot start or end with a hyphen (-).'."\n"
."\n"
.' - You can use asterisks (\\*) and question marks (?) as wildcards anywhere in a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${host}'],
'HttpCode' => ['description' => 'The redirect type. Valid values: **301**, **302**, **303**, **307**, or **308**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '301'],
'Path' => ['description' => 'The path to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be used only once. These variables can be used together or combined with strings that are in the valid value range.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The path must be 1 to 128 characters in length, case-sensitive, and can contain asterisks (\\*) and question marks (?) as wildcards.'."\n"
."\n"
.' - The path must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`. It can also contain asterisks (\\*) and question marks (?) as wildcards.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/test'],
'Port' => ['description' => 'The port to which requests are redirected.'."\n"
."\n"
.'- **${port}** (default): This value cannot be used with other characters.'."\n"
."\n"
.'- Other values: **1** to **63335**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '10'],
'Protocol' => ['description' => 'The protocol to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${protocol}** (default): This value must be used as-is and cannot be modified or used with other characters.'."\n"
."\n"
.'- **HTTP**'."\n"
."\n"
.'- **HTTPS**'."\n"
."\n"
.'> * HTTPS listeners can redirect requests only over HTTPS.'."\n"
.'>'."\n"
.'> * HTTP listeners can redirect requests over HTTP or HTTPS.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP'],
'Query' => ['description' => 'The query string to which requests are redirected.'."\n"
."\n"
.'- **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be used only once. These variables can be used together or combined with strings that are in the valid value range.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - It can contain printable characters but cannot contain spaces or the following special characters: `#[]{}\\|<>"`. Letters must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'RewriteConfig' => [
'title' => '',
'description' => 'The rewrite configuration.'."\n"
."\n"
.'> If a forwarding rule contains a **Rewrite** action, it must also contain a **ForwardGroup** action.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host for the internal redirect. Valid values:'."\n"
."\n"
.'- **${host}** (default): This value cannot be used with other characters.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The host must be 3 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), carets (^), exclamation points (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), square brackets (\\[]), and question marks (?).'."\n"
."\n"
.' - The host must contain at least one period (.) and cannot start or end with a period (.).'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcards, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
."\n"
.' - A domain label cannot start or end with a hyphen (-). You can use asterisks (\\*) and question marks (?) as wildcards anywhere in a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'www.example.com'],
'Path' => ['description' => 'The path for the internal redirect. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be used only once. These variables can be used together or combined with strings that are in the valid value range.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The path must be 1 to 128 characters in length, case-sensitive, and can contain asterisks (\\*) and question marks (?) as wildcards.'."\n"
."\n"
.' - The path must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`. It can also contain asterisks (\\*) and question marks (?) as wildcards.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/tsdf'],
'Query' => ['description' => 'The query string for the internal redirect.'."\n"
."\n"
.'- **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be used only once. These variables can be used together or combined with strings that are in the valid value range.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - It can contain printable characters but cannot contain spaces or the following special characters: `#[]{}\\|<>"`. Letters must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The type of the action. Valid values:'."\n"
."\n"
.'- **ForwardGroup**: Forwards requests to multiple server groups.'."\n"
."\n"
.'- **Redirect**: Redirects a request.'."\n"
."\n"
.'- **FixedResponse**: Returns a fixed response.'."\n"
."\n"
.'- **Rewrite**: Rewrites a request.'."\n"
."\n"
.'- **InsertHeader**: Inserts a header.'."\n"
."\n"
.'- **RemoveHeader**: Removes a header.'."\n"
."\n"
.'- **TrafficLimit**: Throttles traffic.'."\n"
."\n"
.'- **TrafficMirror**: Mirrors traffic.'."\n"
."\n"
.'- **Cors**: Enables cross-origin resource sharing (CORS).'."\n"
."\n"
.'> A forwarding rule must contain one of the following actions: **ForwardGroup**, **Redirect**, or **FixedResponse**. This terminating action must be the last one executed in the rule.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ForwardGroup'],
'TrafficLimitConfig' => [
'title' => '',
'description' => 'The traffic throttling configuration.',
'type' => 'object',
'properties' => [
'QPS' => ['description' => 'The number of queries per second (QPS). Valid values: **1** to **1000000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''],
'PerIpQps' => ['description' => 'The number of QPS for each source IP address. Valid values: **1** to **1000000**.'."\n"
."\n"
.'> If you also configure **QPS**, the value of **PerIpQps** must be smaller than the value of **QPS**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '80', 'title' => ''],
],
'required' => false,
'example' => '',
],
'TrafficMirrorConfig' => [
'title' => '',
'description' => 'The traffic mirroring configuration.',
'type' => 'object',
'properties' => [
'TargetType' => ['description' => 'The type of the destination to which traffic is mirrored. Valid values:'."\n"
."\n"
.'- **ForwardGroupMirror**: Mirrors traffic to a server group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ForwardGroupMirror'],
'MirrorGroupConfig' => [
'title' => '',
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'array',
'items' => [
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => false, 'example' => 'sgp-00mkgijak0w4qgz9****', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'RemoveHeaderConfig' => [
'title' => '',
'description' => 'The header removal configuration.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The name of the header to be removed. The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). Header names cannot be duplicated in `RemoveHeaderConfig`.'."\n"
."\n"
.'- For requests (`Direction` is `Request`): The following header names are not allowed (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`, `authority`, and `x-forwarded-host`.'."\n"
."\n"
.'- For responses (`Direction` is `Response`): The following header names are not allowed (case-insensitive): `connection`, `upgrade`, `content-length`, and `transfer-encoding`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'example' => '',
],
'CorsConfig' => [
'title' => '',
'description' => 'The cross-origin resource sharing (CORS) configuration.',
'type' => 'object',
'properties' => [
'AllowOrigin' => [
'title' => '',
'description' => 'The list of allowed origins. You can specify a single value of `*`, or one or more specific values.'."\n"
."\n"
.'- A specific value must start with `http://` or `https://`, followed by a valid domain or a wildcard domain. (Example: `http://*.test.abc.example.com`)'."\n"
."\n"
.'- A value can either omit the port or specify a port in the range of **1** to **65535**.',
'type' => 'array',
'items' => ['description' => 'The allowed origin.', 'type' => 'string', 'required' => false, 'example' => 'http://example.com', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowMethods' => [
'title' => '',
'description' => 'The allowed HTTP methods for CORS requests.',
'type' => 'array',
'items' => ['description' => 'The allowed HTTP method for CORS requests. Valid values:'."\n"
."\n"
.'- **GET**'."\n"
."\n"
.'- **POST**'."\n"
."\n"
.'- **PUT**'."\n"
."\n"
.'- **DELETE**'."\n"
."\n"
.'- **HEAD**'."\n"
."\n"
.'- **OPTIONS**'."\n"
."\n"
.'- **PATCH**', 'type' => 'string', 'required' => false, 'example' => 'GET', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowHeaders' => [
'title' => '',
'description' => 'The list of allowed headers for CORS.',
'type' => 'array',
'items' => ['description' => 'The allowed header. You can specify a single value of `*` or a specific header name. The name can be up to 32 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). Underscores (\\_) and hyphens (-) cannot be the first or last character.', 'type' => 'string', 'required' => false, 'example' => 'test_123', 'title' => ''],
'required' => false,
'example' => '',
],
'ExposeHeaders' => [
'title' => '',
'description' => 'The list of allowed exposed headers.',
'type' => 'array',
'items' => ['description' => 'The allowed exposed header. You can specify a single value of `*` or a specific header name. The name can be up to 32 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). Underscores (\\_) and hyphens (-) cannot be the first or last character.', 'type' => 'string', 'required' => false, 'example' => 'test_123', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowCredentials' => ['description' => 'Specifies whether to allow requests to carry credentials. Valid values:'."\n"
."\n"
.'- **on**: Allows requests to carry credentials.'."\n"
."\n"
.'- **off**: Disables carrying credentials in requests.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'on'],
'MaxAge' => ['description' => 'The maximum time, in seconds, that a preflight request can be cached by the browser.'."\n"
."\n"
.'Valid values: **-1** to **172800**.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'required' => false, 'example' => '1000'],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RuleConditions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of conditions for the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'A condition for the forwarding rule.',
'type' => 'object',
'properties' => [
'CookieConfig' => [
'title' => '',
'description' => 'The cookie configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of cookie values.',
'type' => 'array',
'items' => [
'description' => 'A cookie key-value pair.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the cookie.'."\n"
."\n"
.'- It must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, asterisks (\\*), and question marks (?). Letters must be lowercase.'."\n"
."\n"
.'- It cannot contain spaces or the following special characters: `;#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Value' => ['description' => 'The value of the cookie.'."\n"
."\n"
.'- It must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, asterisks (\\*), and question marks (?). Letters must be lowercase.'."\n"
."\n"
.'- It cannot contain spaces or the following special characters: `;#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HeaderConfig' => [
'title' => '',
'description' => 'The header configuration.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header.'."\n"
."\n"
.'- It must be 1 to 40 characters in length.'."\n"
."\n"
.'- It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'- The `Cookie` and `Host` headers are not supported.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Port'],
'Values' => [
'title' => '',
'description' => 'A list of header values.',
'type' => 'array',
'items' => ['description' => 'An HTTP header value. Header values for the same key must be unique within the condition.'."\n"
."\n"
.'- It must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters with an ASCII value in the range of `ch >= 32 && ch < 127`, asterisks (\\*), and question marks (?). It cannot contain double quotation marks (`"`).'."\n"
."\n"
.'- It cannot start or end with a space, or end with a backslash (`\\`).', 'type' => 'string', 'required' => false, 'example' => '5006', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HostConfig' => [
'title' => '',
'description' => 'The host configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of hostnames.',
'type' => 'array',
'items' => ['description' => 'The hostname.'."\n"
."\n"
.'- The hostname must be 3 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), carets (^), exclamation points (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), square brackets (\\[]), and question marks (?).'."\n"
."\n"
.'- The hostname must contain at least one period (.) and cannot start or end with a period (.).'."\n"
."\n"
.'- The rightmost domain label can contain only letters and wildcards, and cannot contain digits or hyphens (-). The leftmost `domain label` can be an asterisk (\\*).'."\n"
."\n"
.'- A domain label cannot start or end with a hyphen (-). You can use asterisks (\\*) and question marks (?) as wildcards anywhere in a domain label.'."\n"
."\n"
.'- For exact matches and wildcards, the first character cannot be a tilde (\\~).'."\n"
."\n"
.'- For regular expression matches (case-insensitive), the first character cannot be an asterisk (\\*).', 'type' => 'string', 'required' => false, 'example' => 'www.example.edu', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'MethodConfig' => [
'title' => '',
'description' => 'The request method configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of request methods.',
'type' => 'array',
'items' => ['description' => 'A request method.'."\n"
."\n"
.'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.', 'type' => 'string', 'required' => false, 'example' => 'PUT', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'PathConfig' => [
'title' => '',
'description' => 'The path configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of paths.',
'type' => 'array',
'items' => ['description' => 'A path.'."\n"
."\n"
.'- The path must be 1 to 128 characters in length, case-sensitive, and can contain asterisks (\\*) and question marks (?) as wildcards.'."\n"
."\n"
.'- For non-regular expressions, the path must start with a forward slash (/) and can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`.'."\n"
."\n"
.'- For regular expressions, the path must start with `~` and can contain letters, digits, and the following special characters: `.-_/=?~^*$:()[]+|`.', 'type' => 'string', 'required' => false, 'example' => '/test', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'QueryStringConfig' => [
'title' => '',
'description' => 'The query string configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of query strings.',
'type' => 'array',
'items' => [
'description' => 'A query string.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the query string.'."\n"
."\n"
.'- It must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, asterisks (\\*), and question marks (?). Letters must be lowercase. It cannot contain spaces or the following special characters: `#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Value' => ['description' => 'The value of the query string.'."\n"
."\n"
.'- It must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters, asterisks (\\*), and question marks (?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&"`. Letters must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseStatusCodeConfig' => [
'title' => '',
'description' => 'The response status code configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A list of response status codes.',
'type' => 'array',
'items' => ['description' => 'A response status code.', 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseHeaderConfig' => [
'title' => '',
'description' => 'The header condition configuration.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header.'."\n"
."\n"
.'- It must be 1 to 40 characters in length.'."\n"
."\n"
.'- It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'- The `Cookie` and `Host` headers are not supported.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Values' => [
'title' => '',
'description' => 'A list of header values.',
'type' => 'array',
'items' => ['description' => 'A header value.'."\n"
."\n"
.'- It must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters with an ASCII value in the range of `ch >= 32 && ch < 127`, lowercase letters, asterisks (\\*), and question marks (?). It cannot contain double quotation marks (`"`).'."\n"
."\n"
.'- It cannot start or end with a space, or end with a backslash (`\\`).', 'type' => 'string', 'required' => false, 'example' => '50006', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The forwarding rule type. Valid values:'."\n"
."\n"
.'- **Host**: host.'."\n"
."\n"
.'- **Path**: path.'."\n"
."\n"
.'- **Header**: An HTTP header.'."\n"
."\n"
.'- **QueryString**: The query string.'."\n"
."\n"
.'- **Method**: The request method.'."\n"
."\n"
.'- **Cookie**: Cookie.'."\n"
."\n"
.'- **SourceIp**: The source IP address.'."\n"
."\n"
.'- **ResponseHeader**: The response HTTP header.'."\n"
."\n"
.'- **ResponseStatusCode**: The response status code.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'Host'],
'SourceIpConfig' => [
'title' => '',
'description' => 'The configuration for matching service traffic based on the source IP. This is required and takes effect when **Type** is set to **SourceIP**.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'A service traffic matching list based on the source IP.',
'type' => 'array',
'items' => ['description' => 'Add one or more IP addresses or IP address ranges.', 'type' => 'string', 'required' => false, 'example' => '192.168.0.0/32', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RuleName',
'in' => 'query',
'schema' => ['description' => 'The name of the forwarding rule.'."\n"
."\n"
.'- The length must be 2 to 128 English or Chinese characters.'."\n"
."\n"
.'- The name must start with a letter, a Chinese character, or a number, and can contain numbers, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => true, 'example' => 'rule-doc', 'title' => ''],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'Tag list.',
'type' => 'array',
'items' => [
'description' => 'Tag structure.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key can be up to 128 characters in length and cannot start with aliyun or acs: or contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The value cannot exceed 128 characters, start with aliyun or acs:, or contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The response body.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540750'],
'RuleId' => ['description' => 'The ID of the forwarding rule.', 'type' => 'string', 'title' => '', 'example' => 'rule-a3x3pg1yohq3lq****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'Conflict.Priority', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerRulesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleWildcardsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'."\n"],
['errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleActionsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['errorCode' => 'Mismatch.Protocol', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'OperationDenied.RewriteMissingForwardGroup', 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.', 'description' => 'The operation is not allowed because rewrite is missing the forward group.'],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified listener is being configured, please try again later.', 'description' => ''],
['errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly', 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.', 'description' => ''],
['errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction', 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540750\\",\\n \\"RuleId\\": \\"rule-a3x3pg1yohq3lq****\\"\\n}","type":"json"}]',
'title' => 'CreateRule',
'description' => 'When calling this operation to create a forwarding rule, note the following:'."\n"
."\n"
.'- When you configure the **Redirect** action, you must set at least one parameter other than **HttpCode** to a non-default value.'."\n"
."\n"
.'- If you specify a **Rewrite** action together with other actions in a forwarding rule, you must also specify a **ForwardGroup** action.'."\n"
."\n"
.'- The **CreateRule** operation is asynchronous. After you send a request, the system returns a request ID and runs the creation task in the background. The forwarding rule is not created immediately. To query its status, call the [ListRules](~~214379~~) operation:'."\n"
."\n"
.' - If a forwarding rule is in the **Provisioning** state, the rule is being created.'."\n"
."\n"
.' - If a forwarding rule is in the **Available** state, the rule has been created successfully.'."\n"
."\n"
.'- A forwarding rule has the following limits for conditions (**RuleConditions**) and actions (**RuleActions**):'."\n"
."\n"
.' - **Conditions**: 5 for a basic Application Load Balancer (ALB) instance, 10 for a standard ALB instance, and 10 for a WAF-enabled ALB instance.'."\n"
."\n"
.' - **Actions**: 3 for a basic ALB instance, 5 for a standard ALB instance, and 5 for a WAF-enabled ALB instance.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateRule',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
],
'CreateRules' => [
'summary' => 'Creates forwarding rules in a batch.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '170',
'abilityTreeNodes' => ['FEATUREslbBIWWMH', 'FEATUREslbTXOYED', 'FEATUREslbQCCQ6L', 'FEATUREslb4T90LL', 'FEATUREslbIT4IYN', 'FEATUREslbA51OGD', 'FEATUREslbUBPZWI', 'FEATUREslbGVK35E', 'FEATUREslbYG3GCF', 'FEATUREslbRBR9GZ', 'FEATUREslbMWZQWL', 'FEATUREslbJCYSIV', 'FEATUREslbY93SFN', 'FEATUREslbVUMBEO', 'FEATUREslbZ4XFTS', 'FEATUREslb2Q6O49'],
'autoTest' => true,
],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) listener.', 'type' => 'string', 'required' => true, 'example' => 'lsn-l16uo9y******', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'Generate a value from your client to make sure that the value is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request is unique.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): Sends a normal request. After the request passes the check, a `2xx` HTTP status code is returned and the forwarding rules are created.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'Rules',
'in' => 'formData',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The forwarding rules.',
'type' => 'array',
'items' => [
'description' => 'The forwarding rule.',
'type' => 'object',
'properties' => [
'Priority' => ['description' => 'The priority of the forwarding rule.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '1'],
'RuleActions' => [
'title' => '',
'description' => 'The actions of the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The action of the forwarding rule.',
'type' => 'object',
'properties' => [
'FixedResponseConfig' => [
'title' => '',
'description' => 'The configuration of the action to return a fixed response.',
'type' => 'object',
'properties' => [
'Content' => ['description' => 'The fixed response. The response can be up to 1 KB in size and can contain only ASCII characters.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'ContentType' => ['description' => 'The format of the fixed response.'."\n"
."\n"
.'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'text/plain'],
'HttpCode' => ['description' => 'The HTTP status code of the response. Valid values are **2xx**, **4xx**, and **5xx**. **x** is a digit.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '200'],
],
'required' => false,
'example' => '',
],
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the action to forward requests to vServer groups.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The destination vServer groups.',
'type' => 'array',
'items' => [
'description' => 'The destination vServer group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The vServer group ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sgp-ffm94ovy7lqw******'],
'Weight' => ['description' => 'The weight. A larger value specifies a higher weight. More requests are forwarded to the vServer group with a higher weight. Valid values: **0** to **100**.'."\n"
."\n"
.'- If you specify only one destination vServer group, the default value of this parameter is **100**.'."\n"
."\n"
.'- If you specify multiple destination vServer groups, you must specify a weight for each vServer group.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '0', 'title' => '', 'required' => false, 'example' => '100'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'ServerGroupStickySession' => [
'title' => '',
'description' => 'Session persistence for vServer groups.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
."\n"
.'- **true**: enables session persistence.'."\n"
."\n"
.'- **false** (default): disables session persistence.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'Timeout' => ['description' => 'The timeout period. Unit: seconds. Valid values: **1** to **86400**. Default value: **1000**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '30'],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'InsertHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the action to insert a header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header to be inserted. The key can be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys in **InsertHeaderConfig** cannot be the same.'."\n"
."\n"
.'> The following header keys are not supported (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`, `authority`, and `x-forwarded-host`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the header to be inserted.'."\n"
."\n"
.'- **ValueType** is set to **SystemDefined**, you can specify one of the following values:'."\n"
."\n"
.' - **ClientSrcPort**: the client port.'."\n"
."\n"
.' - **ClientSrcIp**: the client IP address.'."\n"
."\n"
.' - **Protocol**: the protocol of the client request (HTTP or HTTPS).'."\n"
."\n"
.' - **SLBId**: the ID of the ALB instance.'."\n"
."\n"
.' - **SLBPort**: the listening port of the ALB instance.'."\n"
."\n"
.'- If **ValueType** is set to **UserDefined**, you can specify a custom header value. The value must be 1 to 128 characters in length, and can contain wildcard characters, including asterisks (\\*) and question marks (?). It can also contain printable characters with an ASCII value of `ch >= 32 && ch < 127`. The value cannot start or end with a space. The value cannot end with a `\\`. The value cannot contain `"`.'."\n"
."\n"
.'- If **ValueType** is set to **ReferenceHeader**, you can reference a field in the request header. The value must be 1 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'value'],
'ValueType' => ['description' => 'The type of the header value. Valid values:'."\n"
."\n"
.'- **UserDefined**: You can specify a custom header value.'."\n"
."\n"
.'- **ReferenceHeader**: You can reference a field in the request header.'."\n"
."\n"
.'- **SystemDefined**: The value is a system-defined value.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'SystemDefined'],
],
'required' => false,
'example' => '',
],
'Order' => ['description' => 'The order of the action. Valid values: 1 to **50000**. The actions are performed in ascending order. The value must be unique.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '1'],
'RedirectConfig' => [
'title' => '',
'description' => 'The configuration for the redirection action.'."\n"
."\n"
.'> You cannot use default values for all parameters of **RedirectConfig** except **httpCode**.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination hostname. Valid values:'."\n"
."\n"
.'- **${host}** (default): You cannot append other characters to this value.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), wildcard characters (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), circumflex accents (^), exclamation marks (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), brackets (\\[]), and question marks (?).'."\n"
."\n"
.' - The hostname must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-). The leftmost `domainlable` can be an asterisk (\\*).'."\n"
."\n"
.' - A hyphen (-) cannot be the first or last character of a domain label.'."\n"
."\n"
.' - Wildcard characters, including asterisks (\\*) and question marks (?), can be placed at any position of a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${host}'],
'HttpCode' => ['description' => 'The redirection method. Valid values: **301**, **302**, **303**, **307**, and **308**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '301'],
'Path' => ['description' => 'The destination path. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be referenced only once. You can use these variables together or combine them with the strings that are specified in the following list.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length, case-sensitive, and can contain wildcard characters, including asterisks (\\*) and question marks (?).'."\n"
."\n"
.' - The value must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`. It can contain wildcard characters, including asterisks (\\*) and question marks (?).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/'],
'Port' => ['description' => 'The destination port.'."\n"
."\n"
.'- **${port}** (default): You cannot use this value with other characters.'."\n"
."\n"
.'- Other values: 1 to **63335**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '443'],
'Protocol' => ['description' => 'The destination protocol. Valid values:'."\n"
."\n"
.'- **${protocol}** (default): You can only use this value. You cannot modify it or append other characters to it.'."\n"
."\n"
.'- **HTTP**'."\n"
."\n"
.'- **HTTPS**'."\n"
."\n"
.'> * HTTPS listeners support redirection to only HTTPS.'."\n"
.'>'."\n"
.'> * HTTP listeners support redirection to HTTP and HTTPS.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTPS'],
'Query' => ['description' => 'The destination query string.'."\n"
."\n"
.'- **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be referenced only once. You can use these variables together or combine them with the strings that are specified in the following list.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - The value can contain printable characters. It cannot contain spaces or the following special characters: `#[]{}\\|<>"`. If the value contains letters, the letters must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'RewriteConfig' => [
'title' => '',
'description' => 'The configuration of the rewrite action.'."\n"
."\n"
.'> If you configure multiple actions for a forwarding rule, the **RewriteConfig** action must be used with the **ForwardGroup** action type.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination hostname for the internal redirection. Valid values:'."\n"
."\n"
.'- **${host}** (default): You cannot append other characters to this value.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), wildcard characters (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), circumflex accents (^), exclamation marks (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), brackets (\\[]), and question marks (?).'."\n"
."\n"
.' - The hostname must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-). The leftmost `domainlable` can be an asterisk (\\*).'."\n"
."\n"
.' - A hyphen (-) cannot be the first or last character of a domain label. Wildcard characters, including asterisks (\\*) and question marks (?), can be placed at any position of a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'www.rewrite.alb'],
'Path' => ['description' => 'The destination path. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be referenced only once. You can use these variables together or combine them with the strings that are specified in the following list.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length, case-sensitive, and can contain wildcard characters, including asterisks (\\*) and question marks (?).'."\n"
."\n"
.' - The value must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`. It can contain wildcard characters, including asterisks (\\*) and question marks (?).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/tea'],
'Query' => ['description' => 'The query string for the internal redirection.'."\n"
."\n"
.'- **${query}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be referenced only once. You can use these variables together or combine them with the strings that are specified in the following list.'."\n"
."\n"
.'- Other values. The value must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - The value can contain printable characters. It cannot contain spaces or the following special characters: `#[]{}\\|<>"`. If the value contains letters, the letters must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The action type. Valid values:'."\n"
."\n"
.'- **ForwardGroup**: Forwards requests to multiple vServer groups.'."\n"
."\n"
.'- **Redirect**: Redirects requests.'."\n"
."\n"
.'- **FixedResponse**: Returns a fixed response.'."\n"
."\n"
.'- **Rewrite**: Rewrites requests.'."\n"
."\n"
.'- **InsertHeader**: Inserts a header.'."\n"
."\n"
.'- **RemoveHeader**: Deletes a header.'."\n"
."\n"
.'- **TrafficLimit**: Throttles traffic.'."\n"
."\n"
.'- **TrafficMirror**: Mirrors traffic.'."\n"
."\n"
.'- **Cors**: Enables cross-origin resource sharing (CORS).'."\n"
."\n"
.'> A forwarding rule must contain a **ForwardGroup**, **Redirect**, or **FixedResponse** action. If you want to use these actions with other action types, you must configure these actions to be performed last.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ForwardGroup'],
'TrafficLimitConfig' => [
'title' => '',
'description' => 'The traffic throttling configuration.',
'type' => 'object',
'properties' => [
'QPS' => ['description' => 'The number of queries per second (QPS). Valid values: **1** to **1000000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5000', 'title' => ''],
'PerIpQps' => ['description' => 'The QPS of a single IP address. Valid values: 1 to **1000000**.'."\n"
."\n"
.'> If you specify both QPS and **PerIpQps**, the value of **PerIpQps** must be smaller than the value of **QPS**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''],
],
'required' => false,
'example' => '',
],
'TrafficMirrorConfig' => [
'title' => '',
'description' => 'The traffic mirroring configuration.',
'type' => 'object',
'properties' => [
'TargetType' => ['description' => 'The type of the destination to which traffic is mirrored. Valid values:'."\n"
."\n"
.'- **ForwardGroupMirror**: Mirrors traffic to a vServer group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ForwardGroupMirror'],
'MirrorGroupConfig' => [
'title' => '',
'description' => 'The vServer group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'description' => 'The vServer groups to which traffic is mirrored.',
'type' => 'array',
'items' => [
'description' => 'The vServer group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the vServer group.', 'type' => 'string', 'required' => false, 'example' => 'sgp-u9cmf16iu69******', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'RemoveHeaderConfig' => [
'title' => '',
'description' => 'The configuration for deleting an HTTP header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header to be deleted. The key can be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The header keys in RemoveHeader cannot be the same.'."\n"
."\n"
.'- If Direction is set to Request, the following header keys are not supported (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`, `authority`, and `x-forwarded-host`.'."\n"
."\n"
.'- If Direction is set to Response, the following header keys are not supported (case-insensitive): `connection`, `upgrade`, `content-length`, and `transfer-encoding`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
],
'required' => false,
'example' => '',
],
'CorsConfig' => [
'title' => '',
'description' => 'The CORS configuration.',
'type' => 'object',
'properties' => [
'AllowOrigin' => [
'title' => '',
'description' => 'The allowed origins.',
'type' => 'array',
'items' => ['description' => 'The list of allowed origins. You can specify only one asterisk (\\*) or one or more values.'."\n"
."\n"
.'- A value must start with `http://` or `https://`, followed by a valid domain name or a level-1 wildcard domain name. Example: `http://*.test.abc.example.com`.'."\n"
."\n"
.'- You can specify a port or not. The port number must be in the range of **1** to **65535**.', 'type' => 'string', 'required' => false, 'example' => 'http://www.test.com', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowMethods' => [
'title' => '',
'description' => 'The allowed HTTP methods for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'The allowed HTTP methods for cross-origin requests. Valid values:'."\n"
."\n"
.'- **GET**'."\n"
."\n"
.'- **POST**'."\n"
."\n"
.'- **PUT**'."\n"
."\n"
.'- **DELETE**'."\n"
."\n"
.'- **HEAD**'."\n"
."\n"
.'- **OPTIONS**'."\n"
."\n"
.'- **PATCH**', 'type' => 'string', 'required' => false, 'example' => 'GET', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowHeaders' => [
'title' => '',
'description' => 'The allowed headers for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'The allowed headers for cross-origin requests. You can specify an asterisk (\\*) or one or more values. Multiple values are separated by commas (,). A value can be 1 to 32 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). Underscores (\\_) and hyphens (-) cannot be the first or last characters.', 'type' => 'string', 'required' => false, 'example' => 'AllowHeader', 'title' => ''],
'required' => false,
'example' => '',
],
'ExposeHeaders' => [
'title' => '',
'description' => 'The headers that can be exposed.',
'type' => 'array',
'items' => ['description' => 'The headers that can be exposed. You can specify an asterisk (\\*) or one or more values. Multiple values are separated by commas (,). A value can be 1 to 32 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). Underscores (\\_) and hyphens (-) cannot be the first or last characters.', 'type' => 'string', 'required' => false, 'example' => 'ExposeHeader', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowCredentials' => [
'description' => 'Specifies whether to allow credentials. Valid values:'."\n"
."\n"
.'- **on**: yes.'."\n"
."\n"
.'- **off**: no.',
'enumValueTitles' => ['off' => 'off', 'on' => 'on'],
'type' => 'string',
'title' => '',
'required' => false,
'example' => 'on',
],
'MaxAge' => ['description' => 'The maximum cache time of preflight requests in the browser. Unit: seconds.'."\n"
."\n"
.'Valid values: **-1** to **172800**.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'required' => false, 'example' => '600'],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
'RuleConditions' => [
'title' => '',
'description' => 'The conditions of the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The condition of the forwarding rule.',
'type' => 'object',
'properties' => [
'CookieConfig' => [
'title' => '',
'description' => 'The cookie-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The key-value pairs of the cookie.',
'type' => 'array',
'items' => [
'description' => 'The key-value pair of the cookie.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the cookie.'."\n"
."\n"
.'- The key must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, wildcard characters (\\* and ?), and lowercase letters.'."\n"
."\n"
.'- It cannot contain spaces or the following special characters: `;#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the cookie.'."\n"
."\n"
.'- The value must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, wildcard characters (\\* and ?), and lowercase letters.'."\n"
."\n"
.'- It cannot contain spaces or the following special characters: `;#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'value'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HeaderConfig' => [
'title' => '',
'description' => 'The header-based routing condition.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the request header.'."\n"
."\n"
.'- The key must be 1 to 40 characters in length.'."\n"
."\n"
.'- It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'- The key cannot be Cookie or Host.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'port'],
'Values' => [
'title' => '',
'description' => 'The values of the request header.',
'type' => 'array',
'items' => ['description' => 'The value of the request header. The values of the same header key cannot be the same.'."\n"
."\n"
.'- The value must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters with an ASCII value of `ch >= 32 && ch < 127`, asterisks (\\*), and question marks (?). It cannot contain `"`.'."\n"
."\n"
.'- The value cannot start or end with a space. The value cannot end with a `\\`.', 'type' => 'string', 'required' => false, 'example' => '5006', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HostConfig' => [
'title' => '',
'description' => 'The host-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The hostnames.',
'type' => 'array',
'items' => ['description' => 'The hostname. Only one hostname can be specified in a condition, and the hostname cannot be the same as that in other conditions.'."\n"
."\n"
.'- The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), equal signs (=), tildes (\\~), underscores (\\_), plus signs (+), backslashes (\\), circumflex accents (^), exclamation marks (!), dollar signs ($), ampersands (&), vertical bars (|), parentheses (()), brackets (\\[]), and question marks (?).'."\n"
."\n"
.'- The hostname must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.'- The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-). The leftmost `domainlable` can be an asterisk (\\*).'."\n"
."\n"
.'- A hyphen (-) cannot be the first or last character of a domain label. Wildcard characters, including asterisks (\\*) and question marks (?), can be placed at any position of a domain label.'."\n"
."\n"
.'- For exact match and wildcard match, the value cannot start with a tilde (\\~).'."\n"
."\n"
.'- For regular expression match, the value cannot start with an asterisk (\\*).', 'type' => 'string', 'required' => false, 'example' => 'www.example.com', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'MethodConfig' => [
'title' => '',
'description' => 'The method-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The HTTP request methods.',
'type' => 'array',
'items' => ['description' => 'The request method.'."\n"
."\n"
.'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.', 'type' => 'string', 'required' => false, 'example' => 'PUT', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'PathConfig' => [
'title' => '',
'description' => 'The path-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The paths.',
'type' => 'array',
'items' => ['description' => 'The forwarding path. The path must meet the following requirements:'."\n"
."\n"
.'- The path must be 1 to 128 characters in length, case-sensitive, and can contain wildcard characters (\\* and ?).'."\n"
."\n"
.'- A URL that is not a regular expression must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:\'*?`. It cannot contain `“%#;!()[]^,”\\"`. It can contain wildcard characters (\\* and ?).'."\n"
."\n"
.'- A URL that is a regular expression must start with a tilde (\\~). It can contain letters, digits, and the following special characters: `.-_/=?~^*$:()[]+|`.', 'type' => 'string', 'required' => false, 'example' => '/test', 'title' => ''],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'QueryStringConfig' => [
'title' => '',
'description' => 'The query string-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The key-value pairs of the query string.',
'type' => 'array',
'items' => [
'description' => 'The key-value pair of the query string.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the query string.'."\n"
."\n"
.'- The key must be 1 to 100 characters in length.'."\n"
."\n"
.'- It can contain printable characters, wildcard characters (\\* and ?), and lowercase letters. It cannot contain spaces or the following special characters: `#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the query string.'."\n"
."\n"
.'- The value must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain lowercase letters, printable characters, and wildcard characters (\\* and ?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'value'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 50,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the response header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the response header.'."\n"
."\n"
.'- The key must be 1 to 40 characters in length.'."\n"
."\n"
.'- It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'- The key cannot be Cookie or Host.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Values' => [
'title' => '',
'description' => 'The values of the response header.',
'type' => 'array',
'items' => ['description' => 'The value of the response header.'."\n"
."\n"
.'- The value must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters with an ASCII value of `ch >= 32 && ch < 127`, lowercase letters, and wildcard characters (\\* and ?). It cannot contain `"`.'."\n"
."\n"
.'- The value cannot start or end with a space. The value cannot end with a `\\`.', 'type' => 'string', 'required' => false, 'example' => 'value', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseStatusCodeConfig' => [
'title' => '',
'description' => 'The configuration of the response status code.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The response status codes.',
'type' => 'array',
'items' => ['description' => 'The response status code.', 'type' => 'string', 'required' => false, 'example' => '200', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'Type' => [
'description' => 'The type of the condition. Valid values:'."\n"
."\n"
.'- Host: The condition is based on the hostname.'."\n"
."\n"
.'- Path: The condition is based on the path.'."\n"
."\n"
.'- Header: The condition is based on the request header.'."\n"
."\n"
.'- QueryString: The condition is based on the query string.'."\n"
."\n"
.'- Method: The condition is based on the request method.'."\n"
."\n"
.'- Cookie: The condition is based on the cookie.'."\n"
."\n"
.'- SourceIp: The condition is based on the source IP address.'."\n"
."\n"
.'- ResponseHeader: The condition is based on the response header.'."\n"
."\n"
.'- ResponseStatusCode: The condition is based on the response status code.',
'enumValueTitles' => ['Cookie' => 'Cookie', 'Path' => 'Path', 'ResponseHeader' => 'ResponseHeader', 'SourceIp' => 'SourceIp', 'Header' => 'Header', 'ResponseStatusCode' => 'ResponseStatusCode', 'QueryString' => 'QueryString', 'Host' => 'Host', 'Method' => 'Method'],
'type' => 'string',
'required' => true,
'title' => '',
'example' => 'SourceIp',
],
'SourceIpConfig' => [
'title' => '',
'description' => 'The source IP address-based routing condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The source IP addresses or CIDR blocks.',
'type' => 'array',
'items' => ['description' => 'Add one or more IP addresses or CIDR blocks.'."\n"
."\n"
.'You can add up to five source IP addresses to a forwarding rule.', 'type' => 'string', 'required' => false, 'example' => '192.168.XX.XX/32', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
'RuleName' => ['description' => 'The name of the forwarding rule.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'rule-443-64'],
'Direction' => [
'description' => 'The direction of the forwarding rule.',
'enumValueTitles' => ['Response' => 'Response', 'Request' => 'Request'],
'type' => 'string',
'title' => '',
'required' => false,
'example' => 'Request',
],
'Tag' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with aliyun or acs:. It cannot contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'test_tag_key', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with aliyun or acs:. It cannot contain http\\:// or https\\://.', 'type' => 'string', 'required' => false, 'example' => 'test_tag_value', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'Creates multiple forwarding rules.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
'RuleIds' => [
'title' => '',
'description' => 'The forwarding rules.',
'type' => 'array',
'items' => [
'description' => 'The forwarding rule.',
'type' => 'object',
'properties' => [
'RuleId' => ['description' => 'The forwarding rule ID.', 'type' => 'string', 'title' => '', 'example' => 'rule-a3x3pg1yohq3lq****'],
'Priority' => ['description' => 'The priority of the forwarding rule. Valid values: 1 to **10000**. A smaller value indicates a higher priority.'."\n"
."\n"
.'> The priorities of the forwarding rules created for the same listener must be unique.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '10'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'Conflict.Priority', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerRulesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleWildcardsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'."\n"],
['errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleActionsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'Mismatch.Protocol', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'OperationDenied.RewriteMissingForwardGroup', 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.', 'description' => 'The operation is not allowed because rewrite is missing the forward group.'],
['errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly', 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.', 'description' => ''],
['errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction', 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Alb::2020-06-16::ListAsynJobs', 'callbackInterval' => 1000, 'maxCallbackTimes' => 60],
'title' => 'CreateRules',
'description' => 'Take note of the following when you call this operation to create forwarding rules:'."\n"
."\n"
.'- When you configure the **Redirect** action, you must specify values for all parameters except for the **HttpCode** parameter.'."\n"
."\n"
.'- If you configure multiple actions for a forwarding rule, the **Rewrite** action must be configured with the **ForwardGroup** action type.'."\n"
."\n"
.'- **CreateRules** is an asynchronous operation. After a request is sent, the system returns a request ID and creates the forwarding rules in the background. You can call the [](t2324530.xdita#)operation to query the creation status of the forwarding rules:'."\n"
."\n"
.' - If the forwarding rules are in the **Provisioning** status, they are being created.'."\n"
."\n"
.' - If the forwarding rules are in the **Available** status, they are created.'."\n"
."\n"
.'- A forwarding rule supports the following maximum number of conditions (**RuleConditions**) and actions (**RuleActions**):'."\n"
."\n"
.' - Conditions: 5 for Basic Edition, 10 for Standard Edition, and 10 for WAF-enabled Edition.'."\n"
."\n"
.' - Actions: 3 for Basic Edition, 5 for Standard Edition, and 5 for WAF-enabled Edition.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"RuleIds\\": [\\n {\\n \\"RuleId\\": \\"rule-a3x3pg1yohq3lq****\\",\\n \\"Priority\\": 10\\n }\\n ]\\n}","type":"json"}]',
],
'CreateSecurityPolicy' => [
'summary' => 'Creates a custom security policy in a specified region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'abilityTreeCode' => '172',
'abilityTreeNodes' => ['FEATUREslbAYSA83'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => '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 and cannot exceed 64 characters in length.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the RequestId as the ClientToken. The RequestId of each API request may be different.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, the request format, and business limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'TLSVersions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The TLS protocol versions that are supported.',
'type' => 'array',
'items' => ['description' => 'The TLS protocol version. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.', 'type' => 'string', 'required' => true, 'example' => 'TLSv1.0', 'title' => ''],
'required' => true,
'example' => '',
],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'example' => 'rg-atstuj3rtop****', 'title' => '', 'required' => false],
],
[
'name' => 'SecurityPolicyName',
'in' => 'query',
'schema' => ['description' => 'The name of the security policy.'."\n"
."\n"
.'The name must be 2 to 128 characters in length, and can contain letters, digits, Chinese characters, periods (.), underscores (\\_), hyphens (-), and spaces. The name must start with a letter, a Chinese character, or a digit.', 'type' => 'string', 'required' => true, 'example' => 'test-secrity', 'title' => ''],
],
[
'name' => 'Ciphers',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The supported cipher suites.',
'type' => 'array',
'items' => ['description' => 'The supported cipher suites, which are determined by the TLS versions that you specify in the **TLSVersions** parameter.'."\n"
."\n"
.'A cipher suite is valid if it is supported by at least one of the specified TLS versions.'."\n"
."\n"
.'> If you specify TLSv1.3, the cipher suites that you specify must be supported by TLSv1.3.'."\n"
."\n"
.'- Cipher suites supported by TLSv1.0 and TLSv1.1:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.'- Cipher suites supported by TLSv1.2:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA384'."\n"
."\n"
.' - AES128-GCM-SHA256'."\n"
."\n"
.' - AES256-GCM-SHA384'."\n"
."\n"
.' - AES128-SHA256'."\n"
."\n"
.' - AES256-SHA256'."\n"
."\n"
.' - ECDHE-RSA-CHACHA20-POLY1305'."\n"
."\n"
.' - ECDHE-ECDSA-CHACHA20-POLY1305'."\n"
."\n"
.'- Cipher suites supported by TLSv1.3:'."\n"
."\n"
.' - TLS\\_AES\\_128\\_GCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_256\\_GCM\\_SHA384'."\n"
."\n"
.' - TLS\\_CHACHA20\\_POLY1305\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_8\\_SHA256', 'type' => 'string', 'required' => true, 'example' => ' ECDHE-ECDSA-AES128-SHA', 'title' => ''],
'required' => true,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'A tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The key can be up to 128 characters long, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The value can be up to 128 characters long, cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
'SecurityPolicyId' => ['description' => 'The ID of the security policy.', 'type' => 'string', 'example' => 'sp-9cdjz6o8ha70******', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'QuotaExceeded.SecurityPoliciesNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\",\\n \\"SecurityPolicyId\\": \\"sp-9cdjz6o8ha70******\\"\\n}","type":"json"}]',
'title' => 'CreateSecurityPolicy',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateSecurityPolicy',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/*'],
],
],
],
],
],
'CreateServerGroup' => [
'summary' => 'Create a server group in the specified region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'create',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '163',
'abilityTreeNodes' => ['FEATUREslbULKWF1'],
],
'parameters' => [
[
'name' => 'ServerGroupName',
'in' => 'query',
'schema' => ['description' => 'The name of the server group. The name must be 2 to 128 characters in length, start with a letter, digit, or Chinese character, and can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''],
],
[
'name' => 'ServerGroupType',
'in' => 'query',
'schema' => ['description' => 'The type of the server group. Valid values:'."\n"
."\n"
.'- **Instance** (default): an instance-type server group. You can add **ECS** instances, **elastic network interfaces**, and **elastic container instances** to this type of server group.'."\n"
."\n"
.'- **Ip**: an IP-type server group. You can add IP addresses as backend servers to this type of server group.'."\n"
."\n"
.'- **Fc**: a function-type server group. You can add functions of Function Compute as backend servers to this type of server group.', 'type' => 'string', 'example' => 'Instance', 'title' => '', 'required' => false],
],
[
'name' => 'VpcId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the VPC where the server group is created. You can add only servers within this VPC to the server group.'."\n"
."\n"
.'> This parameter is valid only when **ServerGroupType** is set to **Instance** or **Ip**.', 'type' => 'string', 'required' => false, 'example' => 'vpc-bp15zdkdt37pq72zv****'],
],
[
'name' => 'Scheduler',
'in' => 'query',
'schema' => ['description' => 'The scheduling algorithm. Valid values:'."\n"
."\n"
.'- **Wrr** (default): weighted round robin. Backend servers with higher weights receive more requests.'."\n"
."\n"
.'- **Wlc**: weighted least connections. Requests are distributed based on the weight and the number of connections for each backend server. If two backend servers have the same weight, the one with fewer connections receives more requests.'."\n"
."\n"
.'- **Sch**: consistent hashing. Routes requests with the same hash factor to the same backend server. By default, if the **UchConfig** parameter is not configured, the source IP address is used as the hash factor. If the **UchConfig** parameter is configured, a specified URL parameter is used as the hash factor.'."\n"
."\n"
.'> This parameter is valid only when **ServerGroupType** is set to **Instance** or **Ip**.', 'type' => 'string', 'example' => 'Wrr', 'title' => '', 'required' => false],
],
[
'name' => 'Protocol',
'in' => 'query',
'schema' => ['description' => 'The backend protocol. Valid values:'."\n"
."\n"
.'- **HTTP** (default): The server group can be associated with HTTPS, HTTP, and QUIC listeners.'."\n"
."\n"
.'- **HTTPS**: The server group can be associated with HTTPS listeners.'."\n"
."\n"
.'- **gRPC**: The server group can be associated with HTTPS and QUIC listeners.'."\n"
."\n"
.'> You do not need to configure this parameter if **ServerGroupType** is set to **Fc**.', 'type' => 'string', 'example' => 'HTTP', 'title' => '', 'required' => false],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'example' => 'rg-atstuj3rsop****', 'title' => '', 'required' => false],
],
[
'name' => 'HealthCheckConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The health check settings.',
'type' => 'object',
'properties' => [
'HealthCheckConnectPort' => ['description' => 'The port on the backend server that is used for health checks.'."\n"
."\n"
.'Valid values: **0** to **65535**.'."\n"
."\n"
.'Default value: **0**. A value of 0 indicates that the backend server\'s traffic port is used for health checks.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '65535', 'minimum' => '0', 'example' => '80', 'default' => '0', 'title' => '', 'required' => false],
'HealthCheckEnabled' => ['description' => 'Specifies whether to enable the health check feature. Valid values:'."\n"
."\n"
.'- **true**: Enables health checks.'."\n"
."\n"
.'- **false**: Disables health checks.'."\n"
."\n"
.'> If **ServerGroupType** is set to **Instance** or **Ip**, health checks are enabled by default. If **ServerGroupType** is set to **Fc**, health checks are disabled by default.', 'type' => 'boolean', 'required' => true, 'example' => 'true', 'title' => ''],
'HealthCheckHost' => ['description' => 'The domain name that is used for health checks.'."\n"
."\n"
.'- **Use the private IP address of the backend server** (default): The private IP address of a backend server is used as the host name for health checks.'."\n"
."\n"
.'- **Specify a domain name**: Enter a specific domain name.'."\n"
."\n"
.' - The domain name must be 1 to 80 characters in length.'."\n"
."\n"
.' - It can contain lowercase letters, digits, hyphens (-), and periods (.).'."\n"
."\n"
.' - It must contain at least one period (.). A period cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and cannot contain digits or hyphens (-).'."\n"
."\n"
.' - The domain name cannot start or end with a hyphen (-).'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'example' => 'www.example.com', 'title' => '', 'required' => false],
'HealthCheckCodes' => [
'title' => '',
'description' => 'The HTTP status codes that indicate a successful health check.',
'type' => 'array',
'items' => ['description' => 'The HTTP status code for a successful health check.'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can specify one or more of the following values: **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple values with commas (,).'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **gRPC**, the valid status codes are from **0** to **99**. Default value: **0**. You can specify up to 20 value ranges. Separate multiple ranges with commas (,).'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'http_2xx'],
'required' => false,
'example' => '',
],
'HealthCheckHttpVersion' => ['description' => 'The HTTP version that is used for health checks. Valid values: **HTTP1.0** and **HTTP1.1**. Default value: **HTTP1.1**.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'example' => 'HTTP1.1', 'default' => 'HTTP1.1', 'title' => '', 'required' => false],
'HealthCheckInterval' => ['description' => 'The interval between health checks, in seconds.'."\n"
."\n"
.'Valid values: **1** to **50**.'."\n"
."\n"
.'Default value: **2**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '50', 'minimum' => '1', 'example' => '2', 'default' => '2', 'title' => '', 'required' => false],
'HealthCheckMethod' => ['description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
."\n"
.'- **GET**: If the response body exceeds 8 KB, the response is truncated. This does not affect the health check result.'."\n"
."\n"
.'- **POST**: The default method for gRPC health checks.'."\n"
."\n"
.'- **HEAD** (default): The default method for HTTP and HTTPS health checks.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'example' => 'HEAD', 'title' => '', 'required' => false],
'HealthCheckPath' => ['description' => 'The path for health checks.'."\n"
."\n"
.'The path must be 1 to 80 characters in length. It must start with a forward slash (/) and can contain letters, digits, and the following special characters: `-/.%?#&=` and `_;~!()*[]@$^:\',+`.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'example' => '/test/index.html', 'title' => '', 'required' => false],
'HealthCheckProtocol' => ['description' => 'The protocol that is used for health checks. Valid values:'."\n"
."\n"
.'- **HTTP**: Sends HEAD or GET requests to simulate a browser request to check whether the backend server is healthy.'."\n"
."\n"
.'- **HTTPS**: Sends HEAD or GET requests to simulate a browser request to check whether the backend server is healthy. HTTPS provides better security because the data is encrypted.'."\n"
."\n"
.'- **TCP**: Checks if the server port is reachable by sending SYN packets.'."\n"
."\n"
.'- **gRPC**: Sends POST or GET requests to check whether the backend server is healthy.', 'type' => 'string', 'example' => 'HTTP', 'default' => 'HTTP', 'title' => '', 'required' => false],
'HealthCheckTimeout' => ['description' => 'The timeout for a health check response, in seconds. If a backend server does not respond within this time, the health check fails.'."\n"
."\n"
.'Valid values: **1** to **300**.'."\n"
."\n"
.'Default value: **5**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '300', 'minimum' => '1', 'example' => '5', 'default' => '5', 'title' => '', 'required' => false],
'HealthyThreshold' => ['description' => 'The number of consecutive successful health checks that an **unhealthy** backend server must pass to be considered **healthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '10', 'minimum' => '2', 'example' => '3', 'default' => '3', 'title' => '', 'required' => false],
'UnhealthyThreshold' => ['description' => 'The number of consecutive failed health checks that a **healthy** backend server must have to be considered **unhealthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '10', 'minimum' => '2', 'example' => '3', 'default' => '3', 'title' => '', 'required' => false],
],
'required' => true,
'example' => 'rg-123',
],
],
[
'name' => 'StickySessionConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The sticky session settings.'."\n"
."\n"
.'> This parameter is valid only when **ServerGroupType** is set to **Instance** or **Ip**.',
'type' => 'object',
'properties' => [
'Cookie' => ['description' => 'The cookie that is configured on the server.'."\n"
."\n"
.'The cookie must be 1 to 200 characters in length and can contain only ASCII letters and digits. It cannot contain commas (,), semicolons (;), or spaces. It cannot start with a dollar sign ($).'."\n"
."\n"
.'> This parameter is required if **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **server**.', 'type' => 'string', 'example' => 'B490B6EBF6F3CD402E515D22BCDA****', 'title' => '', 'required' => false],
'CookieTimeout' => ['description' => 'The timeout period of the cookie. Unit: seconds.'."\n"
."\n"
.'Valid values: **1** to **86400**.'."\n"
."\n"
.'Default value: **1000**.'."\n"
."\n"
.'> This parameter is required if **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Insert**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '86400', 'minimum' => '1', 'example' => '1000', 'default' => '1000', 'title' => '', 'required' => false],
'StickySessionEnabled' => ['description' => 'Specifies whether to enable sticky sessions. Valid values:'."\n"
."\n"
.'- **true**: enables sticky sessions.'."\n"
."\n"
.'- **false** (default): disables sticky sessions.'."\n"
."\n"
.'> This parameter is valid only when **ServerGroupType** is set to **Instance** or **Ip**.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
'StickySessionType' => ['description' => 'The method that is used to manage cookies. Valid values:'."\n"
."\n"
.'- **Insert** (default): Inserts a cookie. The load balancer inserts a cookie (SERVERID) into the HTTP or HTTPS response for the first request. Subsequent requests from the same client that carry this cookie are routed to the same backend server.'."\n"
."\n"
.'- **Server**: Uses a custom cookie generated by the backend server. The load balancer relies on this cookie to route subsequent requests from the same client to the same backend server.'."\n"
."\n"
.'> This parameter is required if **StickySessionEnabled** is set to **true**.', 'type' => 'string', 'example' => 'Insert', 'default' => 'Insert', 'title' => '', 'required' => false],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotency of the request.'."\n"
."\n"
.'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request may be different.', 'type' => 'string', 'example' => '5A2CAF0E-5718-45B5-9D4D-70B******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run. The system validates the request for issues such as missing required parameters, incorrect syntax, and service limits, but does not create the server group. If the request is invalid, an error message is returned. If the request is valid, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'Ipv6Enabled',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to enable IPv6.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'UpstreamKeepaliveEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable upstream keep-alive.'."\n"
."\n"
.'- **true**: enables upstream keep-alive.'."\n"
."\n"
.'- **false** (default): disables upstream keep-alive.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
[
'name' => 'ServiceName',
'in' => 'query',
'schema' => ['description' => 'This parameter is available only in ALB Ingress scenarios. It specifies the name of the Kubernetes `Service` that is associated with the server group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
[
'name' => 'UchConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The settings for URL-based consistent hashing.',
'type' => 'object',
'properties' => [
'Type' => ['description' => 'The type of the parameter. Set the value to **QueryString**.', 'type' => 'string', 'required' => true, 'example' => 'QueryString', 'title' => ''],
'Value' => ['description' => 'The key of the query string parameter that is used for consistent hashing.', 'type' => 'string', 'required' => true, 'example' => 'abc', 'title' => ''],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'ConnectionDrainConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The settings for connection draining.'."\n"
."\n"
.'If you enable connection draining, the load balancer allows existing connections to be processed for a specified period of time after a backend server is removed or becomes unhealthy.'."\n"
."\n"
.'> - Basic ALB instances do not support connection draining. This feature is supported only by standard and WAF-enabled ALB instances.'."\n"
.'>'."\n"
.'> - Connection draining is supported for instance-type and IP-type server groups, but not for function-type server groups.',
'type' => 'object',
'properties' => [
'ConnectionDrainEnabled' => ['description' => 'Specifies whether to enable connection draining.'."\n"
."\n"
.'- **true**: enables connection draining.'."\n"
."\n"
.'- **false** (default): disables connection draining.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
'ConnectionDrainTimeout' => ['description' => 'The timeout period for connection draining, in seconds.'."\n"
."\n"
.'Valid values: **0** to **900**.'."\n"
."\n"
.'Default value: **300**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '300', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'SlowStartConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The slow start settings.'."\n"
."\n"
.'If you enable slow start, requests are gradually and linearly routed to a newly added backend server over a specified period of time.'."\n"
."\n"
.'> - Basic ALB instances do not support slow start. This feature is supported only by standard and WAF-enabled ALB instances.'."\n"
.'>'."\n"
.'> - Slow start is supported for instance-type and IP-type server groups, but not for function-type server groups.'."\n"
.'>'."\n"
.'> - Slow start can be enabled only if the scheduling algorithm is set to **Wrr** (weighted round robin).',
'type' => 'object',
'properties' => [
'SlowStartEnabled' => ['description' => 'Specifies whether to enable slow start.'."\n"
."\n"
.'- **true**: enables slow start.'."\n"
."\n"
.'- **false** (default): disables slow start.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
'SlowStartDuration' => ['description' => 'The duration of the slow start period, in seconds.'."\n"
."\n"
.'Valid values: **30** to **900**.'."\n"
."\n"
.'Default value: **30**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'A tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The key can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The value can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'CrossZoneEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable cross-zone load balancing for the server group. Valid values:'."\n"
."\n"
.'- **true** (default): Enables cross-zone load balancing.'."\n"
."\n"
.'- **false**: Disables cross-zone load balancing.'."\n"
."\n"
.'> * Basic ALB instances cannot be associated with server groups for which cross-zone load balancing is disabled. This feature is supported only by standard and WAF-enabled ALB instances.'."\n"
.'>'."\n"
.'> * You can disable cross-zone load balancing for instance-type and IP-type server groups, but not for function-type server groups.'."\n"
.'>'."\n"
.'> * You cannot enable sticky sessions if you disable cross-zone load balancing.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''],
],
[
'name' => 'IpVersionAffinityMode',
'in' => 'query',
'schema' => ['description' => 'The IP version affinity mode of the server group.', 'type' => 'string', 'example' => 'Affinity', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The data returned.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF******'],
'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'example' => 'sgp-8ilqs4axp6******', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'QuotaExceeded.ServerGroupsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'Mismatch.ServerGroupSchedulerAndSlowStartEnable', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'QuotaExceeded.SlowStartDuration', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'UnsupportedFeature.SlowStart', 'errorMessage' => 'The feature of %s is not supported.', 'description' => ''],
['errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'QuotaExceeded.ConnectionDrainTimeout', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'UnsupportedFeature.ConnectionDrain', 'errorMessage' => 'The feature of %s is not supported.', 'description' => 'The feature of %s is not supported.'],
['errorCode' => 'NotExist.ResourceGroup', 'errorMessage' => 'ResourceGroup does not exist.', 'description' => ''],
['errorCode' => 'OperationDenied.VpcNotSupportIpv6', 'errorMessage' => 'The operation is not allowed because of VpcNotSupportIpv6.', 'description' => 'This operation is not allowed because the IPv6 function is not enabled for the current VPC.'],
['errorCode' => 'UnsupportedFeature.FcServerGroup', 'errorMessage' => 'Server groups of type FC are not supported.', 'description' => 'Server groups of type FC are not supported'],
],
404 => [
['errorCode' => 'ResourceNotFound.Vpc', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\",\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\"\\n}","type":"json"}]',
'title' => 'CreateServerGroup',
'description' => 'The **CreateServerGroup** API is asynchronous. After you send a request, the system returns a request ID but the server group is still being created in the background. You can call the [ListServerGroups](~~213627~~) operation to query the status of the server group.'."\n"
."\n"
.'- If the server group is in the **Creating** state, it is being created.'."\n"
."\n"
.'- If the server group is in the **Available** state, it is created.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateServerGroup',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:ServerGroupProtocol', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/*'],
],
],
],
],
],
'DeleteAScripts' => [
'summary' => 'Deletes AScript rules.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.', 'type' => 'string', 'example' => 'f516e84e-fc0c-4c2d-a461-6cd77******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'AScriptIds',
'in' => 'query',
'style' => 'repeatList',
'schema' => [
'title' => '',
'description' => 'The AScript rule IDs.',
'type' => 'array',
'items' => ['description' => 'The AScript rule ID.'."\n"
."\n"
.'You can delete up to four AScript rules at a time.', 'type' => 'string', 'required' => true, 'example' => 'as-59hl7uu******', 'title' => ''],
'required' => true,
'maxItems' => 10,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The AScript rules that are deleted.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '03cf3fe1-ab37-479b-92a6-b481d762****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '1B7B7695-3596-50C8-B739-030C******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceNotFound.AScript', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.CrossListenerAScripts', 'errorMessage' => 'The operation is not allowed because of %s', 'description' => ''],
],
],
'title' => 'DeleteAScripts',
'description' => '**DeleteAScripts** 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 [ListAScripts](~~472574~~) operation to query the status of the task:'."\n"
."\n"
.'- If an AScript rule is in the **Deleting** state, the AScript rule is being deleted.'."\n"
."\n"
.'- If an AScript rule cannot be found, the AScript rule is deleted.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"03cf3fe1-ab37-479b-92a6-b481d762****\\",\\n \\"RequestId\\": \\"1B7B7695-3596-50C8-B739-030C******\\"\\n}","type":"json"}]',
],
'DeleteAcl' => [
'summary' => 'Deletes an access control list (ACL).',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'AclId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ACL.', 'type' => 'string', 'required' => true, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'DryRun', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to delete an ACL.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceInUse.Acl', 'errorMessage' => 'The specified resource %s is in use.', 'description' => 'The specified resource %s is in use.'],
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'DeleteAcl',
'description' => '**DeleteAcl** 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 [ListAcls](~~213617~~) operation to query the status of the task.'."\n"
."\n"
.'- If the ACL is in the **Deleting** state, the ACL is being deleted.'."\n"
."\n"
.'- If the ACL cannot be found, the ACL is deleted.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","type":"json"}]',
],
'DeleteHealthCheckTemplates' => [
'summary' => 'Deletes health check templates.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'HealthCheckTemplateIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The IDs of health check templates. You can specify at most 10 IDs.',
'type' => 'array',
'items' => ['description' => 'Delete specified health check templates.', 'type' => 'string', 'required' => false, 'example' => 'hct-bp1qjwo61pqz3ahltv****', 'title' => ''],
'required' => true,
'example' => 'acl-123',
'maxItems' => 10,
'minItems' => 1,
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the value, but you must ensure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx HTTP** status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The health check templates deleted.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.HealthCheckTemplate', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
],
],
'title' => 'DeleteHealthCheckTemplates',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteHealthCheckTemplates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#HealthCheckTemplatesId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","type":"json"}]',
],
'DeleteListener' => [
'summary' => 'Deletes a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to delete a listener.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceInUse.Listener', 'errorMessage' => 'The specified resource %s is in use.', 'description' => 'The specified resource %s is in use.'],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource is being configured, please try again later.', 'description' => ''],
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'DeleteListener',
'description' => '**DeleteListener** 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 [GetListenerAttribute](~~2254865~~) to query the status of the task.'."\n"
."\n"
.'* If the listener is in the **Deleting** state, the listener is being deleted.'."\n"
.'* If the listener cannot be found, the listener is deleted.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DeleteLoadBalancer' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'delete',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbM7ALO6'],
],
'parameters' => [
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer instance.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'alb-o9ulmq5hgn68jk****'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token used to ensure the idempotence of the request.'."\n"
."\n"
.'You can generate a token by using your client. The token must be unique across requests and contain only ASCII characters.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run to check the request\'s validity without deleting the Application Load Balancer instance. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, an `HTTP 2xx` status code is returned and the instance is deleted.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'RetainResourceType',
'in' => 'query',
'style' => 'flat',
'schema' => [
'type' => 'array',
'items' => ['type' => 'string', 'example' => 'eip', 'description' => '', 'title' => ''],
'description' => '',
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => '',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'OperationDenied.DeletionProtectionEnabled', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication has failed for LoadBalancer.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'DeleteLoadBalancer',
'summary' => 'Deletes the specified load balancer instance.',
'description' => '**DeleteLoadBalancer** is an asynchronous operation. After you send a request, the system returns a request ID, but the instance is not deleted immediately. The system deletes the instance in the background. You can call [GetLoadBalancerAttribute](~~214362~~) to check the deletion status of the Application Load Balancer instance:'."\n"
."\n"
.'- If the Application Load Balancer instance is in the **Deleting** state, the instance is being deleted.'."\n"
."\n"
.'- If the Application Load Balancer instance cannot be found, the instance has been deleted.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","type":"json"}]',
],
'DeleteRule' => [
'summary' => 'Deletes a forwarding rule.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: sends the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false**: performs a dry run and sends the request. If the request passes the dry run, the `HTTP_2xx` status code is returned and the operation is performed. This is the default value.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'RuleId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the forwarding rule.'."\n", 'type' => 'string', 'required' => true, 'example' => 'rule-doc****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Deletes a forwarding rule.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Rule', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified listener is being configured, please try again later.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Rule', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'DeleteRule',
'description' => '**DeleteRule** 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](~~214379~~) operation to query the status of a forwarding rule:'."\n"
."\n"
.'* If the forwarding rule is in the **Deleting** state, the forwarding rule is being deleted.'."\n"
.'* If the forwarding rule cannot be found, the forwarding rule is deleted.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteRule',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'acs:ResourceTag', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DeleteRules' => [
'summary' => 'Deletes one or more forwarding rules from a listener at a time.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'delete',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '185',
'abilityTreeNodes' => ['FEATUREslbBIWWMH', 'FEATUREslbTXOYED', 'FEATUREslbQCCQ6L', 'FEATUREslb4T90LL', 'FEATUREslbIT4IYN', 'FEATUREslbA51OGD', 'FEATUREslbUBPZWI', 'FEATUREslbGVK35E', 'FEATUREslbYG3GCF', 'FEATUREslbRBR9GZ', 'FEATUREslbMWZQWL', 'FEATUREslbJCYSIV', 'FEATUREslbY93SFN', 'FEATUREslbVUMBEO', 'FEATUREslbZ4XFTS', 'FEATUREslb2Q6O49'],
'autoTest' => true,
'tenantRelevance' => 'tenant',
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: checks the request without performing the operation. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
[
'name' => 'RuleIds',
'in' => 'query',
'style' => 'repeatList',
'schema' => [
'title' => '',
'description' => 'The forwarding rules. You can specify at most 100 forwarding rules in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the forwarding rule.'."\n", 'type' => 'string', 'required' => false, 'example' => 'rule-a3x3pg1yohq3lq****', 'title' => ''],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Deletes one or more forwarding rules at a time.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Rule', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.CrossLoadBalancerRules', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Rule', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Alb::2020-06-16::ListAsynJobs', 'callbackInterval' => 1000, 'maxCallbackTimes' => 60],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 7BED4F62-3E6E-5E4F-8C53-2D8CCE77F2ED\\n","errorExample":""}]',
'title' => 'DeleteRules',
'description' => '**DeleteRules** 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](~~214379~~) operation to query the status of forwarding rules.'."\n"
."\n"
.'* If the forwarding rules are in the **Deleting** state, the forwarding rules are being deleted.'."\n"
.'* If the forwarding rules cannot be found, the forwarding rules are deleted.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DeleteSecurityPolicy' => [
'summary' => 'Deletes a custom security policy.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => '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 and cannot exceed 64 characters in length.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'SecurityPolicyId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The security policy ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'sp-n0kn923****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.SecurityPolicy', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceInUse.SecurityPolicy', 'errorMessage' => 'The specified resource %s is in use.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.SecurityPolicy', 'errorMessage' => 'Authentication has failed for SecurityPolicy.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n","errorExample":""}]',
'title' => 'DeleteSecurityPolicy',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteSecurityPolicy',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
],
],
],
],
],
'DeleteServerGroup' => [
'summary' => 'Deletes a server group.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the server group.'."\n", 'type' => 'string', 'required' => true, 'example' => 'sgp-cige6j****'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => 'job', 'description' => 'The ID of the asynchronous job.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceInUse.ServerGroup', 'errorMessage' => 'The specified resource %s is in use.', 'description' => 'The specified resource %s is in use.'],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'DeleteServerGroup',
'description' => '**DeleteServerGroup** 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 [ListServerGroups](~~213627~~) operation to query the status of the task.'."\n"
."\n"
.'* If a server group is in the **Deleting** state, it indicates that the server group is being deleted.'."\n"
.'* If a specified server group cannot be found, it indicates that the server group has been deleted.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
],
'DescribeCapacityReservation' => [
'summary' => 'Queries the details of a Load Balancer Capacity Unit (LCU) reservation.',
'path' => '',
'methods' => ['get', 'post'],
'schemes' => ['https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbEUW2CG'],
'autoTest' => true,
'tenantRelevance' => 'tenant',
],
'parameters' => [
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****'."\n", 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'type' => 'object',
'properties' => [
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******', 'title' => ''],
'CapacityReservationState' => [
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'AvailabilityZone' => ['description' => 'The zone.', 'type' => 'string', 'example' => 'cn-hangzhou-k', 'title' => ''],
'EffectiveCapacityUnits' => ['description' => 'The number of effective reserved LCUs per hour.', 'type' => 'number', 'format' => 'double', 'example' => '50.0', 'title' => ''],
'Status' => [
'description' => 'The status of the LCU reservation.',
'enumValueTitles' => ['Rebalancing' => 'The LCU reservation is being rebalanced across zones.', 'Failed' => 'The LCU reservation failed.', 'Pending' => 'The LCU reservation is in progress.', 'Provisioned' => 'The LCU reservation is complete.'],
'type' => 'string',
'example' => 'Provisioned',
'title' => '',
],
'Reason' => ['description' => 'The cause for the failure. This parameter is returned when the reservation status is Failed.', 'type' => 'string', 'example' => 'INSUFFICIENT_CAPACITY', 'title' => ''],
],
'description' => '',
'title' => '',
'example' => '',
],
'title' => '',
'description' => 'The LCU reservation state.',
'example' => '',
],
'DecreaseRequestsRemaining' => ['description' => 'The number of remaining attempts to decrease or cancel the LCU reservation.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''],
'LastModifiedTime' => ['description' => 'The time when the LCU reservation was last modified. The time is in the yyyy-MM-dd HH:mm:ss format.', 'type' => 'string', 'example' => '2025-08-22 05:06:58', 'title' => ''],
'MinimumLoadBalancerCapacity' => [
'type' => 'object',
'properties' => [
'CapacityUnits' => ['description' => 'The number of LCUs.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''],
],
'title' => '',
'description' => 'The minimum LCUs to reserve for an ALB instance.',
'example' => '',
],
],
'title' => '',
'description' => 'The response elements.',
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'],
],
],
'staticInfo' => ['returnType' => 'synchronous'],
'title' => 'DescribeCapacityReservation',
'changeSet' => [],
'ramActions' => [],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"CapacityReservationState\\": [\\n {\\n \\"AvailabilityZone\\": \\"cn-hangzhou-k\\",\\n \\"EffectiveCapacityUnits\\": 50,\\n \\"Status\\": \\"Provisioned\\",\\n \\"Reason\\": \\"INSUFFICIENT_CAPACITY\\"\\n }\\n ],\\n \\"DecreaseRequestsRemaining\\": 2,\\n \\"LastModifiedTime\\": \\"2025-08-22 05:06:58\\",\\n \\"MinimumLoadBalancerCapacity\\": {\\n \\"CapacityUnits\\": 100\\n }\\n}","type":"json"}]',
],
'DescribeRegions' => [
'summary' => 'Queries available regions.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '203',
'abilityTreeNodes' => ['FEATUREslbRXTOWD'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [
[
'name' => 'AcceptLanguage',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The supported language. Valid values:'."\n"
."\n"
.'* **zh-CN** (default): Chinese'."\n"
.'* **en-US**: English'."\n"
.'* **ja**: Japanese'."\n", 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'default' => 'zh-CN'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => '',
'type' => 'object',
'properties' => [
'Regions' => [
'title' => '',
'description' => 'The regions.'."\n",
'type' => 'array',
'items' => [
'description' => '',
'type' => 'object',
'properties' => [
'LocalName' => ['title' => '', 'description' => 'The name of the region.'."\n", 'type' => 'string', 'example' => 'China (Hangzhou)'],
'RegionEndpoint' => ['title' => 'endpoint', 'description' => 'The endpoint of region service.'."\n", 'type' => 'string', 'example' => 'alb.cn-hangzhou.aliyuncs.com'],
'RegionId' => ['title' => 'RegionId', 'description' => 'The ID of the region.'."\n", 'type' => 'string', 'example' => 'cn-hangzhou'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
],
'example' => '',
],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"China (Hangzhou)\\",\\n \\"RegionEndpoint\\": \\"alb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\"\\n}","errorExample":""},{"type":"xml","example":"","errorExample":""}]',
'title' => 'DescribeRegions',
'changeSet' => [],
'ramActions' => [],
],
'DescribeZones' => [
'summary' => 'Queries zones in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '204',
'abilityTreeNodes' => ['FEATUREslbRXTOWD'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [
[
'name' => 'AcceptLanguage',
'in' => 'query',
'schema' => ['description' => 'The supported language. Valid values:'."\n"
."\n"
.'- **zh-CN** (default): Chinese'."\n"
."\n"
.'- **en-US**: English'."\n"
."\n"
.'- **ja**: Japanese', 'type' => 'string', 'example' => 'zh-CN', 'default' => 'zh-CN', 'required' => false, 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
'Zones' => [
'title' => '',
'description' => 'The zones.',
'type' => 'array',
'items' => [
'description' => 'The zone.',
'type' => 'object',
'properties' => [
'LocalName' => ['description' => 'The name of the zone.', 'type' => 'string', 'example' => 'Hangzhou Zone G', 'title' => ''],
'ZoneId' => ['description' => 'The zone ID.', 'type' => 'string', 'example' => 'cn-hangzhou-g', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => 'FFmyTO70tTpLG6I3FmYAXGKPdzTKM4svjIT4VQig7tTMKqiHlxKt2p5Zuz45p+Lxdq',
],
],
'example' => '',
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"Hangzhou Zone G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","type":"json"}]',
'title' => 'DescribeZones',
'changeSet' => [],
'ramActions' => [],
'translator' => 'manual',
],
'DetachCommonBandwidthPackageFromLoadBalancer' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'readAndWrite',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-4266******'],
],
[
'name' => 'RegionId',
'in' => 'query',
'schema' => ['description' => 'The region ID of the ALB instance.'."\n"
."\n"
.'You can call the [DescribeRegions](~~36063~~) operation to query the most recent region list.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cn-hangzhou'],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ALB instance ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'alb-d676fho813rmu3****'],
],
[
'name' => 'BandwidthPackageId',
'in' => 'query',
'schema' => ['description' => 'The EIP bandwidth plan ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cbwp-bp1pzf0ym72pu3y76****'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '2EF39708-974B-5E74-AFF5-344******'],
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectStatus.CommonBandwidthPackage', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'DetachCommonBandwidthPackageFromLoadBalancer',
'summary' => 'Disassociates an Internet Shared Bandwidth instance from an Application Load Balancer (ALB) instance.',
'description' => '**DetachCommonBandwidthPackageFromLoadBalancer** 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 [GetLoadBalancerAttribute](~~214359~~) operation to query the status of the task.'."\n"
."\n"
.'- If an ALB instance is in the **Configuring** state, the EIP bandwidth plan is being disassociated from the ALB instance.'."\n"
."\n"
.'- If an ALB instance is in the **Active** state, the EIP bandwidth plan is disassociated from the ALB instance.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DetachCommonBandwidthPackageFromLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"2EF39708-974B-5E74-AFF5-344******\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","type":"json"}]',
],
'DisableDeletionProtection' => [
'summary' => 'Disables deletion protection for an Application Load Balancer (ALB) instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => '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 and cannot exceed 64 characters in length.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'ResourceId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to disable deletion protection feature for an ALB instance.'."\n",
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":""}]',
'title' => 'DisableDeletionProtection',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableDeletionProtection',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DisableLoadBalancerAccessLog' => [
'summary' => 'Disables the access log feature for a Application Load Balancer (ALB) instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => '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 and cannot exceed 64 characters in length.'."\n"
."\n"
.'* 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The SLB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-bp1b6c719dfa08ex*****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.AccessLogDisabled', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.LoadBalancer', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n","errorExample":""}]',
'title' => 'DisableLoadBalancerAccessLog',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableLoadBalancerAccessLog',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DisableLoadBalancerIpv6Internet' => [
'summary' => 'Changes the type of the IPv6 address that is used by a dual-stack Application Load Balancer (ALB) instance from public to private.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'readAndWrite',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ALB instance ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'alb-chugtlrj1iusjh****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '7D866E37-1123-5160-AFF1-BDAF5EB86A8A'],
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => 'd12871a6-ebb2-41f3-8d74-d9f452bb****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.NonDualStackInstance', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.Ipv6IntranetInstance', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'DisableLoadBalancerIpv6Internet',
'description' => '### Prerequisites'."\n"
."\n"
.'An ALB instance is created and IPv4/IPv6 dual stack is enabled for the instance. You can call the [CreateLoadBalancer](~~214358~~) operation and set **AddressIpVersion** to **DualStack** to create a dual-stack ALB instance.'."\n"
."\n"
.'> If you set **AddressIpVersion** to **DualStack**:'."\n"
."\n"
.'- If you set **AddressType** to **Internet**, the ALB instance uses a public IPv4 IP address and a private IPv6 address.'."\n"
."\n"
.'- If you set **AddressType** to **Intranet**, the ALB instance uses a private IPv4 IP address and a private IPv6 address.'."\n"
."\n"
.'### Description'."\n"
."\n"
.'- After the DisableLoadBalancerIpv6Internet operation is called, the value of **Ipv6AddressType** is changed to **Intranet** and the type of the IPv6 address of the ALB instance is changed from public to private. If you upgrade the instance or the instance scales elastic network interfaces (ENIs) along with workloads, private IPv6 addresses are automatically enabled for the instance and the new ENIs. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the value of **Ipv6AddressType**.'."\n"
."\n"
.'- **DisableLoadBalancerIpv6Internet** 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 [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the task.'."\n"
."\n"
.' - If the ALB instance is in the **Configuring** state, the network type of the IPv6 address that is used by the ALB instance is being changed.'."\n"
."\n"
.' - If the ALB instance is in the **Active** state, the network type of the IPv6 address that is used by the ALB instance is changed.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableLoadBalancerIpv6Internet',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7D866E37-1123-5160-AFF1-BDAF5EB86A8A\\",\\n \\"JobId\\": \\"d12871a6-ebb2-41f3-8d74-d9f452bb****\\"\\n}","type":"json"}]',
],
'DissociateAclsFromListener' => [
'summary' => 'Disassociates access control lists (ACLs) from a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'AclIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The access control list (ACL) IDs. You can disassociate at most three ACLs from a listener in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the ACL.'."\n", 'type' => 'string', 'required' => false, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
'required' => true,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-bpn0kn908w4nbw****'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to disassociate ACLs from a listener.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
['errorCode' => 'LockFailed', 'errorMessage' => 'The specified resource lock failed.', 'description' => 'The specified resource lock failed.'],
],
404 => [
['errorCode' => 'ResourceNotAssociated.Acl', 'errorMessage' => 'The specified resource %s is not associated.', 'description' => 'The specified resource %s is not associated.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":""}]',
'title' => 'DissociateAclsFromListener',
'description' => '**DissociateAclsFromListener** 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 [ListAclRelations](~~213618~~) to query the status of an ACL.'."\n"
."\n"
.'* If an ACL is in the **Dissociating** state, the ACL is being disassociated from the listener.'."\n"
.'* If an ACL is in the **Dissociated** state, the ACL is disassociated from the listener.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DissociateAclsFromListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'DissociateAdditionalCertificatesFromListener' => [
'summary' => 'Dissociates one or more additional certificates from a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The listener ID. This parameter applies to HTTPS and QUIC listeners.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'lsn-5qnirjhpt7******'],
],
[
'name' => 'Certificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'A list of additional certificates. Only server certificates are supported. Specify a maximum of 20 certificates.',
'type' => 'array',
'items' => [
'description' => 'An additional certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The certificate ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '103705******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 15,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request. The client token must be a unique value that is generated by the client. The token can contain only ASCII characters.'."\n"
."\n"
.'Generate a unique value on your client. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request is unique.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run to check the request. The system checks for missing parameters, invalid formats, and service limits. If the request fails the check, an error is returned. If the request passes the check, the `DryRunOperation` error code is returned. No certificates are dissociated from the listener.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, an HTTP 2xx status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => '',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.HttpListenerNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.DefaultCertificateUsed', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceNotAssociated.Certificate', 'errorMessage' => 'The specified resource %s is not associated.', 'description' => 'The specified resource %s is not associated.'],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B******\\"\\n}","type":"json"}]',
'title' => 'DissociateAdditionalCertificatesFromListener',
'description' => '**DissociateAdditionalCertificatesFromListener** is an asynchronous operation. After you send a request, the system returns a request ID, but the operation is still being performed in the background. You can call [](t2324486.xdita#)to query the status of the dissociation task:'."\n"
."\n"
.'- If an additional certificate is in the **Dissociating** state, the dissociation is in progress.'."\n"
."\n"
.'- If an additional certificate is in the **Dissociated** state, the dissociation is complete.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DissociateAdditionalCertificatesFromListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'EnableDeletionProtection' => [
'summary' => 'Enables deletion protection for a resource.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => '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 and cannot exceed 64 characters in length.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'ResourceId',
'in' => 'query',
'schema' => ['description' => 'The Application Load Balancer (ALB) instance ID.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to enable the deletion protection feature.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'EnableDeletionProtection',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableDeletionProtection',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","type":"json"}]',
],
'EnableLoadBalancerAccessLog' => [
'summary' => 'Enables the access log feature for an Application Load Balancer (ALB) instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'abilityTreeCode' => '205',
'abilityTreeNodes' => ['FEATUREslb4A6LP3'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => '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 and cannot exceed 64 characters in length.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ALB instance ID.', 'type' => 'string', 'required' => true, 'example' => 'alb-bd6oylbckp6k9x****', 'title' => ''],
],
[
'name' => 'LogProject',
'in' => 'query',
'schema' => ['description' => 'The project to which the access log is shipped.', 'type' => 'string', 'required' => true, 'example' => 'sls-setter', 'title' => ''],
],
[
'name' => 'LogStore',
'in' => 'query',
'schema' => ['description' => 'The Logstore to which the access log is shipped.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
'JobId' => ['title' => 'jobId of the request', 'description' => 'The ID of the asynchronous job.', 'type' => 'string', 'example' => 'ff7713ca-5818-4120-85e3-0bf9******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.AccessLogEnabled', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'EnableLoadBalancerAccessLog',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableLoadBalancerAccessLog',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\",\\n \\"JobId\\": \\"ff7713ca-5818-4120-85e3-0bf9******\\"\\n}","type":"json"}]',
],
'EnableLoadBalancerIpv6Internet' => [
'summary' => 'Changes the type of the IPv6 address that is used by a dual-stack Application Load Balancer (ALB) instance from private to public.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'readAndWrite',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false**(default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-o2cvudgo6rlqz7****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response'."\n",
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'BB920797-D70E-567F-8098-55A861DD7912'],
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '4a6e3ad4-ef08-4ab1-b332-fa621cfe****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.NonDualStackInstance', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.Ipv6InternetInstance', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BB920797-D70E-567F-8098-55A861DD7912\\",\\n \\"JobId\\": \\"4a6e3ad4-ef08-4ab1-b332-fa621cfe****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BB920797-D70E-567F-8098-55A861DD7912\\n 4a6e3ad4-ef08-4ab1-b332-fa621cfe****\\n","errorExample":""}]',
'title' => 'EnableLoadBalancerIpv6Internet',
'description' => '### Prerequisites'."\n"
."\n"
.'An ALB instance is created and IPv4/IPv6 dual stack is enabled for the instance. You can call the [CreateLoadBalancer](~~214358~~) operation and set **AddressIpVersion** to **DualStack** to create a dual-stack ALB instance.'."\n"
."\n"
.'> If you set **AddressIpVersion** to **DualStack**:'."\n"
."\n"
.'* If you set **AddressType** to **Internet**, the ALB instance uses a public IPv4 IP address and a private IPv6 address.'."\n"
."\n"
.'* If you set **AddressType** to **Intranet**, the ALB instance uses a private IPv4 IP address and a private IPv6 address.'."\n"
."\n"
.'### Description'."\n"
."\n"
.'* After the EnableLoadBalancerIpv6Internet operation is called, the value of **Ipv6AddressType** is changed to **Internet** and the type of the IPv6 address of the ALB instance is changed from private to public. If you upgrade the instance or the instance scales elastic network interfaces (ENIs) along with workloads, public IPv6 addresses are automatically enabled for the instance and the new ENIs. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the value of **Ipv6AddressType**.'."\n"
."\n"
.'* **EnableLoadBalancerIpv6Internet** 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 [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the task.'."\n"
."\n"
.' * If the ALB instance is in the **Configuring** state, the network type of the IPv6 address that is used by the ALB instance is being changed.'."\n"
.' * If the ALB instance is in the **Active** state, the network type of the IPv6 address that is used by the ALB instance is changed.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableLoadBalancerIpv6Internet',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
],
'GetHealthCheckTemplateAttribute' => [
'summary' => 'Queries the details about a health check template.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '160',
'abilityTreeNodes' => ['FEATUREslb6RAQIN'],
],
'parameters' => [
[
'name' => 'HealthCheckTemplateId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the health check template.'."\n", 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'hct-x4jazoyi6tvsq9****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response'."\n",
'type' => 'object',
'properties' => [
'HealthCheckConnectPort' => ['title' => '', 'description' => 'The port that is used for health checks.'."\n"
."\n"
.'Valid values: **0** to **65535**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '80'],
'HealthCheckHost' => ['title' => '', 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
."\n"
.'* **$SERVER_IP**: the private IP addresses of backend servers. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP addresses of backend servers as domain names for health checks.'."\n"
.'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
."\n"
.'> This parameter takes effect only if `HealthCheckProtocol` is set to **HTTP** or **HTTPS**.'."\n", 'type' => 'string', 'example' => '$SERVER_IP'],
'HealthCheckCodes' => [
'title' => '',
'description' => 'The HTTP status codes that indicate a healthy backend server.'."\n",
'type' => 'array',
'items' => ['description' => 'The HTTP status code that indicates a healthy backend server.'."\n"
."\n"
.'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
.'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
."\n"
.'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n", 'type' => 'string', 'example' => 'http_2xx', 'title' => ''],
'example' => '',
],
'HealthCheckHttpVersion' => ['title' => '', 'description' => 'The HTTP version for health checks.'."\n"
."\n"
.'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
."\n"
.'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n", 'type' => 'string', 'example' => 'HTTP1.0'],
'HealthCheckTemplateId' => ['title' => '', 'description' => 'The ID of the health check template.'."\n", 'type' => 'string', 'example' => 'hct-x4jazoyi6tvsq9****'],
'HealthCheckInterval' => ['title' => '', 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1 to 50**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '3'],
'HealthCheckMethod' => ['title' => '', 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
."\n"
.'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
.'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
.'* **POST**: gRPC health checks use the POST method by default.'."\n"
."\n"
.'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n", 'type' => 'string', 'example' => 'GET'],
'HealthCheckPath' => ['title' => 'uri', 'description' => 'The URL that is used for health checks.'."\n"
."\n"
.'The URL must be 1 to 80 characters in length, and can contain letters, digits, the following special characters: - / . % ? # &, and the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n"
."\n"
.'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n", 'type' => 'string', 'example' => '/test/index.html'],
'HealthCheckProtocol' => ['title' => '', 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
."\n"
.'* **HTTP** (default): HTTP health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers.'."\n"
.'* **HTTPS**: The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy. HTTPS supports encryption and provides higher security than HTTP.'."\n"
.'* **TCP**: TCP health checks send TCP SYN packets to a backend server to probe the availability of backend servers.'."\n"
.'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to probe the availability of backend servers.'."\n", 'type' => 'string', 'example' => 'HTTP'],
'HealthCheckTemplateName' => ['title' => '', 'description' => 'The name of the health check template.'."\n"
."\n"
.'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", 'type' => 'string', 'example' => 'HealthCheckTemplate1'],
'HealthCheckTimeout' => ['title' => '', 'description' => 'The timeout period of a health check response. If a backend server does not respond within the specified timeout period, the backend server is declared unhealthy. Unit: seconds.'."\n"
."\n"
.'Valid values: **1** to **300**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '200'],
'HealthyThreshold' => ['title' => '', 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status is changed from **fail** to **success**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '5'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'DB1AFC33-DAE8-528E-AA4D-4A6A******'],
'UnhealthyThreshold' => ['title' => '', 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status is changed from **success** to **fail**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '5'],
'Tags' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length, and cannot start with `acs:`. The tag value cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
'ResourceGroupId' => ['description' => 'The resource group ID.'."\n", 'type' => 'string', 'example' => 'rg-atstuj3rtop****', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.HealthCheckTemplate', 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.HealthCheckTemplate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'GetHealthCheckTemplateAttribute',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetHealthCheckTemplateAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthchecktemplateId}'],
],
],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckHost\\": \\"$SERVER_IP\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP1.0\\",\\n \\"HealthCheckTemplateId\\": \\"hct-x4jazoyi6tvsq9****\\",\\n \\"HealthCheckInterval\\": 3,\\n \\"HealthCheckMethod\\": \\"GET\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTemplateName\\": \\"HealthCheckTemplate1\\",\\n \\"HealthCheckTimeout\\": 200,\\n \\"HealthyThreshold\\": 5,\\n \\"RequestId\\": \\"DB1AFC33-DAE8-528E-AA4D-4A6A******\\",\\n \\"UnhealthyThreshold\\": 5,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 80\\n $SERVER_IP\\n http_2xx,http_3xx\\n HTTP1.0\\n hct-x4jazoyi6tvsq9****\\n 3\\n GET\\n /test/index.html\\n HTTP\\n HealthCheckTemplate1\\n 200\\n 5\\n DB1AFC33-DAE8-528E-AA4D-4A6AABE71945\\n 5\\n","errorExample":""}]',
],
'GetListenerAttribute' => [
'summary' => 'Queries the details about a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '189',
'abilityTreeNodes' => ['FEATUREslbM7ALO6', 'FEATUREslbK3ZR0L', 'FEATUREslbN5IE4S'],
],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The details about the listener.',
'type' => 'object',
'properties' => [
'AclConfig' => [
'title' => '',
'description' => 'The configurations of the access control lists (ACLs).',
'type' => 'object',
'properties' => [
'AclRelations' => [
'title' => '',
'description' => 'The IDs of the ACLs that are associated with the listener.',
'type' => 'array',
'items' => [
'description' => 'The structure of the ACL that is associated with the listener.',
'type' => 'object',
'properties' => [
'AclId' => ['description' => 'The ID of the ACL that is associated with the listener.', 'type' => 'string', 'title' => '', 'example' => 'acl-doc****'],
'Status' => ['description' => 'Indicates whether the ACL is associated with the listener. Valid values:'."\n"
."\n"
.'- **Associating**'."\n"
."\n"
.'- **Associated**'."\n"
."\n"
.'- **Dissociating**', 'type' => 'string', 'title' => '', 'example' => 'Associating'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'AclType' => ['description' => 'The type of the ACL. Valid values:'."\n"
."\n"
.'- **White**: a whitelist. Only requests from the IP addresses or CIDR blocks in the network ACL are forwarded. Whitelists are applicable to scenarios in which you want to allow only specific IP addresses to access an application. Your service may be adversely affected if the whitelist is not properly configured. If a whitelist is configured for a listener, only requests from IP addresses that are on the whitelist are forwarded by the listener.'."\n"
."\n"
.' If you enable a whitelist but do not add an IP address to the whitelist, the listener forwards all requests.'."\n"
."\n"
.'- **Black**: a blacklist. Requests from the IP addresses or CIDR blocks in the network ACL are denied. Blacklists are suitable for scenarios in which you want to deny access from specific IP addresses or CIDR blocks to an application.'."\n"
."\n"
.' If a blacklist is configured for a listener but no IP addresses are added to the blacklist, the listener forwards all requests.', 'type' => 'string', 'title' => '', 'example' => 'White'],
],
'example' => '',
],
'Certificates' => [
'title' => '',
'description' => 'A list of certificates.',
'type' => 'array',
'items' => [
'description' => 'The configurations of the certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the certificate. Only server certificates are supported.', 'type' => 'string', 'title' => '', 'example' => '123157*******'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'CaCertificates' => [
'title' => '',
'description' => 'A list of default CA certificates.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the default CA certificate.', 'type' => 'string', 'title' => '', 'example' => '139a00*****'],
'Status' => ['description' => 'The status of the certificate.', 'type' => 'string', 'title' => '', 'example' => 'Associated'],
'IsDefault' => ['description' => 'Indicates whether the certificate is a default certificate: Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
],
'description' => '',
'title' => '',
'example' => '',
],
'example' => '',
],
'CaEnabled' => ['description' => 'Indicates whether mutual authentication is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'DefaultActions' => [
'title' => '',
'description' => 'The actions of the default forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The configurations of the default forwarding rule.',
'type' => 'object',
'properties' => [
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the ForwardGroup action. This parameter is returned and takes effect when Type is set to **ForwardGroup**.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The server group to which requests are forwarded.',
'type' => 'array',
'items' => [
'description' => 'The server groups to which requests are forwarded.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the server group to which requests are forwarded.', 'type' => 'string', 'title' => '', 'example' => 'sgp-i5qt20******'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
'Type' => ['description' => 'The type of the action.'."\n"
."\n"
.'If **ForwardGroup** is returned, requests are forwarded to multiple vServer groups.', 'type' => 'string', 'title' => '', 'example' => 'ForwardGroup'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'GzipEnabled' => ['description' => 'Indicates whether GZIP compression is enabled to compress specific types of files. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'Http2Enabled' => ['description' => 'Indicates whether HTTP/2 is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'IdleTimeout' => ['description' => 'The timeout period of an idle connection. Unit: seconds.'."\n"
."\n"
.'If no requests are received within the specified timeout period, Application Load Balancer (ALB) closes the current connection. When a request is received, ALB establishes a new connection.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'],
'ListenerDescription' => ['description' => 'The name of the listener.', 'type' => 'string', 'title' => '', 'example' => 'HTTP_80'],
'ListenerId' => ['description' => 'The ID of the listener.', 'type' => 'string', 'title' => '', 'example' => 'lsn-o4u54y73wq7b******'],
'ListenerPort' => ['description' => 'The frontend port that is used by the ALB instance.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '80'],
'ListenerProtocol' => ['description' => 'The listener protocol. Valid values: **HTTP**, **HTTPS**, and **QUIC**.', 'type' => 'string', 'title' => '', 'example' => 'HTTP'],
'ListenerStatus' => ['description' => 'The status of the listener. Valid values:'."\n"
."\n"
.'- **Provisioning**'."\n"
."\n"
.'- **Running**'."\n"
."\n"
.'- **Configuring**'."\n"
."\n"
.'- **Stopped**', 'type' => 'string', 'title' => '', 'example' => 'Running'],
'LoadBalancerId' => ['description' => 'The ALB instance ID.', 'type' => 'string', 'title' => '', 'example' => 'alb-bd6oylbckp6k9x****'],
'LogConfig' => [
'title' => '',
'description' => 'The logging configuration.',
'type' => 'object',
'properties' => [
'AccessLogRecordCustomizedHeadersEnabled' => ['description' => 'Indicates whether custom headers are recorded in the access log. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'AccessLogTracingConfig' => [
'title' => '',
'description' => 'The configuration of Xtrace. Xtrace is used to record requests sent to ALB.',
'type' => 'object',
'properties' => [
'TracingEnabled' => ['description' => 'Indicates whether Xtrace is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> You can set this parameter to **true** only if the AccessLogEnabled parameter is set to true.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'TracingSample' => ['description' => 'The sampling rate of Xtrace. Valid values: 1 to 10000.'."\n"
."\n"
.'> If **TracingEnabled** is set to **true**, this parameter is valid.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '100'],
'TracingType' => ['description' => 'The Xtrace type. Supported Xtrace type: **Zipkin**.'."\n"
."\n"
.'> If **TracingEnabled** is set to **true**, this parameter is valid.', 'type' => 'string', 'title' => '', 'example' => 'Zipkin'],
],
'example' => '',
],
],
'example' => '',
],
'QuicConfig' => [
'title' => '',
'description' => 'The configuration information when the listener is associated with a QUIC listener.',
'type' => 'object',
'properties' => [
'QuicListenerId' => ['description' => 'The ID of the QUIC listener. This parameter is returned when **QuicUpgradeEnabled** is set to **true**. Only HTTPS listeners support this parameter.'."\n"
."\n"
.'> You must associate the HTTPS listener and the QUIC listener with the same ALB instance. In addition, make sure that the QUIC listener has never been associated with another listener.', 'type' => 'string', 'title' => '', 'example' => 'lsn-ek6ad66t****'],
'QuicUpgradeEnabled' => ['description' => 'Indicates whether QUIC upgrade is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
],
'example' => '',
],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF******'],
'RequestTimeout' => ['description' => 'The timeout period of a request. Unit: seconds.'."\n"
."\n"
.'If no responses are received from the backend server within the specified timeout period, ALB returns an `HTTP 504` error code to the client.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '34'],
'SecurityPolicyId' => ['description' => 'The security policy.'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'string', 'title' => '', 'example' => 'tls_cipher_policy_1_1'],
'XForwardedForConfig' => [
'title' => '',
'description' => 'The configuration of the XForward headers.',
'type' => 'object',
'properties' => [
'XForwardedForClientCertClientVerifyAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
."\n"
.'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'string', 'title' => '', 'example' => 'test_client-verify-alias_123456'],
'XForwardedForClientCertClientVerifyEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Clientcert-clientverify` header is used to retrieve the verification result of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForClientCertFingerprintAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
."\n"
.'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'string', 'title' => '', 'example' => 'test_finger-print-alias_123456'],
'XForwardedForClientCertFingerprintEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Clientcert-fingerprint` header is used to retrieve the fingerprint of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForClientCertIssuerDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
."\n"
.'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'string', 'title' => '', 'example' => 'test_issue-dn-alias_123456'],
'XForwardedForClientCertIssuerDNEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Clientcert-issuerdn` header is used to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForClientCertSubjectDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
."\n"
.'The name is 1 to 40 characters in length, and can contain lowercase letters, hyphens (-), underscores (\\_), and digits.'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'string', 'title' => '', 'example' => 'test_subject-dn-alias_123456'],
'XForwardedForClientCertSubjectDNEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Clientcert-subjectdn` header is used to retrieve information about the owner of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForClientSrcPortEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Client-Port` header is used to retrieve the client port. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTP or HTTPS listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForEnabled' => ['description' => 'Indicates whether the `X-Forwarded-For` header is used to retrieve the client IP address. Valid values:'."\n"
."\n"
.'- **true** (default)'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> * If this parameter is set to **true**, the default value of the **XForwardedForProcessingMode** parameter is **append**. You can change it to **remove**.'."\n"
.'>'."\n"
.'> * If this parameter is set to **false**, the `X-Forwarded-For` header in the request is not modified in any way before the request is sent to backend servers.'."\n"
.'>'."\n"
.'> * This parameter is only available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForProcessingMode' => ['description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
."\n"
.'- **append** (default)'."\n"
."\n"
.'- **remove**'."\n"
."\n"
.'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
.'>'."\n"
.'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
.'>'."\n"
.'> * This parameter is only available for HTTP and HTTPS listeners.', 'type' => 'string', 'example' => 'append', 'title' => ''],
'XForwardedForProtoEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Proto` header is used to retrieve the listening protocol. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForSLBIdEnabled' => ['description' => 'Indicates whether the `SLB-ID` header is used to retrieve the ID of the CLB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForSLBPortEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Port` header is used to retrieve the listening port of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'XForwardedForClientSourceIpsEnabled' => ['description' => 'Indicates whether the `X-Forwarded-Client-Ip` header is used to retrieve the source port of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only when you create an HTTP, HTTPS, or QUIC listener.', 'type' => 'boolean', 'example' => 'false', 'title' => ''],
'XForwardedForClientSourceIpsTrusted' => ['description' => 'The trusted proxy IP address.'."\n"
."\n"
.'ALB traverses `X-Forwarded-For` backward and selects the first IP address that is not on the trusted IP address list as the real IP address of the client. The IP address is used in source IP address throttling.', 'type' => 'string', 'example' => '10.1.1.0/24', 'title' => ''],
'XForwardedForHostEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the client domain name. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'example' => 'false', 'title' => ''],
],
'example' => '',
],
'Tags' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'GetListenerAttribute',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetListenerAttribute',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'acs:ResourceTag', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AclConfig\\": {\\n \\"AclRelations\\": [\\n {\\n \\"AclId\\": \\"acl-doc****\\",\\n \\"Status\\": \\"Associating\\"\\n }\\n ],\\n \\"AclType\\": \\"White\\"\\n },\\n \\"Certificates\\": [\\n {\\n \\"CertificateId\\": \\"123157*******\\"\\n }\\n ],\\n \\"CaCertificates\\": [\\n {\\n \\"CertificateId\\": \\"139a00*****\\",\\n \\"Status\\": \\"Associated\\",\\n \\"IsDefault\\": true\\n }\\n ],\\n \\"CaEnabled\\": false,\\n \\"DefaultActions\\": [\\n {\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-i5qt20******\\"\\n }\\n ]\\n },\\n \\"Type\\": \\"ForwardGroup\\"\\n }\\n ],\\n \\"GzipEnabled\\": true,\\n \\"Http2Enabled\\": true,\\n \\"IdleTimeout\\": 2,\\n \\"ListenerDescription\\": \\"HTTP_80\\",\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTP\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"alb-bd6oylbckp6k9x****\\",\\n \\"LogConfig\\": {\\n \\"AccessLogRecordCustomizedHeadersEnabled\\": true,\\n \\"AccessLogTracingConfig\\": {\\n \\"TracingEnabled\\": true,\\n \\"TracingSample\\": 100,\\n \\"TracingType\\": \\"Zipkin\\"\\n }\\n },\\n \\"QuicConfig\\": {\\n \\"QuicListenerId\\": \\"lsn-ek6ad66t****\\",\\n \\"QuicUpgradeEnabled\\": true\\n },\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\",\\n \\"RequestTimeout\\": 34,\\n \\"SecurityPolicyId\\": \\"tls_cipher_policy_1_1\\",\\n \\"XForwardedForConfig\\": {\\n \\"XForwardedForClientCertClientVerifyAlias\\": \\"test_client-verify-alias_123456\\",\\n \\"XForwardedForClientCertClientVerifyEnabled\\": true,\\n \\"XForwardedForClientCertFingerprintAlias\\": \\"test_finger-print-alias_123456\\",\\n \\"XForwardedForClientCertFingerprintEnabled\\": true,\\n \\"XForwardedForClientCertIssuerDNAlias\\": \\"test_issue-dn-alias_123456\\",\\n \\"XForwardedForClientCertIssuerDNEnabled\\": true,\\n \\"XForwardedForClientCertSubjectDNAlias\\": \\"test_subject-dn-alias_123456\\",\\n \\"XForwardedForClientCertSubjectDNEnabled\\": true,\\n \\"XForwardedForClientSrcPortEnabled\\": true,\\n \\"XForwardedForEnabled\\": true,\\n \\"XForwardedForProcessingMode\\": \\"append\\",\\n \\"XForwardedForProtoEnabled\\": true,\\n \\"XForwardedForSLBIdEnabled\\": true,\\n \\"XForwardedForSLBPortEnabled\\": true,\\n \\"XForwardedForClientSourceIpsEnabled\\": false,\\n \\"XForwardedForClientSourceIpsTrusted\\": \\"10.1.1.0/24\\",\\n \\"XForwardedForHostEnabled\\": false\\n },\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n}","type":"json"}]',
],
'GetListenerHealthStatus' => [
'summary' => 'Retrieves the health check status of a listener and its forwarding rules.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslb6RAQIN', 'FEATUREslb52757O', 'FEATUREslbH8SCXY', 'FEATUREslbR7E3ND'],
],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the listener.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'lsn-o4u54y73wq7b******'],
],
[
'name' => 'IncludeRule',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to include the health check results for forwarding rules.'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
],
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The token used to retrieve the next page of results.'."\n"
."\n"
.'- You do not need to specify this parameter for the first request.'."\n"
."\n"
.'- For subsequent requests, set this parameter to the value of **NextToken** returned in the previous response.', 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', 'title' => ''],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The number of entries to return on each page. Range: **1** to **30**. Default: **20**.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '20', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The health check statuses of the listener and its associated forwarding rules.',
'type' => 'object',
'properties' => [
'ListenerHealthStatus' => [
'title' => '',
'description' => 'A list of health check statuses for the server groups that are associated with the listener.',
'type' => 'array',
'items' => [
'description' => 'The health check status of a server group that is associated with the listener.',
'type' => 'object',
'properties' => [
'ListenerId' => ['description' => 'The ID of the listener.', 'type' => 'string', 'title' => '', 'example' => 'lsn-o4u54y73wq7b******'],
'ListenerPort' => ['description' => 'The port of the listener.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '80'],
'ListenerProtocol' => ['description' => 'The protocol of the listener.', 'type' => 'string', 'title' => '', 'example' => 'http'],
'ServerGroupInfos' => [
'title' => '',
'description' => 'Information about the server groups.',
'type' => 'array',
'items' => [
'description' => 'Information about a server group.',
'type' => 'object',
'properties' => [
'HealthCheckEnabled' => ['description' => 'Indicates whether health checks are enabled. A value of `on` indicates that they are enabled.', 'type' => 'string', 'title' => '', 'example' => 'on'],
'NonNormalServers' => [
'title' => '',
'description' => 'A list of unhealthy backend servers.',
'type' => 'array',
'items' => [
'description' => 'The details of an unhealthy backend server.',
'type' => 'object',
'properties' => [
'Port' => ['description' => 'The port of the backend server.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '90'],
'Reason' => [
'title' => '',
'description' => 'The reason why the backend server is unhealthy.',
'type' => 'object',
'properties' => [
'ActualResponse' => ['description' => 'The actual response code returned by the backend server. For example, `302`.'."\n"
."\n"
.'> This parameter is returned only when `ReasonCode` is set to `RESPONSE_MISMATCH`.', 'type' => 'string', 'title' => '', 'example' => '302'],
'ExpectedResponse' => ['description' => 'The expected response code from the backend server.'."\n"
."\n"
.'You can specify multiple values. Separate them with commas (`,`).'."\n"
."\n"
.'> This parameter is returned only when `ReasonCode` is set to `RESPONSE_MISMATCH`.', 'type' => 'string', 'title' => '', 'example' => 'HTTP_2xx'],
'ReasonCode' => ['description' => 'The detailed reason why the backend server is in an abnormal `Status`.'."\n"
.'This parameter is returned only for HTTP and HTTPS listeners and forwarding rules.'."\n"
."\n"
.'- `CONNECT_TIMEOUT`: The connection to the backend server timed out during a health check.'."\n"
."\n"
.'- `CONNECT_FAILED`: The connection to the backend server failed during a health check.'."\n"
."\n"
.'- `RECV_RESPONSE_FAILED`: A response was not received from the backend server during a health check.'."\n"
."\n"
.'- `RECV_RESPONSE_TIMEOUT`: The health check timed out while waiting for a response from the backend server.'."\n"
."\n"
.'- `SEND_REQUEST_FAILED`: The health check request failed to be sent to the backend server.'."\n"
."\n"
.'- `SEND_REQUEST_TIMEOUT`: The health check timed out while sending a request to the backend server.'."\n"
."\n"
.'- `RESPONSE_FORMAT_ERROR`: The health check response from the backend server was malformed.'."\n"
."\n"
.'- `RESPONSE_MISMATCH`: The health check response code from the backend server did not match the expected code.', 'type' => 'string', 'title' => '', 'example' => 'RESPONSE_MISMATCH'],
],
'example' => '',
],
'ServerId' => ['description' => 'The ID of the backend server.', 'type' => 'string', 'title' => '', 'example' => 'i-uf62h8v******'],
'ServerIp' => ['description' => 'The IP address of the backend server.', 'type' => 'string', 'title' => '', 'example' => '192.168.8.10'],
'Status' => ['description' => 'The health check status. Valid values:'."\n"
."\n"
.'- `Initial`: The server is being initialized. Although health checks are configured, the first result has not yet been received.'."\n"
."\n"
.'- `Unhealthy`: The server has failed multiple consecutive health checks.'."\n"
."\n"
.'- `Unused`: The server is not in use. This can occur if its weight is set to 0, or if cross-zone load balancing is disabled and the server is in a different availability zone than the ALB instance.'."\n"
."\n"
.'- `Unavailable`: Health checks are disabled for this server.', 'type' => 'string', 'title' => '', 'example' => 'Initial'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'title' => '', 'example' => 'sgp-8ilqs4axp6******'],
'ActionType' => ['description' => 'The type of action for the server group. Valid values:'."\n"
."\n"
.'- `ForwardGroup`: Forwards traffic to the server group.'."\n"
."\n"
.'- `TrafficMirror`: Mirrors traffic to the server group.', 'type' => 'string', 'example' => 'TrafficMirror', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876F******'],
'RuleHealthStatus' => [
'title' => '',
'description' => 'A list of health check statuses for the forwarding rules.',
'type' => 'array',
'items' => [
'description' => 'The health check status of a forwarding rule.',
'type' => 'object',
'properties' => [
'RuleId' => ['description' => 'The ID of the forwarding rule.', 'type' => 'string', 'title' => '', 'example' => 'rule-hp34s2h0xx1ht4nwo****'],
'ServerGroupInfos' => [
'title' => '',
'description' => 'A list of associated server groups.',
'type' => 'array',
'items' => [
'description' => 'Details of an associated server group.',
'type' => 'object',
'properties' => [
'HealthCheckEnabled' => ['description' => 'Indicates whether health checks are enabled. A value of `on` indicates that they are enabled.', 'type' => 'string', 'title' => '', 'example' => 'on'],
'NonNormalServers' => [
'title' => '',
'description' => 'A list of unhealthy backend servers.',
'type' => 'array',
'items' => [
'description' => 'The details of an unhealthy backend server.',
'type' => 'object',
'properties' => [
'Port' => ['description' => 'The port of the backend server.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '90'],
'Reason' => [
'title' => '',
'description' => 'The reason why the backend server is unhealthy.',
'type' => 'object',
'properties' => [
'ActualResponse' => ['description' => 'The actual response code returned by the backend server. For example, `302`.'."\n"
."\n"
.'> This parameter is returned only when `ReasonCode` is set to `RESPONSE_MISMATCH`.', 'type' => 'string', 'title' => '', 'example' => '302'],
'ExpectedResponse' => ['description' => 'The expected response code from the backend server.'."\n"
."\n"
.'You can specify multiple values. Separate them with commas (`,`).'."\n"
."\n"
.'> This parameter is returned only when `ReasonCode` is set to `RESPONSE_MISMATCH`.', 'type' => 'string', 'title' => '', 'example' => 'HTTP_2xx'],
'ReasonCode' => ['description' => 'The detailed reason why the backend server is in an abnormal `Status`.'."\n"
.'This parameter is returned only for HTTP and HTTPS listeners and forwarding rules.'."\n"
."\n"
.'- `CONNECT_TIMEOUT`: The connection to the backend server timed out during a health check.'."\n"
."\n"
.'- `CONNECT_FAILED`: The connection to the backend server failed during a health check.'."\n"
."\n"
.'- `RECV_RESPONSE_FAILED`: A response was not received from the backend server during a health check.'."\n"
."\n"
.'- `RECV_RESPONSE_TIMEOUT`: The health check timed out while waiting for a response from the backend server.'."\n"
."\n"
.'- `SEND_REQUEST_FAILED`: The health check request failed to be sent to the backend server.'."\n"
."\n"
.'- `SEND_REQUEST_TIMEOUT`: The health check timed out while sending a request to the backend server.'."\n"
."\n"
.'- `RESPONSE_FORMAT_ERROR`: The health check response from the backend server was malformed.'."\n"
."\n"
.'- `RESPONSE_MISMATCH`: The health check response code from the backend server did not match the expected code.', 'type' => 'string', 'title' => '', 'example' => 'RESPONSE_MISMATCH'],
],
'example' => '',
],
'ServerId' => ['description' => 'The ID of the backend server.', 'type' => 'string', 'title' => '', 'example' => 'i-uf62h8v******'],
'ServerIp' => ['description' => 'The IP address of the backend server.', 'type' => 'string', 'title' => '', 'example' => '192.168.2.11'],
'Status' => ['description' => 'The health check status. Valid values:'."\n"
."\n"
.'- `Initial`: The server is being initialized. Although health checks are configured, the first result has not yet been received.'."\n"
."\n"
.'- `Unhealthy`: The server has failed multiple consecutive health checks.'."\n"
."\n"
.'- `Unused`: The server is not in use. This can occur if its weight is set to 0, or if cross-zone load balancing is disabled and the server is in a different availability zone than the ALB instance.'."\n"
."\n"
.'- `Unavailable`: Health checks are disabled for this server.', 'type' => 'string', 'title' => '', 'example' => 'Initial'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'title' => '', 'example' => 'sgp-8ilqs4axp6******'],
'ActionType' => ['description' => 'The type of action for the server group. Valid values: `ForwardGroup` (forwards traffic to the server group) and `TrafficMirror` (mirrors traffic to the server group).', 'type' => 'string', 'example' => 'TrafficMirror', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'NextToken' => ['description' => 'The pagination token that is used in the next request to retrieve a new page of results.'."\n"
."\n"
.'- If this parameter is empty, all results have been returned.'."\n"
."\n"
.'- If a value is returned, pass it in the next request to retrieve the next page of results.', 'type' => 'string', 'title' => '', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"http\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": \\"on\\",\\n \\"NonNormalServers\\": [\\n {\\n \\"Port\\": 90,\\n \\"Reason\\": {\\n \\"ActualResponse\\": \\"302\\",\\n \\"ExpectedResponse\\": \\"HTTP_2xx\\",\\n \\"ReasonCode\\": \\"RESPONSE_MISMATCH\\"\\n },\\n \\"ServerId\\": \\"i-uf62h8v******\\",\\n \\"ServerIp\\": \\"192.168.8.10\\",\\n \\"Status\\": \\"Initial\\"\\n }\\n ],\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\",\\n \\"ActionType\\": \\"TrafficMirror\\"\\n }\\n ]\\n }\\n ],\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\",\\n \\"RuleHealthStatus\\": [\\n {\\n \\"RuleId\\": \\"rule-hp34s2h0xx1ht4nwo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": \\"on\\",\\n \\"NonNormalServers\\": [\\n {\\n \\"Port\\": 90,\\n \\"Reason\\": {\\n \\"ActualResponse\\": \\"302\\",\\n \\"ExpectedResponse\\": \\"HTTP_2xx\\",\\n \\"ReasonCode\\": \\"RESPONSE_MISMATCH\\"\\n },\\n \\"ServerId\\": \\"i-uf62h8v******\\",\\n \\"ServerIp\\": \\"192.168.2.11\\",\\n \\"Status\\": \\"Initial\\"\\n }\\n ],\\n \\"ServerGroupId\\": \\"sgp-8ilqs4axp6******\\",\\n \\"ActionType\\": \\"TrafficMirror\\"\\n }\\n ]\\n }\\n ],\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\"\\n}","type":"json"}]',
'title' => 'GetListenerHealthStatus',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetListenerHealthStatus',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'GetLoadBalancerAttribute' => [
'summary' => 'Queries the details of an Application Load Balancer (ALB) instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '200',
'abilityTreeNodes' => ['FEATUREslbM7ALO6', 'FEATUREslbK3ZR0L', 'FEATUREslbN5IE4S'],
],
'parameters' => [
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The details of the ALB instance configuration.'."\n",
'type' => 'object',
'properties' => [
'AccessLogConfig' => [
'title' => '',
'description' => 'The configuration of the access log feature.'."\n",
'type' => 'object',
'properties' => [
'LogProject' => ['title' => '', 'description' => 'The Log Service project.'."\n", 'type' => 'string', 'example' => 'sls-setter'],
'LogStore' => ['title' => '', 'description' => 'The Logstore.'."\n", 'type' => 'string', 'example' => 'test'],
],
'example' => '',
],
'AddressAllocatedMode' => ['title' => '', 'description' => 'The mode in which IP addresses are allocated. Valid values:'."\n"
."\n"
.'* **Fixed**: allocates a static IP address to the ALB instance.'."\n"
.'* **Dynamic**: dynamically allocates an IP address to each zone of the ALB instance.'."\n", 'type' => 'string', 'example' => 'Dynamic'],
'AddressType' => ['title' => '', 'description' => 'The network type of the ALB instance. Valid values:'."\n"
."\n"
.'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
.'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. In this case, the ALB instance can be accessed over the virtual private cloud (VPC) where the ALB instance is deployed.'."\n", 'type' => 'string', 'example' => 'Intranet'],
'BandwidthPackageId' => ['title' => '', 'description' => 'The ID of the elastic IP address (EIP) bandwidth plan that is associated with the Internet-facing ALB instance.'."\n", 'type' => 'string', 'example' => 'cbwp-bp1vevu8h3ieh****'],
'CreateTime' => ['title' => '', 'description' => 'The time when the resource was created. The time follows the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n", 'type' => 'string', 'example' => '2022-07-02T02:49:05Z'],
'DNSName' => ['title' => '', 'description' => 'The domain name of the ALB instance.'."\n", 'type' => 'string', 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com'],
'DeletionProtectionConfig' => [
'title' => '',
'description' => 'The configuration of deletion protection.'."\n",
'type' => 'object',
'properties' => [
'Enabled' => ['title' => '', 'description' => 'Indicates whether the deletion protection feature is enabled. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'example' => 'true'],
'EnabledTime' => ['title' => '', 'description' => 'The time when the deletion protection feature was enabled. The time follows the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time is displayed in UTC.'."\n", 'type' => 'string', 'example' => '2022-08-02T02:49:05Z'],
],
'example' => '',
],
'LoadBalancerBillingConfig' => [
'title' => '',
'description' => 'The billing method of the ALB instance.'."\n",
'type' => 'object',
'properties' => [
'PayType' => ['title' => '', 'description' => 'The billing method.'."\n"
."\n"
.'Only **PostPay** is returned, which indicates the pay-as-you-go billing method.'."\n", 'type' => 'string', 'example' => 'PostPay', 'default' => 'PostPay'],
],
'example' => '',
],
'LoadBalancerBussinessStatus' => ['title' => '', 'description' => 'The service status of the ALB instance. Valid values:'."\n"
."\n"
.'* **Abnormal**'."\n"
.'* **Normal**'."\n", 'type' => 'string', 'example' => 'Normal'],
'LoadBalancerEdition' => ['title' => '', 'description' => 'The edition of the ALB instance. The features and billing rules vary based on the edition of the ALB instance. Valid values:'."\n"
."\n"
.'* **Basic**'."\n"
.'* **Standard**'."\n"
.'* **StandardWithWaf**'."\n", 'type' => 'string', 'example' => 'Standard'],
'LoadBalancerId' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'example' => 'alb-o9ulmq5hgn68jk****'],
'LoadBalancerName' => ['title' => '', 'description' => 'The name of the ALB instance.'."\n"
."\n"
.'The name must be 2 to 128 characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). The name must start with a letter.'."\n", 'type' => 'string', 'example' => 'alb1'],
'LoadBalancerOperationLocks' => [
'title' => '',
'description' => 'The type of the lock. Valid values:'."\n"
."\n"
.'* **SecurityLocked**: The ALB instance is locked due to security reasons.'."\n"
.'* **RelatedResourceLocked**: The ALB instance is locked due to association issues.'."\n"
.'* **FinancialLocked**: The ALB instance is locked due to overdue payments.'."\n"
.'* **ResidualLocked**: The ALB instance is locked because the associated resources have overdue payments and the resources are released.'."\n",
'type' => 'array',
'items' => [
'description' => '',
'type' => 'object',
'properties' => [
'LockReason' => ['title' => '', 'description' => 'The reason why the ALB instance is locked. This parameter is valid only if **LoadBalancerBussinessStatus** is set to **Abnormal**.'."\n", 'type' => 'string', 'example' => '欠费'],
'LockType' => ['title' => '', 'description' => 'The lock type. Valid values:'."\n"
."\n"
.'* **SecurityLocked**: The ALB instance is locked due to security reasons.'."\n"
.'* **RelatedResourceLocked**: The ALB instance is locked due to other resources that are associated with the ALB instance.'."\n"
.'* **FinancialLocked**: The ALB instance is locked due to overdue payments.'."\n"
.'* **ResidualLocked**: The ALB instance is locked because the associated resources have overdue payments and the resources are released.'."\n", 'type' => 'string', 'example' => 'FinancialLocked'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'LoadBalancerStatus' => ['title' => '', 'description' => 'The status of the ALB instance. Valid values:'."\n"
."\n"
.'* **Inactive**: The ALB instance is disabled. ALB instances in the Inactive state do not forward traffic.'."\n"
.'* **Active**: The ALB instance is running.'."\n"
.'* **Provisioning**: The ALB instance is being created.'."\n"
.'* **Configuring**: The ALB instance is being modified.'."\n"
.'* **CreateFailed**: The system failed to create the ALB instance. In this case, you are not charged for the ALB instance. You can only delete the ALB instance.'."\n", 'type' => 'string', 'example' => 'Active'],
'ModificationProtectionConfig' => [
'title' => '',
'description' => 'The configuration read-only mode settings.'."\n",
'type' => 'object',
'properties' => [
'Reason' => ['title' => '', 'description' => 'The reason why the configuration read-only mode is enabled.'."\n"
."\n"
.'The name must be 2 to 128 character characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n"
."\n"
.'This parameter takes effect only if **Status** is set to **ConsoleProtection**.'."\n", 'type' => 'string', 'example' => 'Managed instance'],
'Status' => ['title' => '', 'description' => 'Specifies whether the configuration read-only mode is enabled. Valid values:'."\n"
."\n"
.'* **NonProtection**: The configuration read-only mode is disabled. In this case, the value of the **Reason** parameter that you specify does not take effect. If you set **Reason**, the value is cleared.'."\n"
.'* **ConsoleProtection**: The configuration read-only mode is enabled. In this case, the value of the **Reason** parameter takes effect.****'."\n"
."\n"
.'> If the parameter is set to **ConsoleProtection**, the configuration read-only mode is enabled. You cannot modify the configurations of the ALB instance in the ALB console. However, you can call API operations to modify the configurations of the ALB instance.'."\n", 'type' => 'string', 'example' => 'ConsoleProtection'],
],
'example' => '',
],
'RegionId' => ['title' => '', 'description' => 'The region ID of the ALB instance.'."\n", 'type' => 'string', 'example' => 'cn-hangzhou'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
'ResourceGroupId' => ['title' => '', 'description' => 'The resource group ID.'."\n", 'type' => 'string', 'example' => 'rg-atstuj3rtop****'],
'Tags' => [
'title' => '',
'description' => 'The tag value.'."\n"
."\n"
.'The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag value cannot contain `http://` or `https://`.'."\n",
'type' => 'array',
'items' => [
'description' => '',
'type' => 'object',
'properties' => [
'Key' => ['title' => '', 'description' => 'The tag key.'."\n"
."\n"
.'The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'example' => 'FinanceDept'],
'Value' => ['title' => '', 'description' => 'The tag value.'."\n"
."\n"
.'The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.'."\n", 'type' => 'string', 'example' => 'FinanceJoshua'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'VpcId' => ['title' => '', 'description' => 'The ID of the VPC in which the ALB instance is deployed.'."\n", 'type' => 'string', 'example' => 'vpc-bp1b49rqrybk45nio****'],
'ZoneMappings' => [
'title' => '',
'description' => 'The mappings between zones and vSwitches. At most 10 zones are returned. If the current region supports two or more zones, at least two zones are returned.'."\n",
'type' => 'array',
'items' => [
'description' => 'The mappings between zones and vSwitches. At most 10 zones are returned. If the current region supports two or more zones, at least two zones are returned.'."\n",
'type' => 'object',
'properties' => [
'LoadBalancerAddresses' => [
'title' => '',
'description' => 'The address of the ALB instance.'."\n",
'type' => 'array',
'items' => [
'description' => 'The address of the ALB instance.'."\n",
'type' => 'object',
'properties' => [
'Address' => ['title' => '', 'description' => 'An IPv4 address.'."\n"
."\n"
.'This parameter takes effect when **AddressIPVersion** is set to **IPv4** or **DualStack**. The network type is determined by the value of **AddressType**.'."\n", 'type' => 'string', 'example' => '10.1.0.61'],
'Ipv6Address' => ['title' => '', 'description' => 'An IPv6 address.'."\n"
."\n"
.'This parameter takes effect only when **AddressIPVersion** is set to **DualStack**. The network type is determined by the value of **Ipv6AddressType**.'."\n", 'type' => 'string', 'example' => '2408:xxxx:249:dd01:6f4:750f:xxxx:bcd9'],
'IntranetAddress' => ['title' => '', 'description' => 'The private IPv4 address.'."\n", 'type' => 'string', 'example' => '10.1.0.61'],
'AllocationId' => ['description' => 'The elastic IP address (EIP).'."\n", 'type' => 'string', 'example' => 'eip-uf6wm****1zj9', 'title' => ''],
'EipType' => ['description' => 'The type of EIP. Valid values:'."\n"
."\n"
.'* **Common**: an EIP.'."\n"
.'* **Anycast**: an Anycast EIP.'."\n"
."\n"
.'> For more information about the regions in which ALB supports Anycast EIPs, see [Limits](~~460727~~).'."\n", 'type' => 'string', 'example' => 'Common', 'title' => ''],
'IntranetAddressHcStatus' => ['description' => 'The health status of the private IPv4 address of the ALB instance. '."\n"
.'This parameter is returned only when the Status of the zone is Active.Valid values:'."\n"
."\n"
.'- **Healthy**'."\n"
."\n"
.'- **Unhealthy**', 'type' => 'string', 'example' => 'Healthy', 'title' => ''],
'Ipv6AddressHcStatus' => ['description' => 'The health status of the private IPv6 address of the ALB instance. '."\n"
.'This parameter is returned only when the Status of the zone is Active.Valid values:'."\n"
."\n"
.'- **Healthy**'."\n"
."\n"
.'- **Unhealthy**', 'type' => 'string', 'example' => 'Healthy', 'title' => ''],
'Ipv4LocalAddresses' => [
'description' => 'The IPv4 link-local addresses. The IP addresses that the ALB instance uses to communicate with the backend servers.',
'type' => 'array',
'items' => ['description' => 'The IPv4 link-local address.', 'type' => 'string', 'example' => '10.1.0.62', 'title' => ''],
'title' => '',
'example' => '',
],
'Ipv6LocalAddresses' => [
'description' => 'The IPv6 link-local addresses. The IP addresses that the ALB instance uses to communicate with the backend servers.',
'type' => 'array',
'items' => ['description' => 'The IPv6 link-local address.', 'type' => 'string', 'example' => '2408:xxxx:249:dd01:6f4:750f:xxxx:bcda', 'title' => ''],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'VSwitchId' => ['title' => '', 'description' => 'The vSwitch in the zone. You can specify only one vSwitch (subnet) in each zone of an ALB instance.'."\n", 'type' => 'string', 'example' => 'vsw-bp12mw1f8k3jgy****'],
'ZoneId' => ['title' => '', 'description' => 'The zone ID of the ALB instance.'."\n"
."\n"
.'You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.'."\n", 'type' => 'string', 'example' => 'cn-hangzhou-a'],
'Status' => ['description' => 'The zone status. Valid values:'."\n"
."\n"
.'- **Active**: The ALB instance is running.'."\n"
."\n"
.'- **Stopped**: The ALB instance is disabled. '."\n"
."\n"
.'- **Shifted**: The ALB instance is removed.'."\n"
."\n"
.'- **Starting**: The ALB instance is starting.'."\n"
."\n"
.'- **Stopping**: The ALB instance is stopping.', 'type' => 'string', 'example' => 'Active', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'AddressIpVersion' => ['title' => '', 'description' => 'The IP version. Valid values:'."\n"
."\n"
.'* **IPv4**'."\n"
.'* **DualStack**'."\n", 'type' => 'string', 'example' => 'DualStack'],
'Ipv6AddressType' => ['title' => '', 'description' => 'The type of IPv6 address that is used by the ALB instance. Valid values:'."\n"
."\n"
.'* **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
.'* **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed over the VPC in which the ALB instance is deployed.'."\n", 'type' => 'string', 'example' => 'Intranet'],
'SecurityGroupIds' => [
'description' => 'The IDs of the security groups to which the ALB instance is added.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the security group to which the ALB instance is added.'."\n", 'type' => 'string', 'example' => 'sg-uf63j385dzwlm6cy****', 'title' => ''],
'title' => '',
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication has failed for LoadBalancer.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"AccessLogConfig\\": {\\n \\"LogProject\\": \\"sls-setter\\",\\n \\"LogStore\\": \\"test\\"\\n },\\n \\"AddressAllocatedMode\\": \\"Dynamic\\",\\n \\"AddressType\\": \\"Intranet\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1vevu8h3ieh****\\",\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"DNSName\\": \\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\",\\n \\"DeletionProtectionConfig\\": {\\n \\"Enabled\\": true,\\n \\"EnabledTime\\": \\"2022-08-02T02:49:05Z\\"\\n },\\n \\"LoadBalancerBillingConfig\\": {\\n \\"PayType\\": \\"PostPay\\"\\n },\\n \\"LoadBalancerBussinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerEdition\\": \\"Standard\\",\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hgn68jk****\\",\\n \\"LoadBalancerName\\": \\"alb1\\",\\n \\"LoadBalancerOperationLocks\\": [\\n {\\n \\"LockReason\\": \\"欠费\\",\\n \\"LockType\\": \\"FinancialLocked\\"\\n }\\n ],\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ModificationProtectionConfig\\": {\\n \\"Reason\\": \\"Managed instance\\",\\n \\"Status\\": \\"ConsoleProtection\\"\\n },\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"FinanceDept\\",\\n \\"Value\\": \\"FinanceJoshua\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp1b49rqrybk45nio****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"Address\\": \\"10.1.0.61\\",\\n \\"Ipv6Address\\": \\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcd9\\",\\n \\"IntranetAddress\\": \\"10.1.0.61\\",\\n \\"AllocationId\\": \\"eip-uf6wm****1zj9\\",\\n \\"EipType\\": \\"Common\\",\\n \\"IntranetAddressHcStatus\\": \\"Healthy\\",\\n \\"Ipv6AddressHcStatus\\": \\"Healthy\\",\\n \\"Ipv4LocalAddresses\\": [\\n \\"10.1.0.62\\"\\n ],\\n \\"Ipv6LocalAddresses\\": [\\n \\"2408:xxxx:249:dd01:6f4:750f:xxxx:bcda\\"\\n ]\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-bp12mw1f8k3jgy****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-a\\",\\n \\"Status\\": \\"Active\\"\\n }\\n ],\\n \\"AddressIpVersion\\": \\"DualStack\\",\\n \\"Ipv6AddressType\\": \\"Intranet\\",\\n \\"SecurityGroupIds\\": [\\n \\"sg-uf63j385dzwlm6cy****\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"","errorExample":""}]',
'title' => 'GetLoadBalancerAttribute',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetLoadBalancerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'ListAScripts' => [
'summary' => 'Queries AScript rules.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'list'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'allowEmptyValue' => true,
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.****'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'allowEmptyValue' => true,
'schema' => ['title' => '', 'description' => 'The maximum number of entries to return.'."\n"
."\n"
.'Valid values: **1** to **100**.'."\n"
."\n"
.'Default value: **20**. If you do not specify this parameter, the default value is used.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '50'],
],
[
'name' => 'ListenerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The listener IDs. You can specify at most 20 listener IDs in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The listener ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'lsn-9v9b8576m2laih****', 'title' => ''],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'AScriptIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The AScript rule IDs. You can specify at most 20 IDs in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The rule ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'as-aznwocxofkakf7****', 'title' => ''],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'AScriptNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The AScript rule names. You can specify at most 10 names in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The name of the AScript rule.'."\n", 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response'."\n",
'type' => 'object',
'properties' => [
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n"
."\n"
.'> This parameter is optional. By default, this parameter is not returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1000'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '2CA81429-F160-593A-8AB5-A2A9617845B9'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'MaxResults' => ['title' => '', 'description' => 'The maximum number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50'],
'AScripts' => [
'title' => '',
'description' => 'The AScript rules.'."\n",
'type' => 'array',
'items' => [
'description' => 'The AScript rule.'."\n",
'type' => 'object',
'properties' => [
'AScriptId' => ['title' => '', 'description' => 'The AScript rule ID.'."\n", 'type' => 'string', 'example' => 'as-aznwocxofkakf7****'],
'AScriptName' => ['title' => '', 'description' => 'The name of the AScript rule.'."\n", 'type' => 'string', 'example' => 'test'],
'Enabled' => ['title' => '', 'description' => 'Indicates whether the AScript rule is enabled. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'example' => 'true'],
'ScriptContent' => ['title' => '', 'description' => 'The content of the AScript rule.'."\n", 'type' => 'string', 'example' => '{test}'],
'AScriptStatus' => ['title' => '', 'description' => 'The status of the AScript rule. Valid values:'."\n"
."\n"
.'* **Creating**'."\n"
.'* **Available**'."\n"
.'* **Configuring**'."\n"
.'* **Deleting**'."\n", 'type' => 'string', 'example' => 'Available'],
'ListenerId' => ['title' => '', 'description' => 'The listener ID.'."\n", 'type' => 'string', 'example' => 'lsn-t0w1m9r6suiwmc****'],
'LoadBalancerId' => ['title' => '', 'description' => 'The Application Load Balancer (ALB) instance ID.'."\n", 'type' => 'string', 'example' => 'alb-vv9rg2ub31tyec****'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication has failed for LoadBalancer.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"TotalCount\\": 1000,\\n \\"RequestId\\": \\"2CA81429-F160-593A-8AB5-A2A9617845B9\\",\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"MaxResults\\": 50,\\n \\"AScripts\\": [\\n {\\n \\"AScriptId\\": \\"as-aznwocxofkakf7****\\",\\n \\"AScriptName\\": \\"test\\",\\n \\"Enabled\\": true,\\n \\"ScriptContent\\": \\"{test}\\",\\n \\"AScriptStatus\\": \\"Available\\",\\n \\"ListenerId\\": \\"lsn-t0w1m9r6suiwmc****\\",\\n \\"LoadBalancerId\\": \\"alb-vv9rg2ub31tyec****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1000\\n 2CA81429-F160-593A-8AB5-A2A9617845B9\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 50\\n \\n as-aznwocxofkakf7****\\n test\\n true\\n {test}\\n Available\\n lsn-t0w1m9r6suiwmc****\\n alb-vv9rg2ub31tyec****\\n \\n","errorExample":""}]',
'title' => 'ListAScripts',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
],
'ListAclEntries' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'- You do not need to specify this parameter for the first request.'."\n"
."\n"
.'- You must specify the token that is obtained from the previous query as the value of **NextToken**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '1', 'default' => '20', 'title' => '', 'required' => false, 'example' => '50'],
],
[
'name' => 'AclId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ACL.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'AclEntries' => [
'title' => '',
'description' => 'The ACL entries.',
'type' => 'array',
'items' => [
'description' => 'The ACL entry.',
'type' => 'object',
'properties' => [
'Description' => ['description' => 'The description of the ACL entry. The description must be 1 to 256 characters in length, and can contain letters, digits, hyphens (-), forward slashes (/), periods (.), and underscores (\\_).', 'type' => 'string', 'title' => '', 'example' => 'test-entry'],
'Entry' => ['description' => 'The CIDR block for the ACL entry.', 'type' => 'string', 'title' => '', 'example' => '10.0.1.1/24'],
'Status' => ['description' => 'The status of the ACL entry. Valid values:'."\n"
."\n"
.'- **Adding**: The ACL entry is being added.'."\n"
."\n"
.'- **Available**: The ACL entry is added and available.'."\n"
."\n"
.'- **Removing**: The ACL entry is being removed.', 'type' => 'string', 'title' => '', 'example' => 'Available'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '50'],
'NextToken' => ['description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, no next page exists.'."\n"
."\n"
.'- If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.', 'type' => 'string', 'title' => '', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F87******'],
'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1000'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'ACL authentication has failed.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'ListAclEntries',
'summary' => 'Queries the entries of an access control list (ACL).',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAclEntries',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AclEntries\\": [\\n {\\n \\"Description\\": \\"test-entry\\",\\n \\"Entry\\": \\"10.0.1.1/24\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F87******\\",\\n \\"TotalCount\\": 1000\\n}","type":"json"}]',
],
'ListAclRelations' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'AclIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The access control list (ACL) IDs. You can query at most five ACLs in each call.',
'type' => 'array',
'items' => ['description' => 'The ID of the ACL.', 'type' => 'string', 'required' => false, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
'required' => true,
'maxItems' => 5,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'AclRelations' => [
'title' => '',
'description' => 'The relations between the specified ACL and the listeners.',
'type' => 'array',
'items' => [
'description' => 'The ACL and the associated listeners.',
'type' => 'object',
'properties' => [
'AclId' => ['description' => 'ACL ID', 'type' => 'string', 'title' => '', 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
'RelatedListeners' => [
'title' => '',
'description' => 'The listeners that are associated with the ACL.',
'type' => 'array',
'items' => [
'description' => 'The listener that is associated with the ACL.',
'type' => 'object',
'properties' => [
'ListenerId' => ['description' => 'The listener ID.', 'type' => 'string', 'title' => '', 'example' => 'lsn-bpn0kn908w4nbw****'],
'ListenerPort' => ['description' => 'The listener port.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '80'],
'ListenerProtocol' => ['description' => 'The listener protocol.', 'type' => 'string', 'title' => '', 'example' => 'HTTPS'],
'LoadBalancerId' => ['description' => 'The ID of the SLB instance.', 'type' => 'string', 'title' => '', 'example' => 'alb-bp1b6c719dfa08ex****'],
'Status' => ['description' => 'The association status between the ACL and the listener.'."\n"
."\n"
.'- **Associating**'."\n"
."\n"
.'- **Associated**'."\n"
."\n"
.'- **Dissociating**', 'type' => 'string', 'title' => '', 'example' => 'Associated'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0******', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'ListAclRelations',
'summary' => 'Queries the listeners that are associated with access control lists (ACLs).',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAclRelations',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AclRelations\\": [\\n {\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"RelatedListeners\\": [\\n {\\n \\"ListenerId\\": \\"lsn-bpn0kn908w4nbw****\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTPS\\",\\n \\"LoadBalancerId\\": \\"alb-bp1b6c719dfa08ex****\\",\\n \\"Status\\": \\"Associated\\"\\n }\\n ]\\n }\\n ],\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\"\\n}","type":"json"}]',
],
'ListAcls' => [
'summary' => 'Queries the access control lists (ACLs) in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'list'],
'parameters' => [
[
'name' => 'AclIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'Filter access control lists (ACLs) by ACL ID. You can specify at most 20 ACL IDs in each call.',
'type' => 'array',
'items' => ['description' => 'The ACL ID.', 'type' => 'string', 'required' => false, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'AclNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The ACL names. You can specify up to 10 ACL names in each call.',
'type' => 'array',
'items' => ['description' => 'The ACL name.', 'type' => 'string', 'required' => false, 'example' => 'test-acl', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group. You can filter the query results based on the specified ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-atstuj3rtopty****'],
],
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The token that is used for the next query. Valid values:'."\n"
."\n"
.'- If this is your first query or no next query is to be sent, ignore this parameter.'."\n"
."\n"
.'- If a next query is to be sent, set the value to the value of NextToken that is returned from the last call.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The maximum number of entries to return. This parameter is optional. Valid values: **1** to **100**. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '1', 'default' => '20', 'title' => '', 'required' => false, 'example' => '50'],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'Acls' => [
'title' => '',
'description' => 'A list of ACLs.',
'type' => 'array',
'items' => [
'description' => 'The network ACLs.',
'type' => 'object',
'properties' => [
'AclId' => ['description' => 'The ACL ID.', 'type' => 'string', 'title' => '', 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
'AclName' => ['description' => 'The name of the ACL.', 'type' => 'string', 'title' => '', 'example' => 'test-acl'],
'AclStatus' => ['description' => 'The status of the ACL. Valid values:'."\n"
."\n"
.'- **Creating**: The network ACL is being created.'."\n"
."\n"
.'- **Available**: The network ACL is available.'."\n"
."\n"
.'- **Configuring**', 'type' => 'string', 'title' => '', 'example' => 'Available'],
'AddressIPVersion' => ['description' => 'The IP version of the ACL. Only **IPv4** may be returned.', 'type' => 'string', 'title' => '', 'example' => 'IPv4'],
'ResourceGroupId' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'title' => '', 'example' => 'rg-atstuj3rtopty****'],
'ConfigManagedEnabled' => ['description' => 'Indicates whether configuration management is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'CreateTime' => ['description' => 'The time when the ACL was created. The follows the `YYYY-MM-DDThh:mm:ssZ` format.', 'type' => 'string', 'example' => '2023-02-15T07:37:33Z', 'title' => ''],
'Tags' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http\\:// or https\\://.', 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http\\:// or https\\://.', 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['description' => 'The maximum number of network ACLs returned. This parameter is optional. Valid values: **1** to **100**. If this parameter is not set, the default value **20** is returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''],
'NextToken' => ['description' => 'The token that is used for the next query. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, it indicates that no next query is to be sent.'."\n"
."\n"
.'- If **NextToken** is returned, the value indicates the token that is used for the next query.', 'type' => 'string', 'example' => 'FFmyTO70t****', 'title' => ''],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'ACL authentication has failed.', 'description' => ''],
],
],
'title' => 'ListAcls',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListAcls',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/*'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Acls\\": [\\n {\\n \\"AclId\\": \\"acl-hp34s2h0xx1ht4nwo****\\",\\n \\"AclName\\": \\"test-acl\\",\\n \\"AclStatus\\": \\"Available\\",\\n \\"AddressIPVersion\\": \\"IPv4\\",\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtopty****\\",\\n \\"ConfigManagedEnabled\\": false,\\n \\"CreateTime\\": \\"2023-02-15T07:37:33Z\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70t****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\",\\n \\"TotalCount\\": 10\\n}","type":"json"}]',
],
'ListAsynJobs' => [
'summary' => 'Queries asynchronous tasks in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'JobIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The asynchronous task IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'bfb728bf-53a8-4886-84cb-829******', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the associated resource. Valid values:'."\n"
."\n"
.'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
.'* **listener**: a listener'."\n"
.'* **rule**: a forwarding rule'."\n"
.'* **acl**: an access control list (ACL)'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'required' => false, 'example' => 'loadbalancer'],
],
[
'name' => 'ResourceIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The resource IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The resource ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'alb-o8mszt95oamfjy****', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
[
'name' => 'ApiName',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The name of the operation.'."\n", 'type' => 'string', 'required' => false, 'example' => 'CreateLoadBalancer'],
],
[
'name' => 'BeginTime',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The timestamp that indicates the start time of the task. Unit: milliseconds.'."\n"
."\n"
.'Specify the timestamp in the Unix format to indicate the total amount of time that is from 00:00:00 (UTC+0) on January 1, 1970 to when the status of the asynchronous task is queried.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '2134663231234'],
],
[
'name' => 'EndTime',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The timestamp that indicates the end time of the task. Unit: milliseconds.'."\n"
."\n"
.'Specify the timestamp in the Unix format to indicate the total amount of time that is from 00:00:00 (UTC+0) on January 1, 1970 to when the status of the asynchronous task is returned.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '2144663233315'],
],
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '20'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The tasks.'."\n",
'type' => 'object',
'properties' => [
'Jobs' => [
'title' => '',
'description' => 'The tasks.'."\n",
'type' => 'array',
'items' => [
'description' => 'The task.'."\n",
'type' => 'object',
'properties' => [
'ApiName' => ['title' => '', 'description' => 'The name of the operation.'."\n", 'type' => 'string', 'example' => 'CreateLoadBalancer'],
'CreateTime' => ['title' => '', 'description' => 'The timestamp that indicates the start time of the task. Unit: milliseconds.'."\n"
."\n"
.'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '2134663231234'],
'ErrorCode' => ['title' => '', 'description' => 'If the value of **Status** is Failed, an error code is returned.'."\n", 'type' => 'string', 'example' => '506'],
'ErrorMessage' => ['title' => '', 'description' => 'If the value of **Status** is Failed, an error message is returned.'."\n", 'type' => 'string', 'example' => 'AllocateEipAddress Failed'],
'Id' => ['title' => '', 'description' => 'The task ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B5****'],
'ModifyTime' => ['title' => '', 'description' => 'The timestamp that indicates the end time of the task. Unit: milliseconds.'."\n"
."\n"
.'This value is a UNIX timestamp representing the number of milliseconds that have elapsed since the epoch time January 1, 1970, 00:00:00 UTC.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '2144663233315'],
'OperateType' => ['title' => '', 'description' => 'The type of the operation. Valid values:'."\n"
."\n"
.'* **Create**'."\n"
.'* **Update**'."\n"
.'* **Delete**'."\n", 'type' => 'string', 'example' => 'Create'],
'ResourceId' => ['title' => '', 'description' => 'The associated resource ID.'."\n", 'type' => 'string', 'example' => 'alb-o8mszt95oamfjy****'],
'ResourceType' => ['title' => '', 'description' => 'The type of the associated resource. Valid values:'."\n"
."\n"
.'* **loadbalancer**: an ALB instance'."\n"
.'* **listener**: a listener'."\n"
.'* **rule**: a forwarding rule'."\n"
.'* **acl**: an ACL'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'example' => 'loadbalancer'],
'Status' => ['title' => '', 'description' => 'The status of the task. Valid values:'."\n"
."\n"
.'* **Succeeded**'."\n"
.'* **Failed**'."\n"
.'* **Processing**'."\n", 'type' => 'string', 'example' => 'Succeeded'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['title' => '', 'description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '10'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1000'],
],
'example' => '',
],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"Jobs\\": [\\n {\\n \\"ApiName\\": \\"CreateLoadBalancer\\",\\n \\"CreateTime\\": 2134663231234,\\n \\"ErrorCode\\": \\"506\\",\\n \\"ErrorMessage\\": \\"AllocateEipAddress Failed\\",\\n \\"Id\\": \\"365F4154-92F6-4AE4-92F8-7FF34B5****\\",\\n \\"ModifyTime\\": 2144663233315,\\n \\"OperateType\\": \\"Create\\",\\n \\"ResourceId\\": \\"alb-o8mszt95oamfjy****\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"Status\\": \\"Succeeded\\"\\n }\\n ],\\n \\"MaxResults\\": 10,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"\\n \\n CreateLoadBalancer\\n 2134663231234\\n 506\\n AllocateEipAddress Failed\\n 365F4154-92F6-4AE4-92F8-7FF34B5****\\n 2144663233315\\n Create\\n alb-o8mszt95oamfjy****\\n acl\\n Succeeded\\n \\n 10\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n 1000\\n","errorExample":""}]',
'title' => 'ListAsynJobs',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAsynJobs',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
],
],
'ListHealthCheckTemplates' => [
'summary' => 'Queries health check templates in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'list',
'abilityTreeCode' => '151',
'abilityTreeNodes' => ['FEATUREslb6RAQIN'],
],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries to return in each call. Valid values: **1** to **100**. Default value: **20**'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '50', 'default' => '20'],
],
[
'name' => 'HealthCheckTemplateIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The IDs of health check templates.'."\n",
'type' => 'array',
'items' => ['description' => 'The IDs of health check templates. You can specify up to 20 IDs in each call. The results are filtered based on the specified IDs.'."\n", 'type' => 'string', 'required' => false, 'example' => 'hct-bp1qjwo61pqz3ahltv****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'HealthCheckTemplateNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The health check templates.'."\n",
'type' => 'array',
'items' => ['description' => 'The names of health check templates. You can specify up to 10 names in each call. The results are filtered based on the specified names.'."\n", 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The resource group ID. You can filter the query results based on the specified ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The information about the health check templates.'."\n",
'type' => 'object',
'properties' => [
'HealthCheckTemplates' => [
'title' => '',
'description' => 'The health check templates.'."\n",
'type' => 'array',
'items' => [
'description' => 'The information about the health check template.'."\n",
'type' => 'object',
'properties' => [
'HealthCheckConnectPort' => ['title' => '', 'description' => 'The port that is used for health checks.'."\n"
."\n"
.'Valid values: \\*\\* 0 to 65535\\*\\*.'."\n"
."\n"
.'The default value is **0**, which specifies that the port of a backend server is used for health checks.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '80'],
'HealthCheckHost' => ['title' => '', 'description' => 'The domain name that is used for health checks. Valid values:'."\n"
."\n"
.'* **$SERVER_IP** (default): the private IP address of a backend server. If an IP address is specified, or this parameter is not specified, the ALB instance uses the private IP address of each backend server as the domain name for health checks.'."\n"
.'* **domain**: The domain name must be 1 to 80 characters in length, and can contain letters, digits, periods (.), and hyphens (-).'."\n"
."\n"
.'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n", 'type' => 'string', 'example' => '$SERVER_IP'],
'HealthCheckCodes' => [
'title' => '',
'description' => 'The HTTP status codes that indicate healthy backend servers.'."\n",
'type' => 'array',
'items' => ['description' => 'The HTTP status code that indicates healthy backend servers.'."\n"
."\n"
.'* If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can set **HealthCheckCodes** to **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, or **http\\_5xx**. Separate multiple status codes with commas (,).'."\n"
.'* If **HealthCheckProtocol** is set to **gRPC**, the valid values of **HealthCheckCodes** are from **0 to 99**. The default value is **0**. Value ranges are supported. You can enter at most 20 value ranges. Separate multiple value ranges with commas (,).'."\n"
."\n"
.'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n", 'type' => 'string', 'example' => 'http_2xx', 'title' => ''],
'example' => '',
],
'HealthCheckHttpVersion' => ['title' => '', 'description' => 'The HTTP version for health checks.'."\n"
."\n"
.'Valid values: **HTTP 1.0** and **HTTP 1.1**.'."\n"
."\n"
.'Default value: **HTTP 1.1**.'."\n"
."\n"
.'> This parameter takes effect only if you set `HealthCheckProtocol` to **HTTP** or **HTTPS**.'."\n", 'type' => 'string', 'example' => 'HTTP 1.0'],
'HealthCheckInterval' => ['title' => '', 'description' => 'The interval at which health checks are performed. Unit: seconds. Valid values: **1 to 50**. Default value: **2**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '5'],
'HealthCheckMethod' => ['title' => '', 'description' => 'The HTTP method that is used for health checks. Valid values:'."\n"
."\n"
.'* **HEAD** (default): By default, HTTP and HTTPS health checks use the HEAD method.'."\n"
.'* **GET**: If the length of a response exceeds 8 KB, the response is truncated. However, the health check result is not affected.'."\n"
.'* **POST**: gRPC health checks use the POST method by default.'."\n"
."\n"
.'> This parameter takes effect only if you set **HealthCheckProtocol** to **HTTP**, **HTTPS**, or **gRPC**.'."\n", 'type' => 'string', 'example' => 'HEAD'],
'HealthCheckPath' => ['title' => 'uri', 'description' => 'The URL path that you want to use for health checks.'."\n"
."\n"
.'The URL must be 1 to 80 characters in length, and can contain letters, digits, the following special characters: - / . % ? # &, and the following extended characters: `_ ; ~ ! ( ) * [ ] @ $ ^ : \' , +`. The URL must start with a forward slash (/).'."\n", 'type' => 'string', 'example' => '/test/index.html'],
'HealthCheckProtocol' => ['title' => '', 'description' => 'The protocol that is used for health checks. Valid values:'."\n"
."\n"
.'* **HTTP** (default): The ALB instance sends HEAD or GET requests, which simulate browser requests, to check whether the backend server is healthy.'."\n"
.'* **HTTPS**: HTTPS health checks simulate browser behaviors by sending HEAD or GET requests to probe the availability of backend servers. HTTPS provides higher security because HTTPS supports data encryption.'."\n"
.'* **TCP**: TCP health checks send TCP SYN packets to a backend server to check whether the port of the backend server is reachable.'."\n"
.'* **gRPC**: gRPC health checks send POST or GET requests to a backend server to check whether the backend server is healthy.'."\n", 'type' => 'string', 'example' => 'HTTP'],
'HealthCheckTemplateId' => ['title' => '', 'description' => 'The ID of the health check template.'."\n", 'type' => 'string', 'example' => 'hct-bp1qjwo61pqz3ahltv****'],
'HealthCheckTemplateName' => ['title' => '', 'description' => 'The name of the health check template.'."\n"
."\n"
.'The name must be 2 to 128 character characters in length, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-). It must start with a letter.'."\n", 'type' => 'string', 'example' => 'HealthCheckTemplate1'],
'HealthCheckTimeout' => ['title' => '', 'description' => 'The timeout period of a health check response. If a backend Elastic Compute Service (ECS) instance does not respond within the specified timeout period, the ECS instance fails to pass the health check.'."\n"
."\n"
.'Valid values: **1 to 300**. Unit: seconds.'."\n"
."\n"
.'Default value: **5**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '3'],
'HealthyThreshold' => ['title' => '', 'description' => 'The number of times that an unhealthy backend server must consecutively pass health checks before it is declared healthy. In this case, the health status changes from **fail** to **success**.'."\n"
."\n"
.'Valid values: **2 to 10**.'."\n"
."\n"
.'Default value: **3**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '4'],
'UnhealthyThreshold' => ['title' => '', 'description' => 'The number of times that a healthy backend server must consecutively fail health checks before it is declared unhealthy. In this case, the health status changes from **success** to **fail**.'."\n"
."\n"
.'Valid values: **2 to 10**.'."\n"
."\n"
.'Default value: **3**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '4'],
'Tags' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
'ResourceGroupId' => ['description' => 'The resource group ID.'."\n", 'type' => 'string', 'example' => 'rg-atstuj3rtop****', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['title' => '', 'description' => 'The number of entries returned per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50'],
'NextToken' => ['title' => '', 'description' => 'The returned value of NextToken is a pagination token, which can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value of **NextToken** was returned in the previous query, specify the value to obtain the next set of results.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1000'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.HealthCheckTemplate', 'errorMessage' => 'Authentication has failed for HealthCheckTemplate.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"HealthCheckTemplates\\": [\\n {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckHost\\": \\"$SERVER_IP\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP 1.0\\",\\n \\"HealthCheckInterval\\": 5,\\n \\"HealthCheckMethod\\": \\"HEAD\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTemplateId\\": \\"hct-bp1qjwo61pqz3ahltv****\\",\\n \\"HealthCheckTemplateName\\": \\"HealthCheckTemplate1\\",\\n \\"HealthCheckTimeout\\": 3,\\n \\"HealthyThreshold\\": 4,\\n \\"UnhealthyThreshold\\": 4,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\"\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 80\\n $_ip\\n http_2xx,http_3xx\\n HTTP 1.0\\n 5\\n HEAD\\n /test/index.html\\n HTTP\\n hct-bp1qjwo61pqz3ahltv****\\n HealthCheckTemplate1\\n 3\\n 4\\n 4\\n \\n 50\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n 1000\\n","errorExample":""}]',
'title' => 'ListHealthCheckTemplates',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListHealthCheckTemplates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/*'],
],
],
],
],
],
'ListListenerCertificates' => [
'summary' => 'Queries the certificates that are associated with a listener, including additional certificates and the default certificate.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries to return in each call. Valid values: **1 to 100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '50', 'default' => '20'],
],
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The listener ID. You must specify the ID of an HTTPS listener or a QUIC listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-5qnirjhpt******'],
],
[
'name' => 'CertificateType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the certificate. Valid values: **Ca** and **Server**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'Server'],
],
[
'name' => 'CertificateIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The certificates.'."\n",
'type' => 'array',
'items' => ['description' => 'The certificate ID.'."\n", 'type' => 'string', 'required' => false, 'example' => '1416****-cn-hangzhou', 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'MaxResults' => ['title' => '', 'description' => 'The maximum number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1000'],
'Certificates' => [
'title' => '',
'description' => 'The certificates.'."\n",
'type' => 'array',
'items' => [
'description' => 'The certificate.'."\n",
'type' => 'object',
'properties' => [
'CertificateId' => ['title' => '', 'description' => 'The certificate ID. Only server certificates are supported.'."\n", 'type' => 'string', 'example' => '123157******'],
'IsDefault' => ['title' => '', 'description' => 'Indicates whether the certificate is the default certificate of the listener. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'example' => 'true'],
'Status' => ['title' => '', 'description' => 'Indicates whether the certificate is associated with the listener. Valid values:'."\n"
."\n"
.'* **Associating**'."\n"
.'* **Associated**'."\n"
.'* **Diassociating**'."\n", 'type' => 'string', 'example' => 'Associating'],
'CertificateType' => ['title' => '', 'description' => 'The type of the certificate.'."\n", 'type' => 'string', 'example' => 'Server'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.HttpListenerNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000,\\n \\"Certificates\\": [\\n {\\n \\"CertificateId\\": \\"123157******\\",\\n \\"IsDefault\\": true,\\n \\"Status\\": \\"Associating\\",\\n \\"CertificateType\\": \\"Server\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 50\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n 1000\\n \\n 12315790343_166f8204689_1714763408_70998****\\n true\\n Associating\\n Server\\n \\n","errorExample":""}]',
'title' => 'ListListenerCertificates',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListListenerCertificates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'ListListeners' => [
'summary' => 'Queries the listeners in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '190',
'abilityTreeNodes' => ['FEATUREslbM7ALO6', 'FEATUREslbK3ZR0L', 'FEATUREslbN5IE4S'],
],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* If a value is returned for NextToken, you must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I4FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The maximum number of entries to return. This parameter is optional. Valid values: **1 to 100**. If you do not specify this parameter, the default value **20** is used.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '50'],
],
[
'name' => 'ListenerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The listener IDs. You can specify at most 20 listener IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The listener ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'lsn-o4u54y73wq7b******', 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'LoadBalancerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The ALB instance ID. You can specify at most 20 instance IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'alb-bd6oylbckp6k9x****', 'title' => ''],
'required' => false,
'maxItems' => 21,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ListenerProtocol',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The listener protocol. Valid values:'."\n"
."\n"
.'* **HTTP**'."\n"
.'* **HTTPS**'."\n"
.'* **QUIC**'."\n", 'type' => 'string', 'required' => false, 'example' => 'HTTP'],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The information about the listeners.'."\n",
'type' => 'object',
'properties' => [
'Listeners' => [
'title' => '',
'description' => 'The listeners.'."\n",
'type' => 'array',
'items' => [
'description' => 'The listener.'."\n",
'type' => 'object',
'properties' => [
'DefaultActions' => [
'title' => '',
'description' => 'The default actions in the forwarding rules.'."\n",
'type' => 'array',
'items' => [
'description' => 'The action of the default forwarding rule.'."\n",
'type' => 'object',
'properties' => [
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the forwarding rule action. This parameter takes effect only when the action is **ForwardGroup**.'."\n",
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The server groups to which requests are forwarded.'."\n",
'type' => 'array',
'items' => [
'description' => 'The server group to which requests are forwarded.'."\n",
'type' => 'object',
'properties' => [
'ServerGroupId' => ['title' => '', 'description' => 'The ID of the server group to which requests are forwarded.'."\n", 'type' => 'string', 'example' => 'sgp-i5qt20******'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
'Type' => ['title' => '', 'description' => 'The action. **ForwardGroup**: forwards requests to multiple server groups.'."\n", 'type' => 'string', 'example' => 'ForwardGroup'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'GzipEnabled' => ['title' => '', 'description' => 'Indicates whether GZIP compression is enabled to compress specific types of files. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'example' => 'false'],
'Http2Enabled' => ['title' => '', 'description' => 'Indicates whether HTTP/2 is enabled. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'false'],
'IdleTimeout' => ['title' => '', 'description' => 'The timeout period of an idle connection. Unit: seconds. Valid values: **1 to 60**.'."\n"
."\n"
.'If no request is received within the specified timeout period, ALB closes the connection. ALB establishes the connection again when a new connection request is received.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '3'],
'ListenerDescription' => ['title' => '', 'description' => 'The name of the listener.'."\n", 'type' => 'string', 'example' => 'HTTP_80'],
'ListenerId' => ['title' => '', 'description' => 'The listener ID.'."\n", 'type' => 'string', 'example' => 'lsn-o4u34y73wq7b******'],
'ListenerPort' => ['title' => '', 'description' => 'The frontend port that is used by the ALB instance. Valid values: **1 to 65535**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '80'],
'ListenerProtocol' => ['title' => '', 'description' => 'The listener protocol of the instance. Valid values:'."\n"
."\n"
.'* **HTTP**'."\n"
.'* **HTTPS**'."\n"
.'* **QUIC**'."\n", 'type' => 'string', 'example' => 'HTTP'],
'ListenerStatus' => ['title' => '', 'description' => 'The status of the listener. Valid values:'."\n"
."\n"
.'* **Provisioning**: The listener is being created.'."\n"
.'* **Running**: The listener is running.'."\n"
.'* **Configuring**: The listener is being configured.'."\n"
.'* **Stopped**: The listener is disabled.'."\n", 'type' => 'string', 'example' => 'Running'],
'LoadBalancerId' => ['title' => '', 'description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'example' => 'alb-bd6oylbckp6k9x****'],
'LogConfig' => [
'title' => '',
'description' => 'The logging configurations.'."\n",
'type' => 'object',
'properties' => [
'AccessLogRecordCustomizedHeadersEnabled' => ['title' => '', 'description' => 'Indicates whether custom headers are carried in the access log. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'example' => 'true'],
'AccessLogTracingConfig' => [
'title' => '',
'description' => 'The configurations of xtrace.'."\n",
'type' => 'object',
'properties' => [
'TracingEnabled' => ['title' => '', 'description' => 'Indicates whether xtrace is enabled. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter can be set to **true** only when the access log feature of ALB is enabled by setting **AccessLogEnabled** to true.'."\n", 'type' => 'boolean', 'example' => 'true'],
'TracingSample' => ['title' => '', 'description' => 'The sampling rate of xtrace. Valid values: **1 to 10000**.'."\n"
."\n"
.'> This parameter takes effect when **TracingEnabled** is set to **true**.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '100'],
'TracingType' => ['title' => '', 'description' => 'The type of xtrace. The value is set to **Zipkin**.'."\n"
."\n"
.'> This parameter takes effect when **TracingEnabled** is set to **true**.'."\n", 'type' => 'string', 'example' => 'Zipkin'],
],
'example' => '',
],
],
'example' => '',
],
'QuicConfig' => [
'title' => '',
'description' => 'The configurations of the QUIC listener associated with the ALB instance.'."\n",
'type' => 'object',
'properties' => [
'QuicListenerId' => ['title' => '', 'description' => 'The ID of the QUIC listener associated with the ALB instance. This parameter is required if the **QuicUpgradeEnabled** parameter is set to **true**. Only HTTPS listeners support this parameter.'."\n"
."\n"
.'> The existing listener and QUIC listener must be to the same ALB instance, and the QUIC listener has not been associated with an ALB instance.'."\n", 'type' => 'string', 'example' => 'lsn-o4u54y73wq7b******'],
'QuicUpgradeEnabled' => ['title' => '', 'description' => 'Indicates whether QUIC upgrade is enabled. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'true'],
],
'example' => '',
],
'RequestTimeout' => ['title' => '', 'description' => 'The timeout period of a request. Unit: seconds. Valid values: **1 to 180**.'."\n"
."\n"
.'If no responses are received from the backend server within the specified timeout period, ALB returns an `HTTP 504` error code to the client.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '34'],
'SecurityPolicyId' => ['title' => '', 'description' => 'The security policy.'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'string', 'example' => 'tls_cipher_policy_1_1'],
'XForwardedForConfig' => [
'title' => '',
'description' => 'The configuration of the `XForward` header.'."\n",
'type' => 'object',
'properties' => [
'XForwardedForClientCertClientVerifyAlias' => ['title' => '', 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'string', 'example' => 'test_client-verify-alias_123456'],
'XForwardedForClientCertClientVerifyEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Clientcert-clientverify` header is used to obtain the verification result of the client certificate. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForClientCertFingerprintAlias' => ['title' => '', 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'string', 'example' => 'test_finger-print-alias_123456'],
'XForwardedForClientCertFingerprintEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Clientcert-fingerprint` header is used to retrieve the fingerprint of the client certificate. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForClientCertIssuerDNAlias' => ['title' => '', 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'string', 'example' => 'test_issue-dn-alias_123456'],
'XForwardedForClientCertIssuerDNEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Clientcert-issuerdn` header is used to retrieve information about the authority that issues the client certificate. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForClientCertSubjectDNAlias' => ['title' => '', 'description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length, and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'string', 'example' => 'test_subject-dn-alias_123456'],
'XForwardedForClientCertSubjectDNEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Clientcert-subjectdn` header is used to retrieve information about the owner of the client certificate. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> Only HTTPS listeners support this parameter.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForClientSrcPortEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Client-Port` header is used to retrieve the client port. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter is returned only for HTTP and HTTPS listeners.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForEnabled' => ['title' => '', 'description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve client IP addresses. Valid values:'."\n"
."\n"
.'* **true** (default)'."\n"
.'* **false**'."\n"
."\n"
.'> * If this parameter is set to **true**, the default value of the **XForwardedForProcessingMode** parameter is **append**. You can change it to **remove**.'."\n"
.'> * If this parameter is set to **false**, the `X-Forwarded-For` header in the request is not modified in any way before the request is sent to backend servers.'."\n"
.'> * Both HTTP and HTTPS listeners support this parameter.', 'type' => 'boolean', 'example' => 'true'],
'XForwardedForProcessingMode' => ['description' => 'Specifies how the `X-Forwarded-For` header is processed. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
."\n"
.'* **append** (default)'."\n"
.'* **remove**'."\n"
."\n"
.'> * If this parameter is set to **append**, ALB appends the IP address of the last hop to the existing `X-Forwarded-For` header in the request before the request is sent to backend servers.'."\n"
.'> * If this parameter is set to **remove**, ALB removes the `X-Forwarded-For` header in the request before the request is sent to backend servers, no matter whether the request carries the `X-Forwarded-For` header.'."\n"
.'> * Both HTTP and HTTPS listeners support this parameter.', 'type' => 'string', 'example' => 'append', 'title' => ''],
'XForwardedForProtoEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Proto` header is used to retrieve the listener protocol. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForSLBIdEnabled' => ['title' => '', 'description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForSLBPortEnabled' => ['title' => '', 'description' => 'Indicates whether the `X-Forwarded-Port` header is used to retrieve the listener port of the ALB instance. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter is supported by HTTP, HTTPS, and QUIC listeners.'."\n", 'type' => 'boolean', 'example' => 'true'],
'XForwardedForClientSourceIpsEnabled' => ['description' => 'Indicates whether the X-Forwarded-For header is used to preserver client IP addresses for the ALB instance. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n"
."\n"
.'> This parameter is returned only for HTTP and HTTPS listeners.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''],
'XForwardedForClientSourceIpsTrusted' => ['description' => 'The trusted proxy IP address.'."\n"
."\n"
.'ALB instances traverse the IP addresses in the `X-Forwarded-For` header from the rightmost IP address to the leftmost IP address. The first IP address that is not on the trusted IP address list is considered the client IP address. Requests from the client IP address are throttled.'."\n", 'type' => 'string', 'example' => '10.1.1.0/24', 'title' => ''],
'XForwardedForHostEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve client domain names. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false** (default)'."\n"
."\n"
.'> HTTP, HTTPS, and QUIC listeners all support this parameter.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''],
],
'example' => '',
],
'Tags' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['title' => '', 'description' => 'The maximum number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50'],
'NextToken' => ['title' => '', 'description' => 'The position where the query stopped. If this parameter is not returned, all data is queried.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1000'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"Listeners\\": [\\n {\\n \\"DefaultActions\\": [\\n {\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-i5qt20******\\"\\n }\\n ]\\n },\\n \\"Type\\": \\"ForwardGroup\\"\\n }\\n ],\\n \\"GzipEnabled\\": false,\\n \\"Http2Enabled\\": false,\\n \\"IdleTimeout\\": 3,\\n \\"ListenerDescription\\": \\"HTTP_80\\",\\n \\"ListenerId\\": \\"lsn-o4u34y73wq7b******\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTP\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"alb-bd6oylbckp6k9x****\\",\\n \\"LogConfig\\": {\\n \\"AccessLogRecordCustomizedHeadersEnabled\\": true,\\n \\"AccessLogTracingConfig\\": {\\n \\"TracingEnabled\\": true,\\n \\"TracingSample\\": 100,\\n \\"TracingType\\": \\"Zipkin\\"\\n }\\n },\\n \\"QuicConfig\\": {\\n \\"QuicListenerId\\": \\"lsn-o4u54y73wq7b******\\",\\n \\"QuicUpgradeEnabled\\": true\\n },\\n \\"RequestTimeout\\": 34,\\n \\"SecurityPolicyId\\": \\"tls_cipher_policy_1_1\\",\\n \\"XForwardedForConfig\\": {\\n \\"XForwardedForClientCertClientVerifyAlias\\": \\"test_client-verify-alias_123456\\",\\n \\"XForwardedForClientCertClientVerifyEnabled\\": true,\\n \\"XForwardedForClientCertFingerprintAlias\\": \\"test_finger-print-alias_123456\\",\\n \\"XForwardedForClientCertFingerprintEnabled\\": true,\\n \\"XForwardedForClientCertIssuerDNAlias\\": \\"test_issue-dn-alias_123456\\",\\n \\"XForwardedForClientCertIssuerDNEnabled\\": true,\\n \\"XForwardedForClientCertSubjectDNAlias\\": \\"test_subject-dn-alias_123456\\",\\n \\"XForwardedForClientCertSubjectDNEnabled\\": true,\\n \\"XForwardedForClientSrcPortEnabled\\": true,\\n \\"XForwardedForEnabled\\": true,\\n \\"XForwardedForProcessingMode\\": \\"append\\",\\n \\"XForwardedForProtoEnabled\\": true,\\n \\"XForwardedForSLBIdEnabled\\": true,\\n \\"XForwardedForSLBPortEnabled\\": true,\\n \\"XForwardedForClientSourceIpsEnabled\\": false,\\n \\"XForwardedForClientSourceIpsTrusted\\": \\"10.1.1.0/24\\",\\n \\"XForwardedForHostEnabled\\": false\\n },\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\",\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n \\n \\n rsp-cige6j****\\n \\n \\n ForwardGroup\\n \\n false\\n false\\n 3\\n test\\n lsr-bp1bpn0kn908w4nbw****\\n 80\\n HTTP\\n Running\\n lb-bp1b6c719dfa08ex*****\\n \\n true\\n \\n true\\n 100\\n Zipkin\\n \\n \\n \\n lsr-bp1bpn908w4nbw****\\n true\\n \\n 34\\n tls_cipher_policy_1_1\\n \\n test_client-verify-alias_123456\\n true\\n test_finger-print-alias_123456\\n true\\n test_issue-dn-alias_123456\\n true\\n test_subject-dn-alias_123456\\n true\\n true\\n true\\n true\\n true\\n true\\n false\\n 10.1.1.0/24\\n \\n \\n 50\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n 1000\\n","errorExample":""}]',
'title' => 'ListListeners',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListListeners',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'ListLoadBalancers' => [
'summary' => 'Queries the configurations of load balancer instances.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslb6TP8T4'],
],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'- You do not need to specify this parameter for the first request.'."\n"
."\n"
.'- If a subsequent call is required, set the value to the **NextToken** value returned from the previous call.', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', 'title' => '', 'required' => false],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => '', 'required' => false],
],
[
'name' => 'ZoneId',
'in' => 'query',
'schema' => ['description' => 'The ID of the zone where the Application Load Balancer instance is deployed.'."\n"
."\n"
.'You can call the [](t2324479.xdita#)operation to query information about the zones.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'cn-hangzhou-a'],
],
[
'name' => 'LoadBalancerStatus',
'in' => 'query',
'schema' => ['description' => 'The state of the Application Load Balancer instance. Valid values:'."\n"
."\n"
.'- **Inactive**: The instance is disabled. Listeners of the instance do not forward traffic.'."\n"
."\n"
.'- **Active**: The instance is running.'."\n"
."\n"
.'- **Provisioning**: The instance is being created.'."\n"
."\n"
.'- **Configuring**: The instance is being configured.'."\n"
."\n"
.'- **CreateFailed**: The instance failed to be created. You are not charged for the instance. You can only delete the instance. The system automatically deletes instances that failed to be created within one day.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Active'],
],
[
'name' => 'LoadBalancerBussinessStatus',
'in' => 'query',
'schema' => ['description' => 'The service status of the Application Load Balancer instance. Valid values:'."\n"
."\n"
.'- **Abnormal**: The instance is not working as expected.'."\n"
."\n"
.'- **Normal**: The instance is working as expected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Normal'],
],
[
'name' => 'LoadBalancerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The instance IDs. You can specify up to 20 Application Load Balancer instance IDs.',
'type' => 'array',
'items' => ['description' => 'The instance ID.', 'type' => 'string', 'required' => false, 'example' => 'alb-o9ulmq5hgn68jk****', 'title' => ''],
'required' => false,
'maxItems' => 21,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'LoadBalancerNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The instance names. You can specify up to 10 instance names.',
'type' => 'array',
'items' => ['description' => 'The name of the instance.'."\n"
."\n"
.'The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => false, 'example' => 'alb-instance-test', 'title' => ''],
'required' => false,
'maxItems' => 11,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'VpcIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The ID of the virtual private cloud (VPC) to which the Application Load Balancer instance belongs. You can specify up to 10 VPC IDs.',
'type' => 'array',
'items' => ['description' => 'The ID of the VPC to which the Application Load Balancer instance belongs.', 'type' => 'string', 'required' => false, 'example' => 'vpc-bp1b49rqrybk45nio****', 'title' => ''],
'required' => false,
'maxItems' => 11,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The tags of the instances.',
'type' => 'array',
'items' => [
'description' => 'The tag of the instance.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key of the instance. You can specify up to 20 tag keys. The tag key cannot be an empty string.'."\n"
."\n"
.'The tag key can be up to 64 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'KeyTest'],
'Value' => ['description' => 'The tag value of the instance. You can specify up to 20 tag values. The tag value can be an empty string.'."\n"
."\n"
.'The tag value can be up to 128 characters in length and cannot start with `aliyun` or `acs:`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'alueTest'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 21,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'AddressType',
'in' => 'query',
'schema' => ['description' => 'The type of the IP address that the Application Load Balancer instance uses to provide services. Valid values:'."\n"
."\n"
.'- **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
."\n"
.'- **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed in the VPC where the ALB instance is deployed.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Intranet'],
],
[
'name' => 'PayType',
'in' => 'query',
'schema' => ['description' => 'The billing method of the instance. Valid value:'."\n"
."\n"
.'**PostPay** (default): The instance is billed on a pay-as-you-go basis.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'PostPay'],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-acfmxazb4ph****'],
],
[
'name' => 'AddressIpVersion',
'in' => 'query',
'schema' => ['description' => 'The protocol version. Valid values:'."\n"
."\n"
.'- **IPv4**: IPv4'."\n"
."\n"
.'- **DualStack**: dual-stack', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'IPv4'],
],
[
'name' => 'Ipv6AddressType',
'in' => 'query',
'schema' => ['description' => 'The type of the IPv6 address that the Application Load Balancer instance uses to provide services. Valid values:'."\n"
."\n"
.'- **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
."\n"
.'- **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed in the VPC where the ALB instance is deployed.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Intranet'],
],
[
'name' => 'DNSName',
'in' => 'query',
'schema' => ['description' => 'The domain name.', 'type' => 'string', 'required' => false, 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The configurations of the Application Load Balancer instance.',
'type' => 'object',
'properties' => [
'LoadBalancers' => [
'title' => '',
'description' => 'The list of Application Load Balancer instances.',
'type' => 'array',
'items' => [
'description' => 'The details of the Application Load Balancer instance.',
'type' => 'object',
'properties' => [
'AccessLogConfig' => [
'title' => '',
'description' => 'The configuration of the access log.',
'type' => 'object',
'properties' => [
'LogProject' => ['description' => 'The Log Service project.', 'type' => 'string', 'title' => '', 'example' => 'sls-setter'],
'LogStore' => ['description' => 'The Logstore.', 'type' => 'string', 'title' => '', 'example' => 'test'],
],
'example' => '',
],
'AddressAllocatedMode' => ['description' => 'The mode of the IP address. Valid values:'."\n"
."\n"
.'- **Fixed**: The ALB instance uses a static IP address.'."\n"
."\n"
.'- **Dynamic**: A dynamic IP address is allocated to the ALB instance in each zone.', 'type' => 'string', 'title' => '', 'example' => 'Fixed'],
'AddressType' => ['description' => 'The type of IP address that the ALB instance uses to provide services. Valid values:'."\n"
."\n"
.'- **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
."\n"
.'- **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed in the VPC where the ALB instance is deployed.', 'type' => 'string', 'title' => '', 'example' => 'Intranet'],
'BandwidthPackageId' => ['description' => 'The ID of the Internet Shared Bandwidth instance that is associated with the Internet-facing ALB instance.', 'type' => 'string', 'title' => '', 'example' => 'cbwp-bp1vevu8h3ieh****'],
'CreateTime' => ['description' => 'The time when the resource was created.', 'type' => 'string', 'title' => '', 'example' => '2022-07-02T02:49:05Z'],
'DNSName' => ['description' => 'The domain name.', 'type' => 'string', 'title' => '', 'example' => 'alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com'],
'DeletionProtectionConfig' => [
'title' => '',
'description' => 'The deletion protection configuration.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Indicates whether deletion protection is enabled. Valid values:'."\n"
."\n"
.'- **true**: enabled.'."\n"
."\n"
.'- **false**: disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'EnabledTime' => ['description' => 'The time when deletion protection was enabled.', 'type' => 'string', 'title' => '', 'example' => '2022-08-02T02:49:05Z'],
],
'example' => '',
],
'LoadBalancerBillingConfig' => [
'title' => '',
'description' => 'The billing configuration of the ALB instance.',
'type' => 'object',
'properties' => [
'PayType' => ['description' => 'The billing method. Valid value:'."\n"
."\n"
.'**PostPay**: pay-as-you-go.', 'type' => 'string', 'default' => 'PostPay', 'title' => '', 'example' => 'PostPay'],
],
'example' => '',
],
'LoadBalancerBussinessStatus' => ['description' => 'The service status of the ALB instance. Valid values:'."\n"
."\n"
.'- **Abnormal**: The instance is not working as expected.'."\n"
."\n"
.'- **Normal**: The instance is working as expected.', 'type' => 'string', 'title' => '', 'example' => 'Normal'],
'LoadBalancerEdition' => ['description' => 'The edition of the ALB instance. Different editions have different limits and billing methods. Valid values:'."\n"
."\n"
.'- **Basic**: Basic Edition.'."\n"
."\n"
.'- **Standard**: Standard Edition.'."\n"
."\n"
.'- **StandardWithWaf**: WAF-enabled Edition.', 'type' => 'string', 'title' => '', 'example' => 'Standard'],
'LoadBalancerId' => ['description' => 'The ID of the Application Load Balancer instance.', 'type' => 'string', 'title' => '', 'example' => 'alb-o9ulmq5hgn68jk****'],
'LoadBalancerName' => ['description' => 'The name of the ALB instance.', 'type' => 'string', 'title' => '', 'example' => 'alb-instance-test'],
'LoadBalancerOperationLocks' => [
'title' => '',
'description' => 'The configuration of the configuration lock.',
'type' => 'array',
'items' => [
'description' => 'The details of the configuration lock.',
'type' => 'object',
'properties' => [
'LockReason' => ['description' => 'The reason for the lock. This parameter is valid only if **LoadBalancerBussinessStatus** is set to **Abnormal**.', 'type' => 'string', 'title' => '', 'example' => ''],
'LockType' => ['description' => 'The type of the lock. Valid values:'."\n"
."\n"
.'- **SecurityLocked**: The instance is locked for security reasons.'."\n"
."\n"
.'- **RelatedResourceLocked**: The instance is locked due to a correlated resource.'."\n"
."\n"
.'- **FinancialLocked**: The instance is locked due to overdue payments.'."\n"
."\n"
.'- **ResidualLocked**: The instance is locked because it is faulty.', 'type' => 'string', 'title' => '', 'example' => 'FinancialLocked'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'LoadBalancerStatus' => ['description' => 'The state of the Application Load Balancer instance. Valid values:'."\n"
."\n"
.'- **Inactive**: The instance is disabled. Listeners of the instance do not forward traffic.'."\n"
."\n"
.'- **Active**: The instance is running.'."\n"
."\n"
.'- **Provisioning**: The instance is being created.'."\n"
."\n"
.'- **Configuring**: The instance is being configured.'."\n"
."\n"
.'- **CreateFailed**: The instance failed to be created.', 'type' => 'string', 'title' => '', 'example' => 'Active'],
'ModificationProtectionConfig' => [
'title' => '',
'description' => 'The configuration of modification protection.',
'type' => 'object',
'properties' => [
'Reason' => ['description' => 'The reason for enabling modification protection.'."\n"
."\n"
.'The reason must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain digits, periods (.), underscores (\\_), and hyphens (-).'."\n"
."\n"
.'This parameter is returned only if **Status** is set to **ConsoleProtection**.', 'type' => 'string', 'title' => '', 'example' => 'Managed Instance'],
'Status' => ['description' => 'The status of modification protection. Valid values:'."\n"
."\n"
.'- **NonProtection**: Modification protection is disabled. If you specify a value for **Reason**, the value is cleared.'."\n"
."\n"
.'- **ConsoleProtection**: Modification protection is enabled. If you specify a value for **Reason**, the value takes effect.'."\n"
."\n"
.'> If you set the value to **ConsoleProtection**, you cannot modify the instance configuration in the Application Load Balancer console. However, you can call API operations to modify the instance configuration.', 'type' => 'string', 'title' => '', 'example' => 'ConsoleProtection'],
],
'example' => '',
],
'ResourceGroupId' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'title' => '', 'example' => 'rg-atstuj3rtop****'],
'Tags' => [
'title' => '',
'description' => 'The list of tags.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key of the instance.', 'type' => 'string', 'title' => '', 'example' => 'KeyTest'],
'Value' => ['description' => 'The tag value of the instance.', 'type' => 'string', 'title' => '', 'example' => 'alueTest'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'VpcId' => ['description' => 'The ID of the VPC to which the Application Load Balancer instance belongs.', 'type' => 'string', 'title' => '', 'example' => 'vpc-bp1b49rqryhk45nio****'],
'AddressIpVersion' => ['description' => 'The protocol version. Valid values:'."\n"
."\n"
.'- **IPv4**: IPv4'."\n"
."\n"
.'- **DualStack**: dual-stack', 'type' => 'string', 'title' => '', 'example' => 'DualStack'],
'Ipv6AddressType' => ['description' => 'The type of the IPv6 address that the Application Load Balancer instance uses to provide services. Valid values:'."\n"
."\n"
.'- **Internet**: The ALB instance uses a public IP address. The domain name of the ALB instance is resolved to the public IP address. Therefore, the ALB instance can be accessed over the Internet.'."\n"
."\n"
.'- **Intranet**: The ALB instance uses a private IP address. The domain name of the ALB instance is resolved to the private IP address. Therefore, the ALB instance can be accessed in the VPC where the ALB instance is deployed.', 'type' => 'string', 'title' => '', 'example' => 'Intranet'],
'SecurityGroupIds' => [
'description' => 'The security groups to which the Application Load Balancer instance is added.',
'type' => 'array',
'items' => ['description' => 'The security group to which the Application Load Balancer instance is added.', 'type' => 'string', 'example' => 'sg-2zejdtxxpu8c9tny****', 'title' => ''],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'MaxResults' => ['description' => 'The number of entries returned on each page.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '20'],
'NextToken' => ['description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, it indicates that no next query is to be sent.'."\n"
."\n"
.'- If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.', 'type' => 'string', 'title' => '', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
'TotalCount' => ['description' => 'The number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '100'],
],
'example' => '',
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AccessLogConfig\\": {\\n \\"LogProject\\": \\"sls-setter\\",\\n \\"LogStore\\": \\"test\\"\\n },\\n \\"AddressAllocatedMode\\": \\"Fixed\\",\\n \\"AddressType\\": \\"Intranet\\",\\n \\"BandwidthPackageId\\": \\"cbwp-bp1vevu8h3ieh****\\",\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"DNSName\\": \\"alb-95qnr2itwu9orb****.cn-hangzhou.alb.aliyuncs.com\\",\\n \\"DeletionProtectionConfig\\": {\\n \\"Enabled\\": true,\\n \\"EnabledTime\\": \\"2022-08-02T02:49:05Z\\"\\n },\\n \\"LoadBalancerBillingConfig\\": {\\n \\"PayType\\": \\"PostPay\\"\\n },\\n \\"LoadBalancerBussinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerEdition\\": \\"Standard\\",\\n \\"LoadBalancerId\\": \\"alb-o9ulmq5hgn68jk****\\",\\n \\"LoadBalancerName\\": \\"alb-instance-test\\",\\n \\"LoadBalancerOperationLocks\\": [\\n {\\n \\"LockReason\\": \\"\\",\\n \\"LockType\\": \\"FinancialLocked\\"\\n }\\n ],\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ModificationProtectionConfig\\": {\\n \\"Reason\\": \\"Managed Instance\\",\\n \\"Status\\": \\"ConsoleProtection\\"\\n },\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"KeyTest\\",\\n \\"Value\\": \\"alueTest\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp1b49rqryhk45nio****\\",\\n \\"AddressIpVersion\\": \\"DualStack\\",\\n \\"Ipv6AddressType\\": \\"Intranet\\",\\n \\"SecurityGroupIds\\": [\\n \\"sg-2zejdtxxpu8c9tny****\\"\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]',
'title' => 'ListLoadBalancers',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListLoadBalancers',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/*'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'ListRules' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbM7ALO6'],
],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The token that is used to retrieve the next page of results. Valid values:'."\n"
."\n"
.'- You do not need to set this parameter for the first query.'."\n"
."\n"
.'- For a subsequent query, set this parameter to the value of **NextToken** from the previous response.', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', 'title' => '', 'required' => false],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The maximum number of entries to return.'."\n"
."\n"
.'Valid values: 1 to **100**.'."\n"
."\n"
.'Default value: **20**.'."\n"
."\n"
.'> This parameter is optional.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => '', 'required' => false],
],
[
'name' => 'RuleIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The IDs of the forwarding rules. You can specify up to 20 forwarding rule IDs.',
'type' => 'array',
'items' => ['description' => 'The forwarding rule ID.', 'type' => 'string', 'required' => false, 'example' => 'rule-sada******', 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ListenerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The listener IDs. You can specify up to 20 listener IDs.',
'type' => 'array',
'items' => ['description' => 'The listener ID.', 'type' => 'string', 'required' => false, 'example' => 'lsn-i35udpz3pxsmnf****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'LoadBalancerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The SLB instance IDs. You can specify up to 20 instance IDs.',
'type' => 'array',
'items' => ['description' => 'The SLB instance ID.', 'type' => 'string', 'required' => false, 'example' => 'alb-x30o38azsuj0sx****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'Direction',
'in' => 'query',
'schema' => ['description' => 'The direction of the forwarding rule. Valid values:'."\n"
."\n"
.'- **Request** (default): The forwarding rule is applied to requests. Application Load Balancer (ALB) matches conditions in the requests sent from clients and performs the specified actions.'."\n"
."\n"
.'- **Response**: The forwarding rule is applied to responses. ALB matches conditions in the responses sent from backend servers and performs the specified actions.'."\n"
."\n"
.'> Basic ALB instances do not support the Response type.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Request'],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with \\`aliyun\\` or \\`acs:\\`, and cannot contain \\`http\\://\\` or \\`https\\://\\`.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with \\`aliyun\\` or \\`acs:\\`, and cannot contain \\`http\\://\\` or \\`https\\://\\`.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 20,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The forwarding rules.',
'type' => 'object',
'properties' => [
'MaxResults' => ['description' => 'The maximum number of entries returned per page.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '50'],
'NextToken' => ['description' => 'The token that is used to retrieve the next page of results. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, no more results are returned.'."\n"
."\n"
.'- If **NextToken** has a value, it is the token for the next query.', 'type' => 'string', 'title' => '', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876F******'],
'Rules' => [
'title' => '',
'description' => 'The list of forwarding rules.',
'type' => 'array',
'items' => [
'description' => 'The forwarding rule.',
'type' => 'object',
'properties' => [
'ListenerId' => ['description' => 'The ID of the listener to which the forwarding rule belongs.', 'type' => 'string', 'title' => '', 'example' => 'lsn-i35udpz3pxsmnf****'],
'LoadBalancerId' => ['description' => 'The ID of the SLB instance to which the forwarding rule belongs.', 'type' => 'string', 'title' => '', 'example' => 'alb-x30o38azsuj0sx****'],
'Priority' => ['description' => 'The priority of the rule. A smaller value indicates a higher priority. Valid values: 1 to **10000**.'."\n"
."\n"
.'> The priority of each rule must be unique within a listener.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'],
'RuleActions' => [
'title' => '',
'description' => 'The actions of the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The action of the forwarding rule.',
'type' => 'object',
'properties' => [
'FixedResponseConfig' => [
'title' => '',
'description' => 'The configuration of the fixed response.',
'type' => 'object',
'properties' => [
'Content' => ['description' => 'The fixed response. The response can be up to 1 KB in length and can contain only ASCII characters.', 'type' => 'string', 'title' => '', 'example' => 'dssacav'],
'ContentType' => ['description' => 'The format of the fixed response.'."\n"
."\n"
.'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.', 'type' => 'string', 'title' => '', 'example' => 'text/plain'],
'HttpCode' => ['description' => 'The HTTP status code of the response. Only **HTTP\\_2xx**, **HTTP\\_4xx**, and **HTTP\\_5xx** are supported. **x** is a digit.', 'type' => 'string', 'title' => '', 'example' => 'HTTP_2xx'],
],
'example' => '',
],
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the forwarding group.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The destination server groups.',
'type' => 'array',
'items' => [
'description' => 'The destination server group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the destination server group.', 'type' => 'string', 'title' => '', 'example' => 'sgp-atstuj3rtoptyui****'],
'Weight' => ['description' => 'The weight. Valid values: **0** to **100**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'ServerGroupStickySession' => [
'title' => '',
'description' => 'The session persistence settings for the server groups.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Specifies whether to enable session persistence among server groups. This parameter is available when multiple server groups are specified in \\`ServerGroupTuples\\`.', 'type' => 'boolean', 'title' => '', 'example' => ''],
'Timeout' => ['description' => 'The timeout period for session persistence. This parameter is available when \\`Enabled\\` is set to \\`true\\`.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '100'],
],
'example' => '',
],
],
'example' => '',
],
'InsertHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the header to be inserted.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header to be inserted. The key must be 1 to 40 characters in length. It can contain letters, digits, underscores (\\_), and hyphens (-). The header key in `InsertHeader` cannot be the same as the key of a header that has been inserted.'."\n"
."\n"
.'> You cannot set the key to **Cookie** or **Host**.', 'type' => 'string', 'title' => '', 'example' => 'key'],
'Value' => ['description' => 'The value of the header to be inserted.'."\n"
."\n"
.'- **ValueType** is set to **SystemDefined**, you can set the value to:'."\n"
."\n"
.' - **ClientSrcPort**: the client port.'."\n"
."\n"
.' - **ClientSrcIp**: the client IP address.'."\n"
."\n"
.' - **Protocol**: the protocol of the client request (HTTP or HTTPS).'."\n"
."\n"
.' - **SLBId**: the ID of the Application Load Balancer instance.'."\n"
."\n"
.' - **SLBPort**: the listening port of the Application Load Balancer instance.'."\n"
."\n"
.'- If **ValueType** is set to **UserDefined**: you can specify a custom header value. The value must be 1 to 128 characters in length. It can contain printable characters with ASCII values from `ch >= 32 && ch < 127`. It can also contain wildcard characters, including asterisks (\\*) and question marks (?). The value cannot start or end with a space.'."\n"
."\n"
.'- If **ValueType** is set to **ReferenceHeader**: you can reference a field in the request header. The value must be 1 to 128 characters in length. It can contain lowercase letters, digits, hyphens (-), and underscores (\\_).', 'type' => 'string', 'title' => '', 'example' => 'ClientSrcPort'],
'ValueType' => ['description' => 'The type of the header value. Valid values:'."\n"
."\n"
.'- **UserDefined**: a user-defined value.'."\n"
."\n"
.'- **ReferenceHeader**: a value that is referenced from a field in the request header.'."\n"
."\n"
.'- **SystemDefined**: a system-defined value.', 'type' => 'string', 'title' => '', 'example' => 'SystemDefined'],
],
'example' => '',
],
'Order' => ['description' => 'The order of the action. Valid values: 1 to 50000. A smaller value indicates a higher priority. The value of this parameter cannot be the same as the value of **Order** for other actions of the same rule.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'],
'RedirectConfig' => [
'title' => '',
'description' => 'The configuration of the redirection.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${host}** (default): If you set the value to ${host}, you cannot add other characters to the value.'."\n"
."\n"
.'- A value that meets the following requirements:'."\n"
."\n"
.' - The host must be 3 to 128 characters in length. It can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.' - The host must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
."\n"
.' - The domain labels cannot start or end with a hyphen (-).'."\n"
."\n"
.' - You can use asterisks (\\*) and question marks (?) anywhere in a domain label.', 'type' => 'string', 'title' => '', 'example' => 'www.example.com'],
'HttpCode' => ['description' => 'The redirection method. Valid values: **301**, **302**, **303**, **307**, and **308**.', 'type' => 'string', 'title' => '', 'example' => '301'],
'Path' => ['description' => 'The destination path to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can reference **${host}**, **${protocol}**, and **${port}**. Each variable can be used at most once. You can use these variables together or combine them with a string.'."\n"
."\n"
.'- A value that meets the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - It must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:`. It cannot contain the following special characters: `“%#;!()[]^,” `. It can contain asterisks (\\*) and question marks (?).', 'type' => 'string', 'title' => '', 'example' => '/test'],
'Port' => ['description' => 'The destination port to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${port}** (default): If you set the value to ${port}, you cannot add other characters to the value.'."\n"
."\n"
.'- 1 to **63335**.', 'type' => 'string', 'title' => '', 'example' => '10'],
'Protocol' => ['description' => 'The destination protocol to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${protocol}** (default): If you set the value to ${protocol}, you cannot add other characters to the value.'."\n"
."\n"
.'- **HTTP** or **HTTPS**.'."\n"
."\n"
.'> HTTPS listeners support only HTTPS.', 'type' => 'string', 'title' => '', 'example' => 'HTTP'],
'Query' => ['description' => 'The query string of the destination to which requests are redirected. The query string must be 1 to 128 characters in length. It can contain lowercase letters and printable characters. It cannot contain `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'quert'],
],
'example' => '',
],
'RemoveHeaderConfig' => [
'title' => '',
'description' => 'The configuration for removing a header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header to be removed. The key must be 1 to 40 characters in length. It can contain letters, digits, underscores (\\_), and hyphens (-). The header key in RemoveHeader cannot be the same as the key of a header that has been removed.'."\n"
."\n"
.'- If Direction is set to Request, you cannot remove the following headers (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`.'."\n"
."\n"
.'- If Direction is set to Response, you cannot remove the following headers (case-insensitive): `connection`, `upgrade`, `content-length`, and `transfer-encoding`.', 'type' => 'string', 'title' => '', 'example' => 'key'],
],
'example' => '',
],
'RewriteConfig' => [
'title' => '',
'description' => 'The configuration of the rewrite.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host to which requests are redirected. Valid values:'."\n"
."\n"
.'- **${host}** (default): If you set the value to ${host}, you cannot add other characters to the value.'."\n"
."\n"
.'- A value that meets the following requirements:'."\n"
."\n"
.' - The host must be 3 to 128 characters in length. It can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.' - The host must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcard characters. It cannot contain digits or hyphens (-).'."\n"
."\n"
.' - The domain labels cannot start or end with a hyphen (-).'."\n"
."\n"
.' - You can use asterisks (\\*) and question marks (?) anywhere in a domain label.', 'type' => 'string', 'title' => '', 'example' => 'www.example.com'],
'Path' => ['description' => 'The destination path to which requests are redirected. The path must be 1 to 128 characters in length. It must start with a forward slash (/). It can contain letters, digits, asterisks (\\*), question marks (?), and the following special characters: `$-_.+/&~@:`. It cannot contain `“%#;!()[]^,” `.', 'type' => 'string', 'title' => '', 'example' => '/tsdf'],
'Query' => ['description' => 'The query string of the destination to which requests are redirected. The query string must be 1 to 128 characters in length. It can contain lowercase letters and printable characters. It cannot contain `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'quedsa'],
],
'example' => '',
],
'TrafficMirrorConfig' => [
'title' => '',
'description' => 'The configuration of traffic mirroring.',
'type' => 'object',
'properties' => [
'TargetType' => ['description' => 'The destination of traffic mirroring. The value can be \\`ForwardGroupMirror\\`.', 'type' => 'string', 'title' => '', 'example' => 'ForwardGroupMirror'],
'MirrorGroupConfig' => [
'title' => '',
'description' => 'The server group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'example' => 'sgp-00mkgijak0w4qgz9****', 'title' => ''],
'Weight' => ['description' => 'The weight. Valid values: **0** to **100**.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''],
],
'description' => '',
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'example' => '',
],
],
'example' => '',
],
'TrafficLimitConfig' => [
'description' => 'The configuration of throttling.',
'type' => 'object',
'properties' => [
'QPS' => ['description' => 'The queries per second (QPS). Valid values: **1** to **100000**.', 'type' => 'integer', 'format' => 'int32', 'example' => '4', 'title' => ''],
'PerIpQps' => ['description' => 'The QPS of a single IP address. Valid values: 1 to **100000**.'."\n"
."\n"
.'> If you set both QPS and **PerIpQps**, the value of **PerIpQps** must be smaller than the value of **QPS**.', 'type' => 'integer', 'format' => 'int32', 'example' => '80', 'title' => ''],
],
'title' => '',
'example' => '',
],
'Type' => ['description' => 'The type of the action. Valid values:'."\n"
."\n"
.'- **ForwardGroup**: forwards requests to multiple vServer groups.'."\n"
."\n"
.'- **Redirect**: redirects requests.'."\n"
."\n"
.'- **FixedResponse**: returns a fixed response.'."\n"
."\n"
.'- **Rewrite**: rewrites a request.'."\n"
."\n"
.'- **InsertHeader**: inserts a header.'."\n"
."\n"
.'- **RemoveHeaderConfig**: removes a header.'."\n"
."\n"
.'- **TrafficLimitConfig**: throttles traffic.'."\n"
."\n"
.'- **TrafficMirrorConfig**: mirrors traffic.'."\n"
."\n"
.'- **CorsConfig**: enables cross-origin resource sharing (CORS).', 'type' => 'string', 'title' => '', 'example' => 'ForwardGroup'],
'CorsConfig' => [
'title' => '',
'description' => 'The CORS configuration.',
'type' => 'object',
'properties' => [
'AllowOrigin' => [
'title' => '',
'description' => 'The allowed origins.',
'type' => 'array',
'items' => ['description' => 'The allowed origins. You can set the value to `*` or specify one or more values. The value cannot be `*`.'."\n"
."\n"
.'- A value must start with `http://` or `https://`, followed by a valid domain name or a level-1 wildcard domain name, such as `*.test.abc.example.com`.'."\n"
."\n"
.'- You can specify a port or not. The port number must be within the range of **1** to **65535**.', 'type' => 'string', 'example' => 'http://test.com', 'title' => ''],
'example' => '',
],
'AllowMethods' => [
'title' => '',
'description' => 'The allowed HTTP methods for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'The allowed HTTP methods for cross-origin requests. Valid values:'."\n"
."\n"
.'- **GET**'."\n"
."\n"
.'- **POST**'."\n"
."\n"
.'- **PUT**'."\n"
."\n"
.'- **DELETE**'."\n"
."\n"
.'- **HEAD**'."\n"
."\n"
.'- **OPTIONS**'."\n"
."\n"
.'- **PATCH**', 'type' => 'string', 'example' => 'GET', 'title' => ''],
'example' => '',
],
'AllowHeaders' => [
'title' => '',
'description' => 'The allowed headers for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'The allowed headers for cross-origin requests. You can set the value to `*` or specify one or more values. Multiple values are separated by commas (,). A value can contain letters, digits, and the following special characters: underscores (\\_) and hyphens (-). An underscore (\\_) or a hyphen (-) cannot be the first or last character. The value can be up to 32 characters in length.', 'type' => 'string', 'example' => 'test_123', 'title' => ''],
'example' => '',
],
'ExposeHeaders' => [
'title' => '',
'description' => 'The headers that can be exposed to the browser.',
'type' => 'array',
'items' => ['description' => 'The headers that can be exposed to the browser. You can set the value to `*` or specify one or more values. Multiple values are separated by commas (,). A value can contain letters, digits, and the following special characters: underscores (\\_) and hyphens (-). An underscore (\\_) or a hyphen (-) cannot be the first or last character. The value can be up to 32 characters in length.', 'type' => 'string', 'example' => 'test_123', 'title' => ''],
'example' => '',
],
'AllowCredentials' => ['description' => 'Specifies whether the browser can send credentials. Valid values:'."\n"
."\n"
.'- **on**'."\n"
."\n"
.'- **off**', 'type' => 'string', 'title' => '', 'example' => 'on'],
'MaxAge' => ['description' => 'The maximum cache time of preflight requests in the browser. Unit: seconds.'."\n"
."\n"
.'Valid values: **-1** to **172800**.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'example' => '1000'],
],
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'RuleConditions' => [
'title' => '',
'description' => 'The conditions of the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The condition of the forwarding rule.',
'type' => 'object',
'properties' => [
'CookieConfig' => [
'title' => '',
'description' => 'The configuration of the cookie.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The cookie values.',
'type' => 'array',
'items' => [
'description' => 'The cookie value.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the cookie. The key must be 1 to 100 characters in length. It can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'test'],
'Value' => ['description' => 'The value of the cookie. The value must be 1 to 128 characters in length. It can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'test'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
'HeaderConfig' => [
'title' => '',
'description' => 'The configuration of the header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header. The key must be 1 to 40 characters in length. It can contain letters, digits, hyphens (-), and underscores (\\_). You cannot set the key to Cookie or Host.', 'type' => 'string', 'title' => '', 'example' => 'Port'],
'Values' => [
'title' => '',
'description' => 'The header values.',
'type' => 'array',
'items' => ['description' => 'The value of the header. The value must be 1 to 128 characters in length. It can contain printable characters with ASCII values from `ch >= 32 && ch < 127`, lowercase letters, asterisks (\\*), and question marks (?). The value cannot start or end with a space.', 'type' => 'string', 'example' => '5006', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'HostConfig' => [
'title' => '',
'description' => 'The configuration of the host.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The hostnames.',
'type' => 'array',
'items' => ['description' => 'The hostname. Naming conventions:'."\n"
."\n"
.'- The domain name must be 3 to 128 characters in length. It can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.'- The domain name must contain at least one period (.). A period (.) cannot be the first or last character.'."\n"
."\n"
.'- The rightmost domain label can contain only letters, asterisks (\\*), and question marks (?). It cannot contain digits or hyphens (-).'."\n"
."\n"
.'- The other domain labels cannot start or end with a hyphen (-). You can use asterisks (\\*) and question marks (?) anywhere in a domain label.', 'type' => 'string', 'example' => 'www.example.com', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'MethodConfig' => [
'title' => '',
'description' => 'The configuration of the request method.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The request methods.',
'type' => 'array',
'items' => ['description' => 'The request method.'."\n"
."\n"
.'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.', 'type' => 'string', 'example' => 'PUT', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'PathConfig' => [
'title' => '',
'description' => 'The configuration of the path.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The paths.',
'type' => 'array',
'items' => ['description' => 'The path. The path must be 1 to 128 characters in length. It must start with a forward slash (/). It can contain letters, digits, asterisks (\\*), question marks (?), and the following special characters: `$-_.+/&~@:`. It cannot contain `“%#;!()[]^,” `.', 'type' => 'string', 'example' => '/test', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'QueryStringConfig' => [
'title' => '',
'description' => 'The configuration of the query string.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The query strings.',
'type' => 'array',
'items' => [
'description' => 'The query string.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the query string. The key must be 1 to 100 characters in length. It can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'test'],
'Value' => ['description' => 'The value of the query string. The value must be 1 to 128 characters in length. It can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). It cannot contain spaces or the following special characters: `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'example' => 'test'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
'SourceIpConfig' => [
'title' => '',
'description' => 'The configuration of the source IP address.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The source IP addresses to match.',
'type' => 'array',
'items' => ['description' => 'Specify one or more IP addresses or CIDR blocks.'."\n"
."\n"
.'You can specify up to five source IP addresses for each forwarding rule.', 'type' => 'string', 'example' => '192.168.XX.XX/32', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'ResponseStatusCodeConfig' => [
'title' => '',
'description' => 'The configuration of the response status code.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The response status codes.',
'type' => 'array',
'items' => ['description' => 'The response status code.', 'type' => 'string', 'example' => '200', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'ResponseHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the response HTTP header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the response HTTP header. The key must be 1 to 40 characters in length. It can contain letters, digits, hyphens (-), and underscores (\\_). You cannot set the key to Cookie or Host.', 'type' => 'string', 'title' => '', 'example' => 'key'],
'Values' => [
'title' => '',
'description' => 'The values of the response HTTP header.',
'type' => 'array',
'items' => ['description' => 'The value of the response HTTP header. The value must be 1 to 128 characters in length.', 'type' => 'string', 'example' => 'value', 'title' => ''],
'example' => '',
],
],
'example' => '',
],
'Type' => ['description' => 'The type of the forwarding rule. Valid values:'."\n"
."\n"
.'- **Host**: a host.'."\n"
."\n"
.'- **Path**: a path.'."\n"
."\n"
.'- **Header**: an HTTP header.'."\n"
."\n"
.'- **QueryString**: a query string.'."\n"
."\n"
.'- **Method**: a request method.'."\n"
."\n"
.'- **Cookie**: a cookie.'."\n"
."\n"
.'- **SourceIp**: a source IP address.', 'type' => 'string', 'title' => '', 'example' => 'Host'],
],
'required' => true,
'title' => '',
'example' => '',
],
'example' => '',
],
'RuleId' => ['description' => 'The forwarding rule ID.', 'type' => 'string', 'title' => '', 'example' => 'rule-bpn0kn908w4nbw****'],
'RuleName' => ['description' => 'The name of the forwarding rule. The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).', 'type' => 'string', 'title' => '', 'example' => 'rule-instance-test'],
'RuleStatus' => ['description' => 'The status of the forwarding rule. Valid values:'."\n"
."\n"
.'- **Provisioning**: The rule is being created.'."\n"
."\n"
.'- **Configuring**: The rule is being modified.'."\n"
."\n"
.'- **Available**: The rule is running.', 'type' => 'string', 'title' => '', 'example' => 'Available'],
'Direction' => ['description' => 'The direction of the forwarding rule. Valid values:'."\n"
."\n"
.'- Request (default): The forwarding rule is applied to requests. ALB matches conditions in the requests sent from clients and performs the specified actions.'."\n"
."\n"
.'- Response: The forwarding rule is applied to responses. ALB matches conditions in the responses sent from backend servers and performs the specified actions.'."\n"
."\n"
.'> Basic ALB instances do not support the Response type.', 'type' => 'string', 'title' => '', 'example' => 'Request'],
'Tags' => [
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with \\`aliyun\\` or \\`acs:\\`, and cannot contain \\`http\\://\\` or \\`https\\://\\`.', 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with \\`aliyun\\` or \\`acs:\\`, and cannot contain \\`http\\://\\` or \\`https\\://\\`.', 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1000'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
],
'title' => 'ListRules',
'summary' => 'This operation queries the forwarding rules in a specified region.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\",\\n \\"Rules\\": [\\n {\\n \\"ListenerId\\": \\"lsn-i35udpz3pxsmnf****\\",\\n \\"LoadBalancerId\\": \\"alb-x30o38azsuj0sx****\\",\\n \\"Priority\\": 1,\\n \\"RuleActions\\": [\\n {\\n \\"FixedResponseConfig\\": {\\n \\"Content\\": \\"dssacav\\",\\n \\"ContentType\\": \\"text/plain\\",\\n \\"HttpCode\\": \\"HTTP_2xx\\"\\n },\\n \\"ForwardGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"Weight\\": 2\\n }\\n ],\\n \\"ServerGroupStickySession\\": {\\n \\"Enabled\\": false,\\n \\"Timeout\\": 100\\n }\\n },\\n \\"InsertHeaderConfig\\": {\\n \\"Key\\": \\"key\\",\\n \\"Value\\": \\"ClientSrcPort\\",\\n \\"ValueType\\": \\"SystemDefined\\"\\n },\\n \\"Order\\": 1,\\n \\"RedirectConfig\\": {\\n \\"Host\\": \\"www.example.com\\",\\n \\"HttpCode\\": \\"301\\",\\n \\"Path\\": \\"/test\\",\\n \\"Port\\": \\"10\\",\\n \\"Protocol\\": \\"HTTP\\",\\n \\"Query\\": \\"quert\\"\\n },\\n \\"RemoveHeaderConfig\\": {\\n \\"Key\\": \\"key\\"\\n },\\n \\"RewriteConfig\\": {\\n \\"Host\\": \\"www.example.com\\",\\n \\"Path\\": \\"/tsdf\\",\\n \\"Query\\": \\"quedsa\\"\\n },\\n \\"TrafficMirrorConfig\\": {\\n \\"TargetType\\": \\"ForwardGroupMirror\\",\\n \\"MirrorGroupConfig\\": {\\n \\"ServerGroupTuples\\": [\\n {\\n \\"ServerGroupId\\": \\"sgp-00mkgijak0w4qgz9****\\",\\n \\"Weight\\": 2\\n }\\n ]\\n }\\n },\\n \\"TrafficLimitConfig\\": {\\n \\"QPS\\": 4,\\n \\"PerIpQps\\": 80\\n },\\n \\"Type\\": \\"ForwardGroup\\",\\n \\"CorsConfig\\": {\\n \\"AllowOrigin\\": [\\n \\"http://test.com\\"\\n ],\\n \\"AllowMethods\\": [\\n \\"GET\\"\\n ],\\n \\"AllowHeaders\\": [\\n \\"test_123\\"\\n ],\\n \\"ExposeHeaders\\": [\\n \\"test_123\\"\\n ],\\n \\"AllowCredentials\\": \\"on\\",\\n \\"MaxAge\\": 1000\\n }\\n }\\n ],\\n \\"RuleConditions\\": [\\n {\\n \\"CookieConfig\\": {\\n \\"Values\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ]\\n },\\n \\"HeaderConfig\\": {\\n \\"Key\\": \\"Port\\",\\n \\"Values\\": [\\n \\"5006\\"\\n ]\\n },\\n \\"HostConfig\\": {\\n \\"Values\\": [\\n \\"www.example.com\\"\\n ]\\n },\\n \\"MethodConfig\\": {\\n \\"Values\\": [\\n \\"PUT\\"\\n ]\\n },\\n \\"PathConfig\\": {\\n \\"Values\\": [\\n \\"/test\\"\\n ]\\n },\\n \\"QueryStringConfig\\": {\\n \\"Values\\": [\\n {\\n \\"Key\\": \\"test\\",\\n \\"Value\\": \\"test\\"\\n }\\n ]\\n },\\n \\"SourceIpConfig\\": {\\n \\"Values\\": [\\n \\"192.168.XX.XX/32\\"\\n ]\\n },\\n \\"ResponseStatusCodeConfig\\": {\\n \\"Values\\": [\\n \\"200\\"\\n ]\\n },\\n \\"ResponseHeaderConfig\\": {\\n \\"Key\\": \\"key\\",\\n \\"Values\\": [\\n \\"value\\"\\n ]\\n },\\n \\"Type\\": \\"Host\\"\\n }\\n ],\\n \\"RuleId\\": \\"rule-bpn0kn908w4nbw****\\",\\n \\"RuleName\\": \\"rule-instance-test\\",\\n \\"RuleStatus\\": \\"Available\\",\\n \\"Direction\\": \\"Request\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","type":"json"}]',
],
'ListSecurityPolicies' => [
'summary' => 'Queries custom security policies in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'list'],
'parameters' => [
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The resource group ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****'],
],
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '50', 'default' => '20'],
],
[
'name' => 'SecurityPolicyNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The names of the security policies. You can specify up to 10 names.'."\n",
'type' => 'array',
'items' => ['description' => 'The name of the security policy. You can specify up to 10 names.'."\n", 'type' => 'string', 'required' => false, 'example' => 'test-secrity', 'title' => ''],
'required' => false,
'maxItems' => 10,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'SecurityPolicyIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The security policy IDs. You can specify at most 20 security policies.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the security policy that you want to query. You can specify at most 20 security policy IDs.'."\n", 'type' => 'string', 'required' => false, 'example' => 'sp-bp1bpn0kn9****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'MaxResults' => ['title' => '', 'description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
'SecurityPolicies' => [
'title' => '',
'description' => 'The supported security policies.'."\n",
'type' => 'array',
'items' => [
'description' => 'The supported security policy.'."\n",
'type' => 'object',
'properties' => [
'Ciphers' => [
'title' => '',
'description' => 'The supported cipher suites.'."\n",
'type' => 'array',
'items' => ['description' => 'The supported cipher suites are determined by the value of **TLSVersions**.'."\n"
."\n"
.'* TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
."\n"
.' * ECDHE-ECDSA-AES128-SHA'."\n"
.' * ECDHE-ECDSA-AES256-SHA'."\n"
.' * ECDHE-RSA-AES128-SHA'."\n"
.' * ECDHE-RSA-AES256-SHA'."\n"
.' * AES128-SHA'."\n"
.' * AES256-SHA'."\n"
.' * DES-CBC3-SHA'."\n"
."\n"
.'* TLSv1.2 supports the following cipher suites:'."\n"
."\n"
.' * ECDHE-ECDSA-AES128-SHA'."\n"
.' * ECDHE-ECDSA-AES256-SHA'."\n"
.' * ECDHE-RSA-AES128-SHA'."\n"
.' * ECDHE-RSA-AES256-SHA'."\n"
.' * AES128-SHA'."\n"
.' * AES256-SHA'."\n"
.' * DES-CBC3-SHA'."\n"
.' * ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
.' * ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
.' * ECDHE-ECDSA-AES128-SHA256'."\n"
.' * ECDHE-ECDSA-AES256-SHA384'."\n"
.' * ECDHE-RSA-AES128-GCM-SHA256'."\n"
.' * ECDHE-RSA-AES256-GCM-SHA384'."\n"
.' * ECDHE-RSA-AES128-SHA256'."\n"
.' * ECDHE-RSA-AES256-SHA384'."\n"
.' * AES128-GCM-SHA256'."\n"
.' * AES256-GCM-SHA384'."\n"
.' * AES128-SHA256'."\n"
.' * AES256-SHA256'."\n"
."\n"
.'* TLSv1.3 supports the following cipher suites:'."\n"
."\n"
.' * TLS_AES\\_128\\_GCM_SHA256'."\n"
.' * TLS_AES\\_256\\_GCM_SHA384'."\n"
.' * TLS_CHACHA20\\_POLY1305\\_SHA256'."\n"
.' * TLS_AES\\_128\\_CCM_SHA256'."\n"
.' * TLS_AES\\_128\\_CCM\\_8\\_SHA256'."\n", 'type' => 'string', 'example' => 'ECDHE-ECDSA-AES128-SHA', 'title' => ''],
'example' => '',
],
'ResourceGroupId' => ['title' => '', 'description' => 'The ID of the resource group.'."\n", 'type' => 'string', 'example' => 'rg-atstuj3rtop****'],
'SecurityPolicyId' => ['title' => '', 'description' => 'The ID of the security policy.'."\n", 'type' => 'string', 'example' => 'sp-9cdjz6o******'],
'SecurityPolicyName' => ['title' => '', 'description' => 'The name of the security policy.'."\n", 'type' => 'string', 'example' => 'test-secrity'],
'SecurityPolicyStatus' => ['title' => '', 'description' => 'The status of the security policy. Valid values:'."\n"
."\n"
.'* **Configuring**'."\n"
.'* **Available**'."\n", 'type' => 'string', 'example' => 'Available'],
'TLSVersions' => [
'title' => '',
'description' => 'The supported TLS protocol versions.'."\n",
'type' => 'array',
'items' => ['description' => 'The supported TLS versions. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.'."\n", 'type' => 'string', 'example' => 'TLSv1.1', 'title' => ''],
'example' => '',
],
'CreateTime' => ['description' => 'The time when the ACL was created. The time follows the `YYYY-MM-DDThh:mm:ssZ` format.'."\n", 'type' => 'string', 'example' => '2023-02-15T07:37:33Z', 'title' => ''],
'Tags' => [
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tags.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", 'type' => 'string', 'example' => 'env', 'title' => ''],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", 'type' => 'string', 'example' => 'product', 'title' => ''],
],
'title' => '',
'example' => '',
],
'title' => '',
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1000'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.SecurityPolicy', 'errorMessage' => 'Authentication has failed for SecurityPolicy.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"SecurityPolicies\\": [\\n {\\n \\"Ciphers\\": [\\n \\"ECDHE-ECDSA-AES128-SHA\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"SecurityPolicyId\\": \\"sp-9cdjz6o******\\",\\n \\"SecurityPolicyName\\": \\"test-secrity\\",\\n \\"SecurityPolicyStatus\\": \\"Available\\",\\n \\"TLSVersions\\": [\\n \\"TLSv1.1\\"\\n ],\\n \\"CreateTime\\": \\"2023-02-15T07:37:33Z\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","errorExample":""},{"type":"xml","example":"\\n 50\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n \\n ECDHE-ECDSA-AES128-SHA\\n rg-atstuj3rtop****\\n rg-atstuj3rtop****\\n test-secrity\\n Available\\n TLSv1.1\\n \\n 1000\\n","errorExample":""}]',
'title' => 'ListSecurityPolicies',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListSecurityPolicies',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/*'],
],
],
],
],
],
'ListSecurityPolicyRelations' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'SecurityPolicyIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The security policy IDs. You can specify up to five IDs.',
'type' => 'array',
'items' => ['description' => 'The security policy ID. You can specify up to five IDs.', 'type' => 'string', 'example' => 'sp-n0kn923****', 'required' => false, 'title' => ''],
'required' => true,
'maxItems' => 5,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
'SecrityPolicyRelations' => [
'title' => '',
'description' => 'The security policies and the listeners that are associated with the security policies.',
'type' => 'array',
'items' => [
'description' => 'The security policy and the listeners that are associated with the security policy.',
'type' => 'object',
'properties' => [
'RelatedListeners' => [
'title' => '',
'description' => 'The listeners that are associated with the security policy.',
'type' => 'array',
'items' => [
'description' => 'The listener that is associated with the security policy.',
'type' => 'object',
'properties' => [
'ListenerId' => ['description' => 'The listener ID.', 'type' => 'string', 'example' => 'lsn-0bfuc****', 'title' => ''],
'ListenerPort' => ['description' => 'The listener port.', 'type' => 'integer', 'format' => 'int64', 'example' => '80', 'title' => ''],
'ListenerProtocol' => ['description' => 'The listener protocol.', 'type' => 'string', 'example' => 'HTTPS', 'title' => ''],
'LoadBalancerId' => ['description' => 'The Server Load Balancer (SLB) instance ID.', 'type' => 'string', 'example' => 'alb-umwzbz6******', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'SecurityPolicyId' => ['description' => 'The security policy ID.', 'type' => 'string', 'example' => 'sp-bp1bpn0kn9****', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'ListSecurityPolicyRelations',
'summary' => 'Queries the listeners that are associated with security policies.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListSecurityPolicyRelations',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicy}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\",\\n \\"SecrityPolicyRelations\\": [\\n {\\n \\"RelatedListeners\\": [\\n {\\n \\"ListenerId\\": \\"lsn-0bfuc****\\",\\n \\"ListenerPort\\": 80,\\n \\"ListenerProtocol\\": \\"HTTPS\\",\\n \\"LoadBalancerId\\": \\"alb-umwzbz6******\\"\\n }\\n ],\\n \\"SecurityPolicyId\\": \\"sp-bp1bpn0kn9****\\"\\n }\\n ]\\n}","type":"json"}]',
],
'ListServerGroupServers' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '167',
'abilityTreeNodes' => ['FEATUREslbULKWF1'],
],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The token that determines the start of the next query. Valid values:'."\n"
."\n"
.'- Leave this parameter empty for the first query.'."\n"
."\n"
.'- For subsequent queries, set this parameter to the `NextToken` value from the previous API call.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXG****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '1000', 'minimum' => '1', 'default' => '20', 'title' => '', 'required' => false, 'example' => '50'],
],
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => false, 'example' => 'sgp-cb25e2i2vr******', 'title' => ''],
],
[
'name' => 'ServerIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The server IDs.',
'type' => 'array',
'items' => ['description' => 'The ID of the server. You can specify up to 40 server IDs in each call.'."\n"
."\n"
.'- If the server group is of the **Instance** type, this parameter specifies the ID of an Elastic Compute Service (ECS) instance, an elastic network interface (ENI), or an elastic container instance (ECI).'."\n"
."\n"
.'- If the server group is of the **Ip** type, this parameter specifies an IP address.'."\n"
."\n"
.'- If the server group is of the **Fc** type, this parameter specifies the Alibaba Cloud Resource Name (ARN) of a Function Compute function.', 'type' => 'string', 'example' => 'i-bp1e0u8f10by57wl****', 'required' => false, 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'title' => '',
'example' => '',
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The tags. You can specify up to 10 tags in a request.',
'type' => 'array',
'items' => [
'description' => 'The tags. You can specify up to 10 tags in a request.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. You can specify up to 10 tag keys.'."\n"
."\n"
.'The tag key can be up to 64 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'Test', 'title' => '', 'required' => false],
'Value' => ['description' => 'The tag value. You can specify up to 10 tag values.'."\n"
."\n"
.'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:` and cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'Test', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'MaxResults' => ['description' => 'The maximum number of entries returned on each page.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '50'],
'NextToken' => ['description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, no next page exists.'."\n"
."\n"
.'- If a value is returned for **NextToken**, the value is the token that determines the start of the next query.', 'type' => 'string', 'title' => '', 'example' => 'caeba0bbb2be03f8****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF*****'],
'Servers' => [
'title' => '',
'description' => 'The list of servers.',
'type' => 'array',
'items' => [
'description' => 'The details of the backend server.',
'type' => 'object',
'properties' => [
'Description' => ['description' => 'The description of the backend server.', 'type' => 'string', 'example' => 'test', 'title' => ''],
'Port' => ['description' => 'The port used by the backend server. Valid values: **1** to **65535**.', 'type' => 'integer', 'format' => 'int32', 'example' => '80', 'title' => ''],
'ServerId' => ['description' => 'The ID of the backend server.'."\n"
."\n"
.'> If **ServerType** is **Fc**, **ServerId** is the ARN of a Function Compute function.', 'type' => 'string', 'example' => 'i-bp1f9kdprbgy9uiu****', 'title' => ''],
'ServerIp' => ['description' => 'The IP address of the server.', 'type' => 'string', 'example' => '192.168.XX.XX', 'title' => ''],
'ServerType' => ['description' => 'The type of the backend server.', 'type' => 'string', 'example' => 'Ecs', 'title' => ''],
'Status' => ['description' => 'The status of the backend server. Valid values:'."\n"
."\n"
.'- **Adding**: The server is being added.'."\n"
."\n"
.'- **Available**: The server is available.'."\n"
."\n"
.'- **Configuring**: The server is being configured.'."\n"
."\n"
.'- **Removing**: The server is being removed.', 'type' => 'string', 'example' => 'Available', 'title' => ''],
'Weight' => ['description' => 'The weight of the backend server. A server with a higher weight receives more requests.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''],
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'example' => 'sgp-qy042e1jabmprh****', 'title' => ''],
'RemoteIpEnabled' => ['description' => 'Indicates whether the remote IP address feature is enabled. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'example' => 'true', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'TotalCount' => ['description' => 'The total number of entries that match the query conditions.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '3'],
],
'example' => '',
],
],
],
'errorCodes' => [
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
],
],
'title' => 'ListServerGroupServers',
'summary' => 'Lists the servers in a server group.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListServerGroupServers',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"caeba0bbb2be03f8****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF*****\\",\\n \\"Servers\\": [\\n {\\n \\"Description\\": \\"test\\",\\n \\"Port\\": 80,\\n \\"ServerId\\": \\"i-bp1f9kdprbgy9uiu****\\",\\n \\"ServerIp\\": \\"192.168.XX.XX\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\",\\n \\"Weight\\": 100,\\n \\"ServerGroupId\\": \\"sgp-qy042e1jabmprh****\\",\\n \\"RemoteIpEnabled\\": true\\n }\\n ],\\n \\"TotalCount\\": 3\\n}","type":"json"}]',
],
'ListServerGroups' => [
'summary' => 'Retrieves a list of server groups.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '166',
'abilityTreeNodes' => ['FEATUREslbULKWF1', 'FEATUREslbVRSQEA'],
],
'parameters' => [
[
'name' => 'ServerGroupIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The server group IDs. You can specify up to 20 IDs in a single request.',
'type' => 'array',
'items' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtop****', 'title' => ''],
'required' => false,
'maxItems' => 20,
'example' => '',
],
],
[
'name' => 'ServerGroupNames',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The server group names. You can specify up to 10 names in a single request.',
'type' => 'array',
'items' => ['description' => 'The server group name.', 'type' => 'string', 'required' => false, 'example' => 'Group3', 'title' => ''],
'required' => false,
'maxItems' => 10,
'example' => '',
],
],
[
'name' => 'ResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The resource group ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-atstuj3rtop****'],
],
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['description' => 'The token used for the next query.'."\n"
."\n"
.'- If this is your first query or no next query is to be sent, you can leave this parameter empty.'."\n"
."\n"
.'- If a subsequent query is to be sent, set this parameter to the value of **NextToken** from the previous API response.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXG****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['description' => 'The number of entries to return on each page. Valid values: **1** to **100**. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '1', 'default' => '20', 'title' => '', 'required' => false, 'example' => '20'],
],
[
'name' => 'VpcId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the virtual private cloud (VPC).', 'type' => 'string', 'example' => 'vpc-bp15zckdt37pq72zv****', 'required' => false],
],
[
'name' => 'ServerGroupType',
'in' => 'query',
'schema' => ['description' => 'The type of the server group. Valid values:'."\n"
."\n"
.'- **Instance**: allows you to add servers of the ECS, ENI, and ECI types.'."\n"
."\n"
.'- **Ip**: allows you to add servers with specified IP addresses.'."\n"
."\n"
.'- **Fc**: allows you to add Function Compute functions as backend servers.'."\n"
."\n"
.'- If you do not specify this parameter, the system queries server groups of all types.', 'type' => 'string', 'example' => 'Instance', 'title' => '', 'required' => false],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The tags. You can specify up to 10 tags in a single request.',
'type' => 'array',
'items' => [
'description' => 'A tag that consists of a key-value pair.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key.'."\n"
."\n"
.'The tag key can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and it cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'Test', 'title' => '', 'required' => false],
'Value' => ['description' => 'The tag value.'."\n"
."\n"
.'The tag value can be up to 128 characters in length. It cannot start with `aliyun` or `acs:`, and it cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'Test', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => 'Instance',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The data structure that is returned.',
'type' => 'object',
'properties' => [
'MaxResults' => ['description' => 'The number of entries returned per page.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '50'],
'NextToken' => ['description' => 'The token used to retrieve the next page of results. Valid values:'."\n"
."\n"
.'- If **NextToken** is empty, no more results are available.'."\n"
."\n"
.'- If a value is returned, use it to retrieve the next page of results.', 'type' => 'string', 'title' => '', 'example' => 'caeba0bbb2be03f8****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876******'],
'ServerGroups' => [
'title' => '',
'description' => 'The list of server groups.',
'type' => 'array',
'items' => [
'description' => 'The list of server groups.',
'type' => 'object',
'properties' => [
'HealthCheckConfig' => [
'title' => '',
'description' => 'The health check configuration.',
'type' => 'object',
'properties' => [
'HealthCheckConnectPort' => ['description' => 'The port on the backend server used for health checks. Valid values: **0** to **65535**.'."\n"
."\n"
.'If the value is **0**, the backend server port is used for health checks.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '80'],
'HealthCheckEnabled' => ['description' => 'Indicates whether health checks are enabled. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'true'],
'HealthCheckHost' => ['description' => 'The domain name that is used for health checks.'."\n"
."\n"
.'- **The private IP address of the backend server** (Default): The private IP address of the backend server is used for health checks.'."\n"
."\n"
.'- **A custom domain name**: Specify a domain name that meets the following requirements:'."\n"
."\n"
.' - The domain name must be 1 to 80 characters in length.'."\n"
."\n"
.' - It can contain lowercase letters, digits, hyphens (-), and periods (.).'."\n"
."\n"
.' - It must contain at least one period (.). The period (.) cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and cannot contain digits or hyphens (-).'."\n"
."\n"
.' - The hyphen (-) cannot be the first or last character.'."\n"
."\n"
.'> This parameter is valid only when `HealthCheckProtocol` is set to `HTTP`, `HTTPS`, or `gRPC`.', 'type' => 'string', 'title' => '', 'example' => 'www.example.com'],
'HealthCheckCodes' => [
'title' => '',
'description' => 'The list of status codes that indicate a successful health check.',
'type' => 'array',
'items' => ['description' => 'The status code that indicates a successful health check.'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, valid values for **HealthCheckCodes** are **http\\_2xx**, **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple values with commas (,).'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **gRPC**, the valid status code range for **HealthCheckCodes** is **0** to **99**. You can specify up to 20 value ranges. Separate multiple ranges with commas (,).'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'example' => 'http_2xx', 'title' => ''],
'example' => '',
],
'HealthCheckHttpVersion' => ['description' => 'The HTTP version that is used for health checks.'."\n"
."\n"
.'Valid values: **HTTP1.0** or **HTTP1.1**.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'title' => '', 'example' => 'HTTP1.1'],
'HealthCheckInterval' => ['description' => 'The interval at which health checks are performed, in seconds. Valid values: **1** to **50**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '5'],
'HealthCheckMethod' => ['description' => 'The health check method. Valid values:'."\n"
."\n"
.'- **GET**: If the response body exceeds 8 KB, it is truncated. This does not affect the health check result.'."\n"
."\n"
.'- **POST**: gRPC health checks use the POST method by default.'."\n"
."\n"
.'- **HEAD**: HTTP and HTTPS health checks use the HEAD method by default.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'title' => '', 'example' => 'HEAD'],
'HealthCheckPath' => ['title' => '', 'description' => 'The path that is used for health checks.'."\n"
."\n"
.'> This parameter is valid only when **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'example' => '/test/index.html'],
'HealthCheckProtocol' => ['description' => 'The protocol that is used for health checks. Valid values:'."\n"
."\n"
.'- **HTTP**: The load balancer sends HEAD or GET requests to check the health of the backend server.'."\n"
."\n"
.'- **HTTPS**: The load balancer sends HEAD or GET requests to check the health of the backend server. HTTPS provides higher security than HTTP because data is encrypted.'."\n"
."\n"
.'- **TCP**: The load balancer sends SYN packets to check whether the port of the backend server is reachable.'."\n"
."\n"
.'- **gRPC**: The load balancer sends POST or GET requests to check the health of the backend server.', 'type' => 'string', 'title' => '', 'example' => 'HTTP'],
'HealthCheckTimeout' => ['description' => 'The timeout for a health check response, in seconds. If a backend server does not respond within this timeout, the health check fails.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '3'],
'HealthyThreshold' => ['description' => 'The number of consecutive successful health checks required for a backend server to change its status from **unhealthy** to **healthy**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '4'],
'UnhealthyThreshold' => ['description' => 'The number of consecutive failed health checks required for a backend server to change its status from **healthy** to **unhealthy**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '4'],
],
'example' => '',
],
'Protocol' => ['description' => 'The backend protocol. Valid values:'."\n"
."\n"
.'- **HTTP**: can be associated with HTTPS, HTTP, and QUIC listeners.'."\n"
."\n"
.'- **HTTPS**: can be associated with HTTPS listeners.'."\n"
."\n"
.'- **GRPC**: can be associated with HTTPS and QUIC listeners.', 'type' => 'string', 'title' => '', 'example' => 'HTTP'],
'RelatedLoadBalancerIds' => [
'title' => '',
'description' => 'The IDs of the associated load balancer instances.',
'type' => 'array',
'items' => ['description' => 'The ID of the associated load balancer instance.', 'type' => 'string', 'example' => 'alb-n5qw04uq8savfe****', 'title' => ''],
'example' => '',
],
'ResourceGroupId' => ['description' => 'The resource group ID.', 'type' => 'string', 'title' => '', 'example' => 'rg-atstuj3rtop****'],
'Scheduler' => ['description' => 'The scheduling algorithm. Valid values:'."\n"
."\n"
.'- **Wrr**: weighted round robin. Backend servers with higher weights receive more requests.'."\n"
."\n"
.'- **Wlc**: weighted least connections. The load balancer considers both the weight and the number of active connections for each backend server. If weights are the same, the backend server with the fewest active connections is selected.'."\n"
."\n"
.'- **Sch**: consistent hashing. Requests with the same hash key are routed to the same backend server. By default, the hash key is the source IP address. If `UchConfig` is configured, the hash key is a URL parameter.', 'type' => 'string', 'title' => '', 'example' => 'Wrr'],
'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'title' => '', 'example' => 'sgp-cige6j****'],
'ServerGroupName' => ['description' => 'The server group name.', 'type' => 'string', 'title' => '', 'example' => 'Group3'],
'ServerGroupStatus' => ['description' => 'The status of the server group. Valid values:'."\n"
."\n"
.'- **Creating**: The server group is being created.'."\n"
."\n"
.'- **Available**: The server group is available.'."\n"
."\n"
.'- **Configuring**: The server group is being updated.', 'type' => 'string', 'title' => '', 'example' => 'Available'],
'ServerGroupType' => ['description' => 'The type of the server group. Valid values:'."\n"
."\n"
.'- **Instance**: an instance-type server group to which you can add ECS instances, elastic network interfaces (ENIs), and ECI instances.'."\n"
."\n"
.'- **IP**: an IP-based server group.'."\n"
."\n"
.'- **Function Compute**: a Function Compute-based server group.', 'type' => 'string', 'title' => '', 'example' => 'Instance'],
'StickySessionConfig' => [
'title' => '',
'description' => 'The sticky session configuration.',
'type' => 'object',
'properties' => [
'Cookie' => ['title' => '', 'description' => 'The cookie that is configured on the backend server.', 'type' => 'string', 'example' => 'B490B5EBF6F3CD402E515D22BCDA****'],
'CookieTimeout' => ['description' => 'The timeout period of the cookie, in seconds. Valid values: **1** to **86400**.'."\n"
."\n"
.'> This parameter takes effect when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Insert**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1000'],
'StickySessionEnabled' => ['description' => 'Specifies whether to enable sticky sessions. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'StickySessionType' => ['description' => 'The method that is used to manage cookies. Valid values:'."\n"
."\n"
.'- **Insert**: Inserts a cookie.'."\n"
.' When a client makes its first request, the load balancer inserts a `SERVERID` cookie into the response. Subsequent requests from the client will include this cookie, and the load balancer will route these requests to the same backend server.'."\n"
."\n"
.'- **Server**: Rewrites a cookie.'."\n"
.' If the load balancer detects a user-defined cookie, it overwrites the original cookie in the response. Subsequent requests from the client will include the new cookie, and the load balancer will route these requests to the same backend server.', 'type' => 'string', 'title' => '', 'example' => 'Insert'],
],
'example' => '',
],
'VpcId' => ['description' => 'The ID of the VPC.', 'type' => 'string', 'title' => '', 'example' => 'vpc-bp15zckdt37pq72zv****'],
'Tags' => [
'title' => '',
'description' => 'The list of tags that are associated with the server group.',
'type' => 'array',
'items' => [
'description' => 'The list of tags that are associated with the server group.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key.', 'type' => 'string', 'title' => '', 'example' => 'Test'],
'Value' => ['description' => 'The tag value.', 'type' => 'string', 'title' => '', 'example' => 'Test'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'ConfigManagedEnabled' => ['description' => 'Specifies whether to enable configuration management. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'UpstreamKeepaliveEnabled' => ['description' => 'Specifies whether to enable backend keep-alive connections. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'Ipv6Enabled' => ['description' => 'Specifies whether IPv6 is enabled. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'title' => '', 'example' => 'false'],
'ServerCount' => ['description' => 'The number of backend servers in the server group.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''],
'ServiceName' => ['description' => 'The service name.', 'type' => 'string', 'title' => '', 'example' => 'test'],
'UchConfig' => [
'title' => '',
'description' => 'The configuration of URL-based consistent hashing.',
'type' => 'object',
'properties' => [
'Type' => ['description' => 'The type of the parameter. The value must be `QueryString`.', 'type' => 'string', 'example' => 'QueryString', 'title' => ''],
'Value' => ['description' => 'The value of the consistent hashing parameter.', 'type' => 'string', 'example' => 'abc', 'title' => ''],
],
'example' => '',
],
'CreateTime' => ['description' => 'The time when the server group was created.', 'type' => 'string', 'example' => '2022-07-02T02:49:05Z', 'title' => ''],
'ConnectionDrainConfig' => [
'description' => 'The connection draining configuration.'."\n"
."\n"
.'If you enable connection draining, the load balancer allows existing connections to be processed within a specified period of time after a backend server is removed or fails a health check.'."\n"
."\n"
.'> - A basic instance does not support connection draining. Only standard instances and WAF-enabled instances support this feature.'."\n"
.'>'."\n"
.'> - Connection draining is supported by instance and IP-based server groups, but not by Function Compute-based server groups.',
'type' => 'object',
'properties' => [
'ConnectionDrainEnabled' => ['description' => 'Specifies whether to enable connection draining. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'example' => 'false', 'title' => ''],
'ConnectionDrainTimeout' => ['description' => 'The timeout period for connection draining.', 'type' => 'integer', 'format' => 'int32', 'example' => '300', 'title' => ''],
],
'title' => '',
'example' => '',
],
'SlowStartConfig' => [
'title' => '',
'description' => 'The slow start configuration.'."\n"
."\n"
.'After you enable slow start, the load balancer warms up newly added backend servers for a specified period of time. The number of requests that are routed to these servers increases linearly during the warm-up period.'."\n"
."\n"
.'> - A basic instance does not support slow start. Only standard instances and WAF-enabled instances support this feature.'."\n"
.'>'."\n"
.'> - Instance and IP-based server groups support slow start. Function Compute-based server groups do not.'."\n"
.'>'."\n"
.'> - You can enable slow start only when the scheduling algorithm is weighted round robin.',
'type' => 'object',
'properties' => [
'SlowStartEnabled' => ['description' => 'Specifies whether to enable slow start. Valid values:'."\n"
."\n"
.'- **true**: Enabled.'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'example' => 'false', 'title' => ''],
'SlowStartDuration' => ['description' => 'The slow start duration, in seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '30', 'title' => ''],
],
'example' => '',
],
'CrossZoneEnabled' => ['description' => 'Specifies whether to enable cross-zone load balancing for the server group. Valid values:'."\n"
."\n"
.'- **true**: Enabled. (Default)'."\n"
."\n"
.'- **false**: Disabled.', 'type' => 'boolean', 'example' => 'true', 'title' => ''],
'IpVersionAffinityMode' => ['type' => 'string', 'example' => 'Affinity', 'description' => '', 'title' => ''],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1000'],
],
'example' => '',
],
],
],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'title' => 'ListServerGroups',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListServerGroups',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/*'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 50,\\n \\"NextToken\\": \\"caeba0bbb2be03f8****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876******\\",\\n \\"ServerGroups\\": [\\n {\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHost\\": \\"www.example.com\\",\\n \\"HealthCheckCodes\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckHttpVersion\\": \\"HTTP1.1\\",\\n \\"HealthCheckInterval\\": 5,\\n \\"HealthCheckMethod\\": \\"HEAD\\",\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"HTTP\\",\\n \\"HealthCheckTimeout\\": 3,\\n \\"HealthyThreshold\\": 4,\\n \\"UnhealthyThreshold\\": 4\\n },\\n \\"Protocol\\": \\"HTTP\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"alb-n5qw04uq8savfe****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"Wrr\\",\\n \\"ServerGroupId\\": \\"sgp-cige6j****\\",\\n \\"ServerGroupName\\": \\"Group3\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"StickySessionConfig\\": {\\n \\"Cookie\\": \\"B490B5EBF6F3CD402E515D22BCDA****\\",\\n \\"CookieTimeout\\": 1000,\\n \\"StickySessionEnabled\\": false,\\n \\"StickySessionType\\": \\"Insert\\"\\n },\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"Test\\",\\n \\"Value\\": \\"Test\\"\\n }\\n ],\\n \\"ConfigManagedEnabled\\": false,\\n \\"UpstreamKeepaliveEnabled\\": false,\\n \\"Ipv6Enabled\\": false,\\n \\"ServerCount\\": 1,\\n \\"ServiceName\\": \\"test\\",\\n \\"UchConfig\\": {\\n \\"Type\\": \\"QueryString\\",\\n \\"Value\\": \\"abc\\"\\n },\\n \\"CreateTime\\": \\"2022-07-02T02:49:05Z\\",\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"SlowStartConfig\\": {\\n \\"SlowStartEnabled\\": false,\\n \\"SlowStartDuration\\": 30\\n },\\n \\"CrossZoneEnabled\\": true,\\n \\"IpVersionAffinityMode\\": \\"Affinity\\"\\n }\\n ],\\n \\"TotalCount\\": 1000\\n}","type":"json"}]',
],
'ListSystemSecurityPolicies' => [
'summary' => 'Queries system security policies in a region.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => [
'operationType' => 'get',
'abilityTreeCode' => '272',
'abilityTreeNodes' => ['FEATUREslb39XGK4'],
'tenantRelevance' => 'publicInformation',
],
'parameters' => [],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
'SecurityPolicies' => [
'title' => '',
'description' => 'The security policies.',
'type' => 'array',
'items' => [
'description' => 'The details about the security policy.',
'type' => 'object',
'properties' => [
'Ciphers' => [
'title' => '',
'description' => 'The supported cipher suite.',
'type' => 'array',
'items' => ['description' => 'The supported cipher suites are determined by the value of **TLSVersions**.'."\n"
."\n"
.'- TLSv1.0 and TLSv1.1 support the following cipher suites:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.'- TLSv1.2 supports the following cipher suites:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA384'."\n"
."\n"
.' - AES128-GCM-SHA256'."\n"
."\n"
.' - AES256-GCM-SHA384'."\n"
."\n"
.' - AES128-SHA256'."\n"
."\n"
.' - AES256-SHA256'."\n"
."\n"
.'- TLSv1.3 supports the following cipher suites:'."\n"
."\n"
.' - TLS\\_AES\\_128\\_GCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_256\\_GCM\\_SHA384'."\n"
."\n"
.' - TLS\\_CHACHA20\\_POLY1305\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_8\\_SHA256', 'type' => 'string', 'example' => 'ECDHE-ECDSA-AES128-SHA', 'title' => ''],
'example' => '',
],
'SecurityPolicyId' => ['description' => 'The ID of the security policy.', 'type' => 'string', 'example' => 'tls_cipher_policy_1_0', 'title' => ''],
'TLSVersions' => [
'title' => '',
'description' => 'The supported TLS protocol versions.',
'type' => 'array',
'items' => ['description' => 'The supported TLS versions. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.', 'type' => 'string', 'example' => 'TLSv1.0', 'title' => ''],
'example' => '',
],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"SecurityPolicies\\": [\\n {\\n \\"Ciphers\\": [\\n \\"ECDHE-ECDSA-AES128-SHA\\"\\n ],\\n \\"SecurityPolicyId\\": \\"tls_cipher_policy_1_0\\",\\n \\"TLSVersions\\": [\\n \\"TLSv1.0\\"\\n ]\\n }\\n ]\\n}","type":"json"}]',
'title' => 'ListSystemSecurityPolicies',
'changeSet' => [],
'ramActions' => [],
],
'ListTagKeys' => [
'summary' => 'Queries tag keys.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '20', 'default' => '20'],
],
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'* **acl**: an access control list (ACL)'."\n"
.'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'required' => true, 'example' => 'loadbalancer'],
],
[
'name' => 'Category',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the tag.'."\n"
."\n"
.'Valid values: **Custom**, **System**, and **All**.'."\n"
."\n"
.'Default value: **All**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'System'],
],
[
'name' => 'Keyword',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'test'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The tag key.'."\n",
'type' => 'object',
'properties' => [
'MaxResults' => ['title' => '', 'description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '20'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
'TagKeys' => [
'title' => '',
'description' => 'The tag keys.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tag key.'."\n",
'type' => 'object',
'properties' => [
'Category' => ['title' => '', 'description' => 'The type of the tag.'."\n"
."\n"
.'Valid values: **Custom**, **System**, and **All**.'."\n"
."\n"
.'Default value: **All**.'."\n", 'type' => 'string', 'example' => 'System'],
'TagKey' => ['title' => '', 'description' => 'The tag that matches all filter conditions.'."\n", 'type' => 'string', 'example' => 'test'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '10'],
],
'example' => '',
],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"TagKeys\\": [\\n {\\n \\"Category\\": \\"System\\",\\n \\"TagKey\\": \\"test\\"\\n }\\n ],\\n \\"TotalCount\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 20\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n \\n System\\n test\\n \\n 10\\n","errorExample":""}]',
'title' => 'ListTagKeys',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListTagKeys',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
],
],
'ListTagResources' => [
'summary' => 'Queries the tags of resources.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'get'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '20', 'default' => '20'],
],
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'* **acl**: an access control list (ACL)'."\n"
.'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'required' => true, 'example' => 'loadbalancer'],
],
[
'name' => 'ResourceId',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The resource IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The resource ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'alb-gws76zi******', 'title' => ''],
'required' => false,
'example' => 'acl-123',
'maxItems' => 50,
'minItems' => 1,
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The tags.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tag.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['title' => '', 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env'],
'Value' => ['title' => '', 'description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'product'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => 'test',
'maxItems' => 20,
'minItems' => 1,
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.'."\n",
'type' => 'object',
'properties' => [
'MaxResults' => ['title' => '', 'description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '20'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FD******'],
'TagResources' => [
'title' => '',
'description' => 'The tags that match the specified keys and values.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tag that matches the specified key and value.'."\n",
'type' => 'object',
'properties' => [
'ResourceId' => ['title' => '', 'description' => 'The resource ID.'."\n", 'type' => 'string', 'example' => 'alb-gws76zijb0******'],
'ResourceType' => ['title' => '', 'description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'* **acl**: an ACL'."\n"
.'* **loadbalancer**: an ALB instance'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'example' => 'loadbalancer'],
'TagKey' => ['title' => '', 'description' => 'The tag key.'."\n", 'type' => 'string', 'example' => 'env'],
'TagValue' => ['title' => '', 'description' => 'The tag value.'."\n", 'type' => 'string', 'example' => 'product'],
],
'title' => '',
'example' => '',
],
'example' => '',
],
],
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FD******\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"alb-gws76zijb0******\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"env\\",\\n \\"TagValue\\": \\"product\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 20\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n \\n d-2ze1ot4ah7xjyv0d****\\n loadbalancer\\n env\\n product\\n \\n","errorExample":""}]',
'title' => 'ListTagResources',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListTagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securityPolicyId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
],
'ListTagValues' => [
'summary' => 'Queries tag values.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'read',
'deprecated' => false,
'systemTags' => ['operationType' => 'list'],
'parameters' => [
[
'name' => 'NextToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* You do not need to specify this parameter for the first request.'."\n"
.'* You must specify the token that is obtained from the previous query as the value of **NextToken**.'."\n", 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
],
[
'name' => 'MaxResults',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **1** to **100**. Default value: **20**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'example' => '20', 'default' => '20'],
],
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
.'* **acl**: an access control list (ACL)'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'required' => false, 'example' => 'loadbalancer'],
],
[
'name' => 'ResourceId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The resource ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'alb-gws76zijb0******'],
],
[
'name' => 'TagKey',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.'."\n", 'type' => 'string', 'required' => true, 'example' => 'test'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to query tag values.'."\n",
'type' => 'object',
'properties' => [
'MaxResults' => ['title' => '', 'description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '20'],
'NextToken' => ['title' => '', 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. Valid values:'."\n"
."\n"
.'* If **NextToken** is empty, no next page exists.'."\n"
.'* If a value is returned for **NextToken**, the value is the token that determines the start point of the next query.'."\n", 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
'TagValues' => [
'title' => '',
'description' => 'The tag values.'."\n",
'type' => 'array',
'items' => ['description' => 'The tag that matches all filter conditions.'."\n", 'type' => 'string', 'example' => 'owner', 'title' => ''],
'example' => '',
],
'TotalCount' => ['title' => '', 'description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '10'],
],
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\",\\n \\"TagValues\\": [\\n \\"owner\\"\\n ],\\n \\"TotalCount\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 20\\n FFmyTO70tTpLG6I3FmYAXGKPd****\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n owner\\n 10\\n","errorExample":""}]',
'title' => 'ListTagValues',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListTagValues',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
],
],
'LoadBalancerJoinSecurityGroup' => [
'summary' => 'Adds an Application Load Balancer (ALB) instance to a security group.',
'methods' => ['post', 'get'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'none',
'abilityTreeCode' => '171521',
'abilityTreeNodes' => ['FEATUREslbKS6M4D', 'FEATUREslb39XGK4'],
],
'parameters' => [
[
'name' => 'SecurityGroupIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The security group IDs.'."\n",
'type' => 'array',
'items' => ['description' => 'The security group ID.'."\n", 'type' => 'string', 'required' => false, 'example' => 'sg-m5e7xkprgt1pi1ik****', 'title' => ''],
'required' => true,
'maxItems' => 10,
'title' => '',
'example' => '',
],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ALB instance ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'alb-h7kcw4g4nnvtqp****', 'title' => ''],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-426655440000', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The task result.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.'."\n", 'type' => 'string', 'example' => '8fe81f25-79a0-4fa0-9036-f2601fda****', 'title' => ''],
'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'D3B9AE45-F5DB-58E3-A4B5-EE58F1EC****', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceAlreadyAssociated.SecurityGroup', 'errorMessage' => 'The specified resource of %s is already associated.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.SecurityGroupNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'OperationDenied.SecurityGroupNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.LbAssociatedAclCanNotJoinSecurityGroup', 'errorMessage' => 'The operation is not allowed because of loadBalancer associated acl can not join security group.', 'description' => 'This operation is not allowed because the listener under the Server Load Balancer instance has been bound to an access control policy. You are not allowed to join the security group again.'],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Alb::2020-06-16::ListAsynJobs', 'callbackInterval' => 3000, 'maxCallbackTimes' => 20],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"8fe81f25-79a0-4fa0-9036-f2601fda****\\",\\n \\"RequestId\\": \\"D3B9AE45-F5DB-58E3-A4B5-EE58F1EC****\\"\\n}","type":"json"}]',
'title' => 'LoadBalancerJoinSecurityGroup',
'description' => '* By default, security groups are unavailable. To use security groups, contact your account manager.'."\n"
."\n"
.'* Make sure that a security group is created. For more information about how to create security groups, see [CreateSecurityGroup](~~2679843~~).'."\n"
."\n"
.'* Each ALB instance can be added to at most four security groups.'."\n"
."\n"
.'* To query the security groups of an ALB instance, call the [GetLoadBalancerAttribute](~~2254835~~) operation.'."\n"
."\n"
.'* GetLoadBalancerAttribute 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 [ListAsynJobs](~~2254893~~) operation to query the status of the task.'."\n"
."\n"
.' * If the task is in the Succeeded state, the ALB instance is added to the security group.'."\n"
.' * If the task is in the Processing state, the ALB instance is being added to the security group. In this case, you can query the task but cannot perform other operations.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'none',
'ramAction' => [
'action' => 'alb:LoadBalancerJoinSecurityGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'LoadBalancerLeaveSecurityGroup' => [
'methods' => ['post', 'get'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'none',
'abilityTreeCode' => '171520',
'abilityTreeNodes' => ['FEATUREslbKS6M4D', 'FEATUREslb39XGK4'],
],
'parameters' => [
[
'name' => 'SecurityGroupIds',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The security group IDs.',
'type' => 'array',
'items' => ['description' => 'The security group ID.', 'type' => 'string', 'required' => false, 'example' => 'sg-1nmf15kvwj37g2g1****', 'title' => ''],
'required' => true,
'maxItems' => 10,
'title' => '',
'example' => '',
],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ALB instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-iv9gj3spak6fbj****', 'title' => ''],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The task result.', 'type' => 'string', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0****', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => '',
'type' => 'object',
'properties' => [
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'EC0C96E4-7CCB-599C-9329-3A5DB6FF****', 'title' => ''],
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'example' => '51c5b627-3500-487c-b17d-5cc583f0****', 'title' => ''],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.SecurityGroupNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceNotAssociated.SecurityGroup', 'errorMessage' => 'The specified resource of %s is not associated.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Alb::2020-06-16::ListAsynJobs', 'callbackInterval' => 3000, 'maxCallbackTimes' => 20],
'title' => 'LoadBalancerLeaveSecurityGroup',
'summary' => 'Removes an Application Load Balancer (ALB) instance from a security group.',
'description' => '- LoadBalancerLeaveSecurityGroup 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 [ListAsynJobs](~~2254893~~) operation to query the status of the task.'."\n"
."\n"
.' - If the task is in the Succeeded state, the ALB instance is removed from the security group.'."\n"
."\n"
.' - If the task is in the Processing state, the ALB instance is being removed from the security group. In this case, you can query the task but cannot perform other operations.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'none',
'ramAction' => [
'action' => 'alb:LoadBalancerLeaveSecurityGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"EC0C96E4-7CCB-599C-9329-3A5DB6FF****\\",\\n \\"JobId\\": \\"51c5b627-3500-487c-b17d-5cc583f0****\\"\\n}","type":"json"}]',
],
'ModifyCapacityReservation' => [
'summary' => 'Creates and updates a Load Balancer Capacity Unit (LCU) reservation.',
'path' => '',
'methods' => ['post', 'get'],
'schemes' => ['https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'paid',
'abilityTreeNodes' => ['FEATUREslbEUW2CG'],
'autoTest' => true,
'tenantRelevance' => 'tenant',
],
'parameters' => [
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-iv9gj3spak6fbj****', 'title' => ''],
],
[
'name' => 'ResetCapacityReservation',
'in' => 'query',
'schema' => [
'description' => 'Specifies whether to cancel the LCU reservation. Valid values:'."\n"
."\n"
.'- **true**: Cancels the LCU reservation.'."\n"
."\n"
.'- **false** (default): Does not cancel the LCU reservation. You do not need to specify this parameter when creating or updating an LCU reservation.',
'enumValueTitles' => [],
'type' => 'boolean',
'example' => 'false',
'default' => 'false',
'enum' => ['true', 'false'],
'title' => '',
'required' => false,
],
],
[
'name' => 'MinimumLoadBalancerCapacity',
'in' => 'query',
'style' => 'flat',
'schema' => [
'type' => 'object',
'properties' => [
'CapacityUnits' => ['description' => 'The number of LCUs to reserve per hour.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'description' => 'The minimum LCU value to reserve.',
'example' => '',
],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => [
'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Sends a check request but does not reserve any resources. The system checks the request for required parameters, format, and service limits. If the check fails, an error is returned. If the check passes, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): Sends a normal request. After the request passes the check, an HTTP 2xx status code is returned and the operation is performed.',
'enumValueTitles' => ['true' => 'true', 'false' => 'false'],
'type' => 'boolean',
'required' => false,
'example' => 'false',
'title' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'A client token to ensure the idempotence of the request. Generate a token from your client and make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
."\n"
.'> If this parameter is not specified, the system uses the RequestId as the ClientToken. The RequestId of each API request is different.', 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'type' => 'object',
'properties' => [
'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******', 'title' => ''],
],
'title' => '',
'description' => 'The schema of the response.',
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.ListenerNotFound', 'errorMessage' => 'The operation is not allowed because of ListenerNotFound.', 'description' => ''],
['errorCode' => 'OperationDenied.CapacityReservationNotSupport', 'errorMessage' => 'Resource reservation is not supported.', 'description' => ''],
['errorCode' => 'OperationDenied.CapacityUnitsBelowMinimum', 'errorMessage' => 'The operation is not allowed because of CapacityUnitsBelowMinimum.', 'description' => ''],
['errorCode' => 'OperationDenied.CapacityDecreaseRequestLimitExceeded', 'errorMessage' => 'The operation is not allowed because of CapacityDecreaseRequestLimitExceeded.', 'description' => ''],
['errorCode' => 'OperationDenied.PriorRequestNotComplete', 'errorMessage' => 'The operation is not allowed because of PriorRequestNotComplete.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetExists', 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetExists.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetIsEmpty', 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetIsEmpty.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetsConflicts', 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetsConflicts.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetsNotSupport', 'errorMessage' => 'The operation is not allowed because of OperationDenied.DeploymentSetsNotSupport.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetsStrategyNotMatch', 'errorMessage' => 'The operation is not allowed because of DeploymentSetsStrategyNotMatch.', 'description' => ''],
['errorCode' => 'QuotaExceeded.ReservationMaxLcuPerLb', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.ReservationMaxLcuPerRegion', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.DeploymentSetsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'OperationDenied.DeploymentSetsNotSharedToAlb', 'errorMessage' => 'DeploymentSets are not shared to alb.', 'description' => 'These deployment sets are not shared to the ALB.'],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => 'The specified resource of %s is not found.'],
],
],
'staticInfo' => ['returnType' => 'synchronous'],
'title' => 'ModifyCapacityReservation',
'description' => '**ModifyCapacityReservation** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. The LCU reservation is not immediately updated. You can call the DescribeCapacityReservation operation to query the status of an LCU reservation:'."\n"
."\n"
.'- If an LCU reservation is in the **Pending** state, it is being created.'."\n"
."\n"
.'- If an LCU reservation is in the **Provisioned** state, it is created.'."\n"
."\n"
.'- If an LCU reservation is in the **Rebalancing** state, it is being rebalanced across zones.',
'changeSet' => [],
'ramActions' => [],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","type":"json"}]',
],
'MoveResourceGroup' => [
'summary' => 'Moves a resource to another resource group.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'- **loadbalancer**: Application Load Balancer (ALB) instance'."\n"
."\n"
.'- **acl**: access control list (ACL)'."\n"
."\n"
.'- **securitypolicy**: security policy'."\n"
."\n"
.'- **servergroup**: server group', 'type' => 'string', 'required' => true, 'example' => 'acl', 'title' => ''],
],
[
'name' => 'ResourceId',
'in' => 'query',
'schema' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => true, 'example' => 'acl-hp34s2h0xx1ht4nwo****', 'title' => ''],
],
[
'name' => 'NewResourceGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the resource group to which you want to transfer the cloud resource.'."\n"
."\n"
.'> You can use resource groups to manage resources within your Alibaba Cloud account by group. This helps you resolve issues such as resource grouping and permission management for your Alibaba Cloud account. For more information, see [What is resource management?](~~94475~~)', 'type' => 'string', 'required' => true, 'example' => 'rg-aekzbi7******', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'NotExist.ResourceGroup', 'errorMessage' => 'ResourceGroup does not exist.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'ACL authentication has failed.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'MoveResourceGroup',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:MoveResourceGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","type":"json"}]',
],
'RemoveEntriesFromAcl' => [
'summary' => 'Removes entries from an access control list (ACL).',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'AclId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the ACL.'."\n", 'type' => 'string', 'required' => true, 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
],
[
'name' => 'Entries',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The entries that you want to remove. You can remove up to 20 entries in each call.'."\n",
'type' => 'array',
'items' => ['description' => 'The entry that you want to remove. You can remove up to 20 entries in each call.'."\n", 'type' => 'string', 'required' => false, 'example' => '192.168.1.0/24', 'title' => ''],
'required' => true,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to remove entries from an ACL.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.Acl', 'errorMessage' => 'ACL authentication has failed.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.AclEntry', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n","errorExample":""}]',
'title' => 'RemoveEntriesFromAcl',
'description' => '**RemoveEntriesFromAcl** 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 [ListAclEntries](~~213616~~) operation to query the status of the task.'."\n"
."\n"
.'* If an ACL is in the **Removing** state, the entries are being removed.'."\n"
.'* If an ACL cannot be found, the entries are removed.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:RemoveEntriesFromAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
],
'RemoveServersFromServerGroup' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtop****', 'title' => ''],
],
[
'name' => 'Servers',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The backend servers to be removed. You can specify up to 200 backend servers.',
'type' => 'array',
'items' => [
'description' => 'The configurations of the backend server.',
'type' => 'object',
'properties' => [
'Port' => ['description' => 'The port that is used by the backend server. Valid values: **1** to **65535**.'."\n"
."\n"
.'> This parameter is required when you set **ServerType** to **Ecs**, **Eni**, **Eci**, or **Ip**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'docRequired' => false, 'example' => '80', 'title' => ''],
'ServerId' => ['description' => 'The backend server ID.'."\n"
."\n"
.'- If the server group is of the **Instance** type, set ServerId to the ID of a resource of the **Ecs**, **Eni**, or **Eci** type.'."\n"
."\n"
.'- If the server group is of the **Ip** type, set this parameter to IP addresses.'."\n"
."\n"
.'- If the server group is of the **Fc** type, set ServerId to the Alibaba Cloud Resource Name (ARN) of a function.'."\n"
."\n"
.'> You can call the [ListServerGroups](~~2254862~~) operation to query information about the server group type so that you can set ServerId to a proper value.', 'type' => 'string', 'required' => true, 'example' => 'i-bp1f9kdprbgy9uiu****', 'title' => ''],
'ServerIp' => ['description' => 'The IP address of the elastic network interface (ENI) in inclusive mode.', 'type' => 'string', 'example' => '192.168.1.1', 'title' => '', 'required' => false],
'ServerType' => ['description' => 'The type of the backend server. Valid values:'."\n"
."\n"
.'- **Ecs**: Elastic Compute Service (ECS) instance'."\n"
."\n"
.'- **Eni**: ENI'."\n"
."\n"
.'- **Eci**: elastic container instance'."\n"
."\n"
.'- **Ip**: IP address'."\n"
."\n"
.'- **Fc**: Function Compute instance', 'type' => 'string', 'required' => true, 'docRequired' => false, 'example' => 'Ecs', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 200,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceInConfiguring.BackendServer', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication is failed for ServerGroup.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.BackendServer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'RemoveServersFromServerGroup',
'summary' => 'Removes backend servers from a server group.',
'description' => '**RemoveServersFromServerGroup** is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background.'."\n"
."\n"
.'1. You can call [ListServerGroups](~~2254862~~) to query the status of a server group.'."\n"
."\n"
.' - If the server group is in the **Configuring** state, the server group is being modified.'."\n"
."\n"
.' - If the server group is in the **Available** state, the server group is running.'."\n"
."\n"
.'2. You can call [ListServerGroupServers](~~2254863~~) to query the status of a backend server.'."\n"
."\n"
.' - If the backend server is in the **Removing** state, the backend server is being removed from the server group.'."\n"
."\n"
.' - If the backend server cannot be found, the backend server is no longer in the server group.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:RemoveServersFromServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","type":"json"}]',
],
'ReplaceServersInServerGroup' => [
'summary' => 'Replaces the backend servers in a server group.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbULKWF1'],
],
'parameters' => [
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the server group.'."\n"
."\n"
.'> You cannot perform this operation on a server group of the **Fc** type.', 'type' => 'string', 'required' => true, 'example' => 'sgp-5114d593o96qxy****', 'title' => ''],
],
[
'name' => 'AddedServers',
'in' => 'formData',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The backend servers that you want to add. You can specify at most 200 servers in each call.',
'type' => 'array',
'items' => [
'description' => 'The configurations of the backend server.',
'type' => 'object',
'properties' => [
'Description' => ['description' => 'The description of the backend server. The description must be 2 to 256 characters in length, and cannot start with http\\:// or https\\://.', 'type' => 'string', 'example' => 'test', 'title' => '', 'required' => false],
'Port' => ['description' => 'The port used by the server group. Valid values: **1** to **65535**. You can specify at most 200 servers in each call.', 'type' => 'integer', 'format' => 'int32', 'docRequired' => true, 'example' => '80', 'title' => '', 'required' => true],
'ServerId' => ['description' => 'The backend server ID. You can specify at most 200 servers in each call.'."\n"
."\n"
.'- If the server group is of the **Instance** type, this parameter specifies the ID of an **Ecs**, **Eni**, or **Eci** resource.'."\n"
."\n"
.'- If the server group is of the **Ip** type, this parameter specifies an IP address.'."\n"
."\n"
.'> You cannot perform this operation on a server group of the **Fc** type. You can call the [ListServerGroups](~~213627~~) operation to query the type of a server group.', 'type' => 'string', 'required' => false, 'example' => 'i-bp1f9kdprbgy9uiu****', 'title' => ''],
'ServerIp' => ['description' => 'The IP address of the backend server.'."\n"
."\n"
.'If **ServerType** is set to **Eni**, you can specify the primary or secondary private IP address of the Elastic Network Interface (ENI).', 'type' => 'string', 'example' => '192.168.1.1', 'title' => '', 'required' => false],
'ServerType' => ['description' => 'The type of the backend server that you want to add to the server group. You can specify at most 200 servers in each call. Valid values:'."\n"
."\n"
.'- **Ecs**: ECS instance.'."\n"
."\n"
.'- **Eni**: ENI elastic network interfaces (ENIs).'."\n"
."\n"
.'- **Eci**: ECI elastic container.'."\n"
."\n"
.'- **Ip**: IP address.'."\n"
."\n"
.'- **Fc**: Function Compute.', 'type' => 'string', 'docRequired' => true, 'example' => 'Ecs', 'title' => '', 'required' => true],
'Weight' => ['description' => 'The weight of the backend server. You can specify at most 200 servers in each call.'."\n"
."\n"
.'Valid values: **0** to **100**. Default value: **100**. If the weight is set to **0**, no requests are forwarded to the backend server.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 200,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RemovedServers',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The backend servers that you want to remove.',
'type' => 'array',
'items' => [
'description' => 'The configurations of the backend servers that you want to remove.',
'type' => 'object',
'properties' => [
'ServerId' => ['description' => 'The backend server ID. You can specify at most 200 servers in each call.'."\n"
."\n"
.'- If the server group is of the **Instance** type, this parameter specifies the ID of an **Ecs**, **Eni**, or **Eci** resource.'."\n"
."\n"
.'- If the server group is of the **Ip** type, this parameter specifies an IP address.'."\n"
."\n"
.'> You cannot perform this operation on a server group of the **Fc** type. You can call the [ListServerGroups](~~213627~~) operation to query the type of a server group.', 'type' => 'string', 'required' => true, 'example' => 'i-bp1f9kdprbgy9uiu****', 'title' => ''],
'ServerIp' => ['description' => 'The IP address of the backend server.'."\n"
."\n"
.'If **ServerType** is set to **Eni**, you can specify the primary or secondary private IP address of the Elastic Network Interface (ENI).', 'type' => 'string', 'example' => '192.168.1.12', 'title' => '', 'required' => false],
'ServerType' => ['description' => 'The type of backend server. You can specify at most 200 servers in each call. Valid values:'."\n"
."\n"
.'- **Ecs**: ECS instance.'."\n"
."\n"
.'- **Eni**: ENI elastic network interfaces (ENIs).'."\n"
."\n"
.'- **Eci**: ECI elastic container.'."\n"
."\n"
.'- **Ip**: IP address.', 'type' => 'string', 'docRequired' => true, 'example' => 'ecs', 'title' => '', 'required' => true],
'Port' => ['description' => 'The port of the backend server. Valid values: **1** to **65535**. You can specify at most 200 servers in each call.', 'type' => 'integer', 'format' => 'int32', 'docRequired' => true, 'example' => '81', 'title' => '', 'required' => true],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 200,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** as the **ClientToken**. The **RequestId** is different for each API request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request syntax, and limits. If the request fails the validation, the corresponding error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n"
."\n"
.'- **false** (default): performs a normal request. After the request passes the check, an `HTTP 2xx` status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'Conflict.BackendServer', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'DuplicatedParam.BackendServer', 'errorMessage' => 'The param of %s is duplicated.', 'description' => 'The param of %s is duplicated.'],
['errorCode' => 'OperationDenied.EciNotSupportJobType', 'errorMessage' => 'The operation is not allowed because of eci not support job type.', 'description' => 'The operation is not allowed because of eci not support job type.'],
['errorCode' => 'Mismatch.ServerType', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.BackendServer', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
['errorCode' => 'IdempotentParameterMismatch', 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', 'description' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.'],
],
404 => [
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Ecs', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Eci', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.Eni', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.BackendServer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'ReplaceServersInServerGroup',
'description' => 'The **ReplaceServersInServerGroup** operation is asynchronous. After you call this operation, the system returns a request ID, but the backend servers are not yet replaced. The replacement task continues running in the background.'."\n"
."\n"
.'1. You can call [ListServerGroups](~~213627~~) to query the status of the server group:'."\n"
."\n"
.' - If the server group is in the **Configuring** state, it indicates that the server group is being modified.'."\n"
."\n"
.' - If the server group is in the **Available** state, it indicates that the server group is running.'."\n"
."\n"
.'2. You can call [ListServerGroupServers](~~213628~~) to query the status of the backend servers:'."\n"
."\n"
.' - If a backend server is in the **Replacing** state, it indicates that the server group is removing servers and adding new servers.'."\n"
."\n"
.' - If a backend server is in the Available state, it indicates that the server is running.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:ReplaceServersInServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\"\\n}","type":"json"}]',
],
'StartListener' => [
'summary' => 'Enables a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the **DryRunOperation** error code is returned.'."\n"
.'* **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to enable a listener.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'StartListener',
'description' => '**StartListener** 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 [GetListenerAttribute](~~2254865~~) to query the status of the task.'."\n"
."\n"
.'* If a listener is in the **Configuring** state, the listener is being enabled.'."\n"
.'* If a listener is in the **Running** state, the listener is enabled.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StartListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'StartShiftLoadBalancerZones' => [
'summary' => 'Removes an elastic IP address (EIP) or a virtual IP address (VIP) of a zone from a DNS record.',
'methods' => ['post', 'get'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslb9RALVR'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'."\n", 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ALB instance ID.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****'."\n", 'title' => ''],
],
[
'name' => 'ZoneMappings',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The mappings between zones and vSwitches.'."\n"
."\n"
.'> You can remove only one zone in each call.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'VSwitchId' => ['description' => 'The ID of the vSwitch in the zone. By default, each zone uses one vSwitch and one subnet.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'vsw-bp1rmcrwg3erh1fh8****'."\n"],
'ZoneId' => ['description' => 'The zone ID. You can call the [DescribeZones](~~189196~~) operation to query the most recent zone list.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cn-hangzhou-a'],
],
'required' => false,
'description' => '',
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 1,
'minItems' => 1,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Schema of Response',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectBusinessStatus.Eip', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'OperationDenied.ZoneVSwitchChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'."\n"],
['errorCode' => 'OperationDenied.ZoneMappingsNotChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'OperationDenied.ZoneVSwitchNotExist', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The instance does not contain the zone or vSwitch specified in the request.'],
['errorCode' => 'OperationDenied.EniStatusNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'This operation is not supported by the status of the ENI.'],
['errorCode' => 'OperationDenied.OnlyFixedAddressAllocatedModeSupported', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'This operation is not supported by the IP mode of the SLB instance.'],
['errorCode' => 'OperationDenied.ConfigLastActiveZoneNotSupport', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'You are not allowed to remove, disable, or delete the A record of the last active zone.'],
['errorCode' => 'OperationFailed.ShiftLoadBalancerZonesFailed', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'Failed to remove the A record of the IP address in the zone.'],
['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource %s is not enough.', 'description' => 'The specified resource %s is not enough.'],
['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.VSwitch', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'staticInfo' => ['returnType' => 'synchronous'],
'title' => 'StartShiftLoadBalancerZones',
'description' => 'This operation is supported by Application Load Balancer (ALB) instances that use static IP addresses. The zone cannot be removed if the ALB instance has only one available zone.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StartShiftLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5A2CFF0E-5718-45B5-9D4D-70B3FF3898\\"\\n}","type":"json"}]',
],
'StopListener' => [
'summary' => 'Disables a listener.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The ID of the Application Load Balancer (ALB) listener.'."\n", 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******'],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.'."\n", 'type' => 'string', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'* **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
.'* **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to disable a listener.'."\n",
'type' => 'object',
'properties' => [
'JobId' => ['title' => '', 'description' => 'The asynchronous task ID.'."\n", 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72dcd26b-f12d-4c27-b3af-18f6aed5****\\n 365F4154-92F6-4AE4-92F8-7FF34B540710\\n","errorExample":""}]',
'title' => 'StopListener',
'description' => '**StopListener** 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 [GetListenerAttribute](~~2254865~~) operation to query the status of the task:'."\n"
."\n"
.'* If a listener is in the **Configuring** state, the listener is being disabled.'."\n"
.'* If a listener is in the **Stopped** state, the listener is disabled.'."\n",
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StopListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'TagResources' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'create'],
'parameters' => [
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'- **acl**: an access control list (ACL)'."\n"
."\n"
.'- **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
."\n"
.'- **securitypolicy**: a security policy'."\n"
."\n"
.'- **servergroup**: a server group', 'type' => 'string', 'required' => true, 'example' => 'loadbalancer', 'title' => ''],
],
[
'name' => 'ResourceId',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The resource IDs.',
'type' => 'array',
'items' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => 'alb-gws76zi******', 'required' => false, 'title' => ''],
'required' => true,
'example' => 'acl-123',
'maxItems' => 50,
'minItems' => 1,
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The tags.',
'type' => 'array',
'items' => [
'description' => 'The tag.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The tag key. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'env', 'title' => '', 'required' => false],
'Value' => ['description' => 'The tag value. The tag value can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. It cannot contain `http://` or `https://`.', 'type' => 'string', 'example' => 'product', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'example' => 'test',
'maxItems' => 20,
'minItems' => 1,
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to add tags to resources.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'TagResources',
'summary' => 'Adds tags to resources.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:TagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#SecurityPolicyId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF******\\"\\n}","type":"json"}]',
],
'UnTagResources' => [
'summary' => 'Removes tags from resources.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'delete'],
'parameters' => [
[
'name' => 'ResourceType',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'The type of the resource. Valid values:'."\n"
."\n"
.'* **acl**: an access control list (ACL)'."\n"
.'* **loadbalancer**: an Application Load Balancer (ALB) instance'."\n"
.'* **securitypolicy**: a security policy'."\n"
.'* **servergroup**: a server group'."\n", 'type' => 'string', 'required' => true, 'example' => 'loadbalancer'],
],
[
'name' => 'ResourceId',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The IDs of the resources from which you want to remove tags.'."\n",
'type' => 'array',
'items' => ['description' => 'The ID of the resource from which you want to remove tags.'."\n", 'type' => 'string', 'required' => false, 'example' => 'alb-gws76zij******', 'title' => ''],
'required' => true,
'example' => 'acl-123',
'maxItems' => 50,
'minItems' => 1,
],
],
[
'name' => 'Tag',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The tags that you want to remove.'."\n",
'type' => 'array',
'items' => [
'description' => 'The tag that you want to remove.'."\n",
'type' => 'object',
'properties' => [
'Key' => ['title' => '', 'description' => 'The key of the tag that you want to remove. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env'],
'Value' => ['title' => '', 'description' => 'The value of the tag that you want to remove. The tag value can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'product'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => 'test',
'maxItems' => 20,
'minItems' => 1,
],
],
[
'name' => 'TagKey',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The keys of the tags that you want to remove.'."\n",
'type' => 'array',
'items' => ['description' => 'The tag key. The tag key can be up to 128 characters in length, and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''],
'required' => false,
'maxItems' => 20,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'All',
'in' => 'query',
'schema' => ['title' => '', 'description' => 'Specifies whether to remove all tags from the specified resource. Valid values:'."\n"
."\n"
.'* **true**'."\n"
.'* **false**'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to remove tags.'."\n",
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******'],
],
'example' => '',
],
],
],
'errorCodes' => [
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0F******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\n","errorExample":""}]',
'title' => 'UnTagResources',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:UnTagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#SecurityPolicyId}'],
],
],
],
],
],
'UpdateAScripts' => [
'summary' => 'Updates one or more AScripts.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'abilityTreeCode' => '34540',
'abilityTreeNodes' => ['FEATUREslb2Q6O49'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token used to ensure the idempotence of the request.'."\n"
."\n"
.'You can generate a value on your client to ensure it is unique across requests. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the request\'s **RequestId** as the **ClientToken**. Each API request has a different **RequestId**.', 'type' => 'string', 'example' => 'b1f642ac-5558-4a36-b7d9-cf53******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run to check the request without modifying the AScript resources. The system checks the request for potential issues, including missing required parameters, incorrect formatting, and service limits. If the request fails the dry run, an error is returned. If the request passes the dry run, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the request passes the check, the system returns a 2xx HTTP status code and performs the operation.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'AScripts',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The AScripts to update.',
'type' => 'array',
'items' => [
'description' => 'The information about the AScript.',
'type' => 'object',
'properties' => [
'AScriptName' => ['description' => 'The name of the AScript.'."\n"
."\n"
.'The name must be 2 to 128 characters in length. It must start with a letter, a Chinese character, or a digit, and can contain letters, Chinese characters, digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => false, 'example' => 'Group1', 'title' => ''],
'Enabled' => ['description' => 'Specifies whether to enable the AScript. Valid values:'."\n"
."\n"
.'- **true**: The AScript is enabled.'."\n"
."\n"
.'- **false** (default): The AScript is disabled.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
'ScriptContent' => ['description' => 'The content of the AScript.', 'type' => 'string', 'required' => false, 'example' => 'if and(match_re($uri, \'^/1.txt$\'), $arg_type) { rewrite(concat(\'/1.\', $arg_type), \'break\') }', 'title' => ''],
'ExtAttributes' => [
'title' => '',
'description' => 'The extended attributes.',
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'AttributeKey' => ['description' => 'The key of the extended attribute.'."\n"
."\n"
.'The only valid value is **EsDebug**. If a request contains the \\_es\\_dbg parameter and its value matches the secret key configured here, the system enables debug response headers that output the rule execution logs.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'EsDebug'],
'AttributeValue' => ['description' => 'The attribute value. The value must be 1 to 128 characters long and can contain only letters and digits. The value is case-sensitive.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'test123'],
],
'required' => false,
'description' => '',
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'AScriptId' => ['description' => 'The ID of the AScript.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'as-mhqxcanmivn4g5****'],
'ExtAttributeEnabled' => ['description' => 'Specifies whether to enable the extended attributes of the AScript. Valid values:'."\n"
."\n"
.'- **true**: The extended attributes are enabled.'."\n"
."\n"
.'- **false** (default): The extended attributes are disabled.', 'type' => 'boolean', 'required' => false, 'title' => '', 'example' => 'true'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response parameters.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '2e82b5f4-1ba9-4d20-89c8-1082ebaa****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'ACA19FE1-C09E-53C7-8FDA-560******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptsNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptsTotalLinesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.AScriptLinesNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Ascript', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"2e82b5f4-1ba9-4d20-89c8-1082ebaa****\\",\\n \\"RequestId\\": \\"ACA19FE1-C09E-53C7-8FDA-560******\\"\\n}","type":"json"}]',
'title' => 'UpdateAScripts',
'description' => '**UpdateAScripts** is an asynchronous operation. After you send a request, the system returns a request ID and performs the update in the background. You can call the [ListAScripts](~~472574~~) operation to query the update status of the AScripts:'."\n"
."\n"
.'- A status of **Configuring** indicates that the AScript is being updated.'."\n"
."\n"
.'- A status of **Available** indicates that the AScript is updated.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
],
'UpdateAclAttribute' => [
'summary' => 'Updates the attributes of an ACL, such as its name.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['description' => 'A client-generated token that ensures request idempotence. The token must be unique for each request. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the request\'s `RequestId` as the `ClientToken`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'AclId',
'in' => 'query',
'schema' => ['title' => 'AclId', 'description' => 'The ID of the ACL.', 'type' => 'string', 'required' => true, 'example' => 'acl-hp34s2h0xx1ht4nwo****'],
],
[
'name' => 'AclName',
'in' => 'query',
'schema' => ['description' => 'The name of the ACL. The name must be 2 to 128 characters long. It must start with a letter, a Chinese character, or a digit, and can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'test-acl'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run on the request. Valid values:'."\n"
."\n"
.'- **true**: performs a check on the request without modifying the resource. The system checks for required parameters, valid request formats, and service limits. If the check fails, an error is returned. If the check succeeds, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the request passes the check, the system performs the operation and returns an HTTP `2xx` status code.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The data returned.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876F******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'Conflict.Acl', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => 'There is already %s having the same configuration with %s.'],
['errorCode' => 'IncorrectStatus.Acl', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Acl', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876F******\\"\\n}","type":"json"}]',
'title' => 'UpdateAclAttribute',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateAclAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
],
],
'UpdateHealthCheckTemplateAttribute' => [
'summary' => 'This operation updates the attributes of a health check template, such as its name and health check protocol.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
[
'PrivateKey' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'allowEmptyValue' => false,
'schema' => ['description' => 'A client token used to ensure the idempotence of the request.'."\n"
."\n"
.'You must generate a unique value on your client for each request. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the `RequestId` of the request as the `ClientToken`. The `RequestId` of each request is unique.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******'],
],
[
'name' => 'HealthCheckTemplateName',
'in' => 'query',
'schema' => ['description' => 'The name of the health check template.'."\n"
."\n"
.'The name must be 2 to 128 characters long, start with a letter, a Chinese character, or a digit, and can contain letters, Chinese characters, digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HealthCheckTemplate1'],
],
[
'name' => 'HealthCheckConnectPort',
'in' => 'query',
'schema' => ['description' => 'The port used for health checks. Valid values: **0** to **65535**.'."\n"
.'The default value is **0**, which means the health check uses the backend server\'s port.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '80'],
],
[
'name' => 'HealthCheckHost',
'in' => 'query',
'schema' => ['description' => 'The domain name used for health checks. Valid values:'."\n"
."\n"
.'- **$SERVER\\_IP** (default): The private IP of a backend server. If you specify this value or leave the parameter empty, the load balancing service uses the private IP of the backend server for health checks.'."\n"
."\n"
.'- **domain**: A domain name that is 1 to 80 characters long and can contain letters, digits, periods (.), and hyphens (-).'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '$SERVER_IP'],
],
[
'name' => 'HealthCheckCodes',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The list of status codes that indicate a healthy state.',
'type' => 'array',
'items' => ['description' => 'The HTTP status codes that indicate a healthy backend server.'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, specify one or more of the following values: **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple values with commas.'."\n"
."\n"
.'- If **HealthCheckProtocol** is set to **gRPC**, the valid status codes are in the range of **0** to **99**. The default value is **0**. You can specify up to 20 ranges, separated by commas.'."\n"
."\n"
.'> This parameter takes effect only when the **HealthCheckProtocol** parameter is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'required' => false, 'example' => 'http_2xx', 'title' => ''],
'required' => false,
'example' => '5',
],
],
[
'name' => 'HealthCheckInterval',
'in' => 'query',
'schema' => ['description' => 'The interval between health checks, in seconds. Valid values: **1** to **50**. Default value: **2**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '5'],
],
[
'name' => 'HealthCheckTimeout',
'in' => 'query',
'schema' => ['description' => 'The timeout period, in seconds, for a health check response. A health check fails if a backend server does not respond within this period.'."\n"
."\n"
.'Valid values: **1** to **300**. Default value: **5**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '300', 'minimum' => '1', 'title' => '', 'required' => false, 'example' => '3'],
],
[
'name' => 'HealthCheckPath',
'in' => 'query',
'schema' => ['title' => 'uri', 'description' => 'The URL used for health checks.'."\n"
."\n"
.'The URL must be 1 to 80 characters long. It can contain letters, digits, hyphens (-), forward slashes (/), periods (.), percent signs (%), question marks (?), number signs (#), ampersands (&), and the following extended characters: `_;~!()*[]@$^:\',+`.'."\n"
."\n"
.'The URL must start with a forward slash (/).'."\n"
."\n"
.'> This parameter takes effect only when the **HealthCheckProtocol** parameter is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'required' => false, 'example' => '/test/index.html'],
],
[
'name' => 'HealthCheckMethod',
'in' => 'query',
'schema' => ['description' => 'The method used for health checks. Valid values:'."\n"
."\n"
.'- **HEAD** (default): The default method for health checks on HTTP and HTTPS listeners.'."\n"
."\n"
.'- **GET**: If the response body is larger than 8 KB, it is truncated. This does not affect the health check result.'."\n"
."\n"
.'- **POST**: The default method for health checks on gRPC listeners.'."\n"
."\n"
.'> This parameter takes effect only when the **HealthCheckProtocol** parameter is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HEAD'],
],
[
'name' => 'HealthCheckProtocol',
'in' => 'query',
'schema' => ['description' => 'The protocol used for health checks. Valid values:'."\n"
."\n"
.'- **HTTP** (default): Checks the health of a backend server by sending an HTTP HEAD or GET request.'."\n"
."\n"
.'- **HTTPS**: Checks the health of a backend server by sending an HTTPS HEAD or GET request. HTTPS is more secure than HTTP because it encrypts data.'."\n"
."\n"
.'- **TCP**: Checks if a backend server port is reachable by sending a TCP SYN packet.'."\n"
."\n"
.'- **gRPC**: Checks the health of a backend server by sending a POST or GET request.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP'],
],
[
'name' => 'HealthCheckHttpVersion',
'in' => 'query',
'schema' => ['description' => 'The HTTP version used for health checks.'."\n"
."\n"
.'Valid values: **HTTP1.0** and **HTTP1.1**.'."\n"
."\n"
.'Default value: **HTTP1.1**.'."\n"
."\n"
.'> This parameter takes effect only when the `HealthCheckProtocol` parameter is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP1.0'],
],
[
'name' => 'HealthyThreshold',
'in' => 'query',
'schema' => ['description' => 'The number of consecutive successful health checks required to change a backend server\'s status from **unhealthy** to **healthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '4'],
],
[
'name' => 'UnhealthyThreshold',
'in' => 'query',
'schema' => ['description' => 'The number of consecutive failed health checks required to change a backend server\'s status from **healthy** to **unhealthy**.'."\n"
."\n"
.'Valid values: **2** to **10**.'."\n"
."\n"
.'Default value: **3**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '4'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run to check the request. The system checks for required parameters, request syntax, and business constraints without performing the operation. If the request is invalid, an error is returned. If the request is valid, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): Sends a normal request. If the request is valid, a **2xx HTTP** status code is returned and the operation is performed.', 'type' => 'boolean', 'required' => false, 'example' => 'true'],
],
[
'name' => 'HealthCheckTemplateId',
'in' => 'query',
'schema' => ['description' => 'The health check template ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'hct-bp1qjwo61******'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response to the update request.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.HealthCheckTemplate', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
],
403 => [
['errorCode' => 'Forbidden.HealthCheckTemplate', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.HealthCheckTemplate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","type":"json"}]',
'title' => 'UpdateHealthCheckTemplateAttribute',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateHealthCheckTemplateAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthchecktemplateId}'],
],
],
],
],
],
'UpdateListenerAttribute' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '187',
'abilityTreeNodes' => ['FEATUREslbM7ALO6', 'FEATUREslbK3ZR0L', 'FEATUREslbN5IE4S'],
],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) listener.', 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'The token must be unique among requests and can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each API request may be different.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): performs a normal request. If the request passes the check, the system returns a 2xx HTTP status code and performs the operation.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'ListenerDescription',
'in' => 'query',
'schema' => ['description' => 'The name of the listener.'."\n"
."\n"
.'The name must be 2 to 256 characters in length and can contain letters, digits, Chinese characters, commas (,), periods (.), semicolons (;), forward slashes (/), at signs (@), underscores (\\_), and hyphens (-).', 'type' => 'string', 'example' => 'HTTP_80', 'title' => '', 'required' => false],
],
[
'name' => 'RequestTimeout',
'in' => 'query',
'schema' => ['description' => 'The request timeout period. Unit: seconds. Valid values: 1 to **180**.'."\n"
."\n"
.'If no response is received from the backend server during the timeout period, ALB sends an `HTTP 504` error code to the client.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '1', 'example' => '3', 'title' => '', 'required' => false],
],
[
'name' => 'IdleTimeout',
'in' => 'query',
'schema' => ['description' => 'The idle timeout period. Unit: seconds. Valid values: 1 to **60**.'."\n"
."\n"
.'If no request is received during the timeout period, ALB closes the current connection. When a new request is received, ALB establishes a new connection.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '1', 'example' => '15', 'title' => '', 'required' => false],
],
[
'name' => 'GzipEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable Gzip compression to compress specific types of files. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'Http2Enabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable HTTP/2. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'SecurityPolicyId',
'in' => 'query',
'schema' => ['description' => 'The security policy. System security policies and custom security policies are supported.'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'example' => 'tls_cipher_policy_1_0', 'title' => '', 'required' => false],
],
[
'name' => 'CaEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable mutual authentication. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'XForwardedForConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The configuration of the \\`X-Forwarded-For\\` header.',
'type' => 'object',
'properties' => [
'XForwardedForClientCertClientVerifyAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertClientVerifyEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_client-verify-alias_123456'],
'XForwardedForClientCertClientVerifyEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Clientcert-Clientverify` header to retrieve the verification result of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientCertFingerprintAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertFingerprintEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_finger-print-alias_123456'],
'XForwardedForClientCertFingerprintEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Clientcert-Fingerprint` header to retrieve the fingerprint of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientCertIssuerDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertIssuerDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_issue-dn-alias_123456'],
'XForwardedForClientCertIssuerDNEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Clientcert-Issuerdn` header to retrieve information about the issuer of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientCertSubjectDNAlias' => ['description' => 'The name of the custom header. This parameter takes effect only when **XForwardedForClientCertSubjectDNEnabled** is set to **true**.'."\n"
."\n"
.'The name must be 1 to 40 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test_subject-dn-alias_123456'],
'XForwardedForClientCertSubjectDNEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Clientcert-Subjectdn` header to retrieve information about the owner of the client certificate. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientSrcPortEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Client-Srcport` header to retrieve the client port. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-For` header to retrieve the client\'s real IP address. Valid values:'."\n"
."\n"
.'- **true** (default)'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> 1. If you set this parameter to **true**, the default value of **XForwardedForProcessingMode** is **append**. You can change the value to **remove**.'."\n"
.'>'."\n"
.'> 2. If you set this parameter to **false**, the `X-Forwarded-For` header is preserved before the request is sent to the backend service. No extra processing is performed.'."\n"
.'>'."\n"
.'> 3. This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'XForwardedForProcessingMode' => ['description' => 'The processing mode of the `X-Forwarded-For` header. This parameter takes effect only when **XForwardedForEnabled** is set to **true**. Valid values:'."\n"
."\n"
.'- **append** (default): appends an IP address.'."\n"
."\n"
.'- **remove**: deletes an IP address.'."\n"
."\n"
.'> 1. If you set this parameter to **append**, the IP address of the last hop is added to the `X-Forwarded-For` header before the request is sent to the backend service.'."\n"
.'>'."\n"
.'> 2. If you set this parameter to **remove**, the `X-Forwarded-For` header is deleted before the request is sent to the backend service, regardless of whether the request contains the `X-Forwarded-For` header.'."\n"
.'>'."\n"
.'> 3. This parameter is available for HTTP and HTTPS listeners.', 'type' => 'string', 'required' => false, 'example' => 'append', 'title' => ''],
'XForwardedForProtoEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Proto` header to retrieve the listener protocol of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForSLBIdEnabled' => ['description' => 'Specifies whether to use the `SLB-ID` header to retrieve the ID of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForSLBPortEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Port` header to retrieve the listener port of the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'XForwardedForClientSourceIpsEnabled' => ['description' => 'Specifies whether to allow ALB to find the client\'s real IP address from the \\`X-Forwarded-For\\` header. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available for HTTP and HTTPS listeners.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
'XForwardedForClientSourceIpsTrusted' => ['description' => 'The trusted proxy IP address.'."\n"
."\n"
.'ALB traverses the `X-Forwarded-For` header from the end to the beginning. ALB selects the first IP address that is not in the trusted IP address list as the client\'s real IP address. This IP address is used for throttling.', 'type' => 'string', 'required' => false, 'example' => '10.1.1.0/24', 'title' => ''],
'XForwardedForHostEnabled' => ['description' => 'Specifies whether to use the `X-Forwarded-Host` header to retrieve the domain name that the client used to access the ALB instance. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)'."\n"
."\n"
.'> This parameter is available for HTTP, HTTPS, and QUIC listeners.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'QuicConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The QUIC listener association configuration.',
'type' => 'object',
'properties' => [
'QuicListenerId' => ['description' => 'The ID of the QUIC listener to associate. This parameter is required if **QuicUpgradeEnabled** is set to **true**. This parameter is available only for HTTPS listeners.'."\n"
."\n"
.'> The original listener and the associated QUIC listener must belong to the same ALB instance. The QUIC listener must not be associated with another listener.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'lsn-333'],
'QuicUpgradeEnabled' => ['description' => 'Specifies whether to enable QUIC upgrade. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false**'."\n"
."\n"
.'> This parameter is available only for HTTPS listeners.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'Certificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The certificates.',
'type' => 'array',
'items' => [
'description' => 'The certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the default certificate. You can add only one default server certificate.'."\n"
."\n"
.'> - This parameter is required if the listener protocol is **HTTPS** or **QUIC**.'."\n"
.'>'."\n"
.'> - To add more server certificates, call the [](t2324484.xdita#)operation after you create the listener.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123157******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 2,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'CaCertificates',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The CA certificates. You can specify only one CA certificate.',
'type' => 'array',
'items' => [
'description' => 'The CA certificate.',
'type' => 'object',
'properties' => [
'CertificateId' => ['description' => 'The ID of the CA certificate.'."\n"
."\n"
.'> This parameter is required if **CaEnabled** is set to **true**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '123359******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 1,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'DefaultActions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The default actions for the forwarding rule.',
'type' => 'array',
'items' => [
'description' => 'The default action.',
'type' => 'object',
'properties' => [
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the forwarding action. This parameter is required and takes effect if **Type** is set to **ForwardGroup**. You can specify a maximum of 20 forwarding actions.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The server group to which requests are forwarded.',
'type' => 'array',
'items' => [
'description' => 'The server group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the server group to which requests are forwarded.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'sgp-i5qt20******'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The action type. You can specify only one action type.'."\n"
."\n"
.'Set the value to **ForwardGroup**. This forwards requests to multiple server groups.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ForwardGroup'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The response.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.CrossLoadBalancerQUICListener', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'ResourceAlreadyAssociated.Listener', 'errorMessage' => 'The specified resource %s is already associated.', 'description' => 'The specified resource %s is already associated.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceAlreadyAssociated.Certificate', 'errorMessage' => 'The specified resource %s is already associated.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.SecurityPolicyAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => 'The quota of %s is exceeded for resource %s. Usage: %s/%s.'],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'OperationDenied.ServerGroupProtocolNotSupport', 'errorMessage' => 'The operation is not allowed because of ServerGroupProtocolNotSupport.', 'description' => 'The operation is not allowed because the server group protocol is not supported.'],
['errorCode' => 'UnsupportedFeature.FullTraceHttps', 'errorMessage' => 'The feature of FullTraceHttps is not supported for current instance.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'InvalidParameter', 'errorMessage' => 'Invalid parameter, please check the parameter input.', 'description' => 'Invalid parameter, please check the parameter input.'],
['errorCode' => 'OperationDenied.CACertificateCorrupted', 'errorMessage' => 'The CA certificate is corrupted.', 'description' => 'CA certificate is corrupted'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.Certificate', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'UpdateListenerAttribute',
'summary' => 'Updates the attributes of a listener, such as the listener name and default actions.',
'description' => '**UpdateListenerAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. The listener configuration is not updated immediately. You can call the [](t2324519.xdita#)operation to query the update status of the listener:'."\n"
."\n"
.'- If a listener is in the **Configuring** state, it is being updated.'."\n"
."\n"
.'- If a listener is in the **Running** state, it has been updated.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateListenerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF******\\"\\n}","type":"json"}]',
],
'UpdateListenerLogConfig' => [
'summary' => 'Updates the log configuration of a listener, such as the access log configuration.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ListenerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) listener.', 'type' => 'string', 'required' => true, 'example' => 'lsn-o4u54y73wq7b******', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false**: (default): performs a dry run and performs the actual request. If the request passes the dry run, a **2xx HTTP** status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'AccessLogRecordCustomizedHeadersEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to record custom headers in the access log. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)'."\n"
."\n"
.'> You can set this parameter to **true** only if the access log feature is enabled by specifying **AccessLogEnabled**.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
],
[
'name' => 'AccessLogTracingConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The configuration information about the Xtrace feature.',
'type' => 'object',
'properties' => [
'TracingEnabled' => ['description' => 'Specifies whether to enable the Xtrace feature. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)'."\n"
."\n"
.'> You can set this parameter to **true** only if the access log feature is enabled by specifying **AccessLogEnabled**.', 'type' => 'boolean', 'required' => true, 'title' => '', 'example' => 'true'],
'TracingSample' => ['description' => 'The sampling rate of the Xtrace feature.'."\n"
."\n"
.'Valid values: **1 to 10000**.'."\n"
."\n"
.'> This parameter takes effect only if you set **TracingEnabled** to **true**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '100'],
'TracingType' => ['description' => 'The type of Xtrace. Set the value to **Zipkin**.'."\n"
."\n"
.'> This parameter takes effect only if you set **TracingEnabled** to **true**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Zipkin'],
],
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The operation to update the configuration of a listener.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.AccessLogDisabled', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified resource of %s is being configured, please try again later.', 'description' => 'The specified resource of %s is being configured, please try again later.'],
],
404 => [
['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'UpdateListenerLogConfig',
'description' => '**UpdateListenerLogConfig** 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 [GetListenerAttribute](~~2254865~~) to query the status of the task:'."\n"
."\n"
.'- If a listener is in the **Configuring** state, the log configuration of the listener is being modified.'."\n"
."\n"
.'- If a listener is in the **Running** state, the log configuration of the listener is modified.'."\n"
."\n"
.'> You can update the log configuration of a listener only after you enable the access log feature.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateListenerLogConfig',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3******\\"\\n}","type":"json"}]',
],
'UpdateLoadBalancerAddressTypeConfig' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '86743',
'abilityTreeNodes' => ['FEATUREslbSUND48', 'FEATUREslbXJYU12'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'You can generate a value from your client to make sure that the value is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request is unique.', 'type' => 'string', 'example' => '123e4567-e89b-12d3-a456-42665544****', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends the request. If the request passes the check, the system returns a 2xx HTTP status code and performs the operation.', 'type' => 'string', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the Application Load Balancer (ALB) instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-bp1o94dp5i6ea****', 'title' => ''],
],
[
'name' => 'AddressType',
'in' => 'query',
'schema' => ['description' => 'The target network type. Valid values:'."\n"
."\n"
.'- **Internet**: The load balancer is assigned a public IP address and can be accessed over the Internet. Its DNS domain name is resolved to the public IP address.'."\n"
."\n"
.'- **Intranet**: The load balancer is assigned a private IP address and can be accessed only from the VPC where it is deployed. Its DNS domain name is resolved to the private IP address.', 'type' => 'string', 'required' => true, 'example' => 'Internet', 'title' => ''],
],
[
'name' => 'ZoneMappings',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The mappings between availability zones and vSwitches. You can specify up to 10 mappings. If the region supports two or more availability zones, you must specify mappings for at least two.',
'type' => 'array',
'items' => [
'description' => 'The mappings between availability zones and vSwitches.',
'type' => 'object',
'properties' => [
'VSwitchId' => ['description' => 'The ID of the vSwitch in the specified availability zone. You can specify only one vSwitch for each availability zone.', 'type' => 'string', 'required' => false, 'example' => 'vsw-bp10ttov87felojcn****', 'title' => ''],
'ZoneId' => ['description' => 'The ID of the availability zone of the ALB instance.'."\n"
."\n"
.'You can call the [DescribeZones](~~189196~~) operation to query information about availability zones.', 'type' => 'string', 'required' => false, 'example' => 'cn-hangzhou-a', 'title' => ''],
'AllocationId' => ['description' => 'The ID of the elastic IP address (EIP).'."\n"
."\n"
.'> This parameter is required when you change the network type from Intranet to Internet.', 'type' => 'string', 'example' => 'eip-bp1aedxso6u80u0qf****', 'title' => '', 'required' => false],
'EipType' => ['description' => 'The type of the EIP. Valid values:'."\n"
."\n"
.'- **Common** (default): a regular EIP.'."\n"
."\n"
.'- Anycast: Anycast EIP.'."\n"
."\n"
.'> For the regions where Application Load Balancer (ALB) supports binding Anycast Elastic IP addresses (EIPs), see [Usage limits](~~460727~~).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Common'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
[
'name' => 'RetainResourceType',
'in' => 'query',
'style' => 'flat',
'schema' => [
'type' => 'array',
'items' => ['type' => 'string', 'example' => 'eip', 'description' => '', 'title' => ''],
'description' => '',
'title' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.OnlyPostPaidEipSupported', 'errorMessage' => 'The operation is not allowed because of OnlyPostPaidEipSupported.', 'description' => ''],
['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.Eip', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceNotFound.Eip', 'errorMessage' => 'The specified resource ResourceNotFound.Eip is not found.', 'description' => ''],
['errorCode' => 'IncorrectStatus.CommonBandwidthPackage', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.CommonBandwidthPackage', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.AddressTypeNotChanged', 'errorMessage' => 'The operation is not allowed because of AddressTypeNotChanged.', 'description' => ''],
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.CommonBandwidthPackage', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'title' => 'UpdateLoadBalancerAddressTypeConfig',
'summary' => 'Changing the network type of an application load balancer instance.',
'description' => 'Prerequisites'."\n"
."\n"
.'- You have created an Application Load Balancer (ALB) instance. For more information, see [CreateLoadBalancer](~~214358~~).'."\n"
."\n"
.'- To change the network type of an ALB instance from Intranet to Internet, you must create an elastic IP address. For more information, see [AllocateEipAddress](~~120192~~).'."\n"
."\n"
.'Usage notes'."\n"
."\n"
.'The **UpdateLoadBalancerAddressTypeConfig** operation is an asynchronous task. After you send a request, the system returns a request ID and runs the task in the background. The network type of the ALB instance is not immediately modified. You can call the [GetLoadBalancerAttribute](~~214362~~) operation to query the status of the ALB instance:'."\n"
."\n"
.'- If the ALB instance is in the **Configuring** state, its network type is being modified.'."\n"
."\n"
.'- If the ALB instance is in the **Active** state, its network type has been modified.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerAddressTypeConfig',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","type":"json"}]',
],
'UpdateLoadBalancerAttribute' => [
'summary' => 'Updates the properties of an Application Load Balancer instance, such as its name and modification protection.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'A client-generated token that is used to ensure the idempotence of the request. Make sure that the token is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'Generate a value from your client and make sure that the value is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the **RequestId** as the **ClientToken**. The **RequestId** of each API request is unique.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run. The system checks for required parameters, the request format, and business limits. If the request fails the check, an error message is returned. If the request passes the check, the `DryRunOperation` error code is returned. No properties of the Application Load Balancer instance are modified.'."\n"
."\n"
.'- **false** (default): Sends a normal request. After the request passes the check, a `2xx` status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The Application Load Balancer instance ID.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hgn68jk****', 'title' => ''],
],
[
'name' => 'LoadBalancerName',
'in' => 'query',
'schema' => ['description' => 'The name of the Application Load Balancer instance must be 2 to 128 characters in length. It must start with a letter, a Chinese character, or a number. The name can contain numbers, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'alb-instance-test'],
],
[
'name' => 'ModificationProtectionConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The modification protection settings.',
'type' => 'object',
'properties' => [
'Reason' => ['description' => 'The reason for enabling modification protection.'."\n"
."\n"
.'The reason must be 2 to 128 characters long. It must start with a letter and can contain letters, digits, periods (.), underscores (\\_), and hyphens (-).'."\n"
."\n"
.'This parameter is valid only when **Status** is set to **ConsoleProtection**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Managed Instance'],
'Status' => ['description' => 'The modification protection status of the Application Load Balancer instance. Valid values:'."\n"
."\n"
.'- **NonProtection**: Disables modification protection. If you specify a value for **Reason**, the value is cleared.'."\n"
."\n"
.'- **ConsoleProtection**: Enables modification protection in the console. If you specify a value for **Reason**, the value takes effect.'."\n"
."\n"
.'> If you set the value to **ConsoleProtection**, you cannot modify the instance configuration in the Application Load Balancer console. However, you can still modify the instance configuration by calling API operations.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ConsoleProtection'],
],
'required' => false,
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'Updates the attributes of the load balancer instance.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the sync task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
],
403 => [
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","type":"json"}]',
'title' => 'UpdateLoadBalancerAttribute',
'description' => 'The **UpdateLoadBalancerAttribute** operation is asynchronous. After you send a request, the system returns a request ID and runs the task in the background. The properties of the Application Load Balancer instance are not modified until the task is complete. You can call [GetLoadBalancerAttribute](~~214362~~) to query the status of the update.'."\n"
."\n"
.'- If the Application Load Balancer instance is in the **Configuring** state, the instance is being updated.'."\n"
."\n"
.'- If the Application Load Balancer instance is in the **Active** state, the update is complete.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
],
'UpdateLoadBalancerEdition' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> 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.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n"
."\n"
.'- **true**: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): performs a dry run and performs the actual request. If the request passes the dry run, a `2xx HTTP` status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ALB instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-bp1b6c719dfa08ex****', 'title' => ''],
],
[
'name' => 'LoadBalancerEdition',
'in' => 'query',
'schema' => ['description' => 'The edition of the ALB instance. Different editions have different limits and support different billing methods.'."\n"
."\n"
.'- **Basic**: basic'."\n"
."\n"
.'- **Standard**: standard'."\n"
."\n"
.'- **StandardWithWaf**: WAF-enabled', 'type' => 'string', 'required' => true, 'example' => 'Standard', 'title' => ''],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The new edition of the ALB instance.',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'OperationDenied.Downgrade', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'."\n"],
['errorCode' => 'OperationDenied.EditionNotChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'title' => 'UpdateLoadBalancerEdition',
'summary' => 'Changes the edition of an Application Load Balancer (ALB) instance.',
'description' => '- You can only upgrade a basic ALB instance to a standard ALB instance or a WAF-enabled ALB instance. You cannot downgrade a standard ALB instance or a WAF-enabled ALB instance to a basic ALB instance. For more information, see [Upgrade an ALB instance](~~214654~~).'."\n"
."\n"
.'- **UpdateLoadBalancerEdition** 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 [GetLoadBalancerAttribute](~~214362~~) operation to query the status of an ALB instance.'."\n"
."\n"
.' - If the ALB instance is in the **Configuring** state, the edition of the ALB instance is being modified.'."\n"
."\n"
.' - If the ALB instance is in the **Active** state, the edition of the ALB instance is modified.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerEdition',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0FDE0E9A3\\"\\n}","type":"json"}]',
],
'UpdateLoadBalancerZones' => [
'summary' => 'Modifies the availability zones of an ALB instance.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '198',
'abilityTreeNodes' => ['FEATUREslb9RALVR', 'FEATUREslbFTB0NK'],
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token used to ensure the idempotence of the request.'."\n"
."\n"
.'Generate a unique token from your client for each request. The `ClientToken` parameter can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the request\'s **RequestId** as the **ClientToken**. The **RequestId** differs for each API request.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run to check for potential issues, including missing parameters, incorrect formatting, and service limits. If the request fails the dry run, the system returns an error message. If the request passes the dry run, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): sends the request. If the request passes the check, the system returns an HTTP `2xx` status code and performs the operation.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'LoadBalancerId',
'in' => 'query',
'schema' => ['description' => 'The ID of the ALB instance.', 'type' => 'string', 'required' => true, 'example' => 'alb-o9ulmq5hfn68jk****', 'title' => ''],
],
[
'name' => 'ZoneMappings',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The mappings between availability zones and VSwitches. You can specify up to 10 availability zones. If the current region supports two or more availability zones, you must specify at least two. Specifying this parameter overwrites the existing availability zone configuration.',
'type' => 'array',
'items' => [
'description' => 'The mapping between an availability zone and a VSwitch.',
'type' => 'object',
'properties' => [
'VSwitchId' => ['description' => 'The ID of the VSwitch in the availability zone. Each availability zone uses one VSwitch and one subnet by default.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'vsw-bp1rmcrwg3srh1fh8****'],
'ZoneId' => ['description' => 'The ID of the availability zone. You can call the [DescribeZones](~~189196~~) operation to query the IDs of available zones.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'cn-hangzhou-a'],
'EipType' => ['description' => 'The type of the EIP. Valid values:'."\n"
."\n"
.'- **Common**: an EIP.'."\n"
."\n"
.'- **Anycast**: an Anycast EIP.'."\n"
."\n"
.'> For a list of regions that support binding an Anycast EIP to an ALB instance, see [Usage limits](~~460727~~).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Common'],
'IntranetAddress' => ['description' => 'The private IPv4 address.', 'type' => 'string', 'required' => false, 'example' => '192.168.10.1', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 10,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RetainResourceType',
'in' => 'query',
'style' => 'flat',
'schema' => [
'type' => 'array',
'items' => ['type' => 'string', 'example' => 'eip', 'title' => '', 'description' => ''],
'title' => '',
'description' => '',
'example' => '',
],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The response object.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The job ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'IncorrectBusinessStatus.Eip', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => 'The business status of %s [%s] is incorrect.'],
['errorCode' => 'OperationDenied.ZoneVSwitchChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'."\n"],
['errorCode' => 'OperationDenied.ZoneMappingsNotChanged', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource %s is not enough.', 'description' => 'The specified resource %s is not enough.'],
['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
],
404 => [
['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.VSwitch', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'eventInfo' => [
'enable' => false,
'eventNames' => [],
],
'title' => 'UpdateLoadBalancerZones',
'description' => '**UpdateLoadBalancerZones** is an asynchronous API. After you send a request, the system returns a request ID but does not immediately modify the availability zones. The modification runs in the background. Call the [GetLoadBalancerAttribute](~~214362~~) operation to query the modification status:'."\n"
."\n"
.'- If the ALB instance is in the **Configuring** state, the modification is in progress.'."\n"
."\n"
.'- If the ALB instance is in the **Active** state, the modification is complete.'."\n"
."\n"
.'> Calling this operation may incur fees.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","type":"json"}]',
],
'UpdateRuleAttribute' => [
'summary' => 'Updates a forwarding rule\'s properties, such as its conditions, actions, and name.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '177',
'abilityTreeNodes' => ['FEATUREslbM7ALO6'],
],
'parameters' => [
[
'name' => 'RuleId',
'in' => 'query',
'schema' => ['description' => 'The forwarding rule ID.', 'type' => 'string', 'required' => true, 'example' => 'rule-4dp5i6ea****', 'title' => ''],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'You can generate a token from your client. Make sure that the token is unique across different requests. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request is unique.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3FF3898', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run but does not update the attributes of the forwarding rule. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): Sends a standard request. If the request passes the check, a `2xx` HTTP status code is returned and the operation is performed.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
[
'name' => 'RuleConditions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The forwarding conditions.',
'type' => 'array',
'items' => [
'description' => 'The forwarding conditions.',
'type' => 'object',
'properties' => [
'CookieConfig' => [
'title' => '',
'description' => 'The cookie configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The cookies.',
'type' => 'array',
'items' => [
'description' => 'The cookie.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The cookie key. The key must be 1 to 100 characters in length and can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). The key cannot contain spaces or the following special characters: `#[]{}\\|<>&";`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Value' => ['description' => 'The cookie value. The value must be 1 to 128 characters in length and can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). The value cannot contain spaces or the following special characters: `#[]{}\\|<>&`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HeaderConfig' => [
'title' => '',
'description' => 'The HTTP header configuration.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the HTTP header. The key must be 1 to 40 characters in length and can contain letters, digits, hyphens (-), and underscores (\\_). The key cannot be `Cookie` or `Host`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Port'],
'Values' => [
'title' => '',
'description' => 'The value of the HTTP header.',
'type' => 'array',
'items' => ['description' => 'The value of the HTTP header. Within the same forwarding condition, the values for a given header key must be unique. The value must meet the following requirements:'."\n"
."\n"
.'- The value must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters with ASCII values from 32 to 126, asterisks (\\*), and question marks (?). It cannot contain double quotation marks (`"`).'."\n"
."\n"
.'- The value cannot start or end with a space or end with a backslash (`\\`).', 'type' => 'string', 'required' => false, 'example' => '5006', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HostConfig' => [
'title' => '',
'description' => 'The host configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of hostnames.',
'type' => 'array',
'items' => ['description' => 'The hostname. The hostname must meet the following requirements:'."\n"
."\n"
.'- The hostname must be 3 to 128 characters in length, and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.'- The hostname must contain at least one period (.). The period cannot be the first or last character.'."\n"
."\n"
.'- The rightmost domain label can contain only letters, asterisks (\\*), and question marks (?), but not digits or hyphens (-).'."\n"
."\n"
.'- A hyphen (-) cannot be the first or last character of a domain label. Asterisks (\\*) and question marks (?) can be used anywhere in a domain label.', 'type' => 'string', 'required' => false, 'example' => 'www.example.com', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'MethodConfig' => [
'title' => '',
'description' => 'The request method configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of request methods.',
'type' => 'array',
'items' => ['description' => 'The request method.'."\n"
."\n"
.'Valid values: **HEAD**, **GET**, **POST**, **OPTIONS**, **PUT**, **PATCH**, and **DELETE**.', 'type' => 'string', 'required' => false, 'example' => 'PUT', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'PathConfig' => [
'title' => '',
'description' => 'The path configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of paths.',
'type' => 'array',
'items' => ['description' => 'The path. The path must meet the following requirements:'."\n"
."\n"
.'- The path must be 1 to 128 characters in length.'."\n"
."\n"
.'- It must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:`. It cannot contain the following special characters: `“%#;!()[]^,”\\"`. Asterisks (\\*) and question marks (?) can be used as wildcards.', 'type' => 'string', 'required' => false, 'example' => '/test', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'QueryStringConfig' => [
'title' => '',
'description' => 'The query string configuration.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of query strings. You can add up to 20 query strings.',
'type' => 'array',
'items' => [
'description' => 'The query string.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the query string. The key must be 1 to 100 characters in length and can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). The key cannot contain spaces or the following special characters: `#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Value' => ['description' => 'The value of the query string. The value must be 1 to 128 characters in length and can contain lowercase letters, printable characters, asterisks (\\*), and question marks (?). The value cannot contain spaces or the following special characters: `#[]{}\\|<>&"`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The type of the forwarding condition. You can specify up to nine types of forwarding conditions. Valid values:'."\n"
."\n"
.'- **Host**: Matches requests based on the host.'."\n"
."\n"
.'- **Path**: Matches requests based on the path.'."\n"
."\n"
.'- **Header**: Matches requests based on the HTTP header.'."\n"
."\n"
.'- **QueryString**: Matches requests based on the query string.'."\n"
."\n"
.'- **Method**: Matches requests based on the request method.'."\n"
."\n"
.'- **Cookie**: Matches requests based on the cookie.'."\n"
."\n"
.'- **SourceIp**: Matches requests based on the source IP address.'."\n"
."\n"
.'- **ResponseHeader**: Matches requests based on the response HTTP header.'."\n"
."\n"
.'- **ResponseStatusCode**: Matches requests based on the response status code.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Host'],
'ResponseStatusCodeConfig' => [
'title' => '',
'description' => 'The configuration of the response status code.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of response status codes.',
'type' => 'array',
'items' => ['description' => 'The response status code.', 'type' => 'string', 'required' => false, 'example' => '301', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the response header condition.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header.'."\n"
."\n"
.'- The key must be 1 to 40 characters in length.'."\n"
."\n"
.'- It can contain letters, digits, hyphens (-), and underscores (\\_).'."\n"
."\n"
.'- The key cannot be `Cookie` or `Host`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Values' => [
'title' => '',
'description' => 'The value of the header.',
'type' => 'array',
'items' => ['description' => 'The value of the header.'."\n"
."\n"
.'- The value must be 1 to 128 characters in length.'."\n"
."\n"
.'- It can contain printable characters whose ASCII values are in the range of `32-126`, lowercase letters, asterisks (\\*), and question marks (?). It cannot contain double quotation marks (`"`).'."\n"
."\n"
.'- The value cannot start or end with a space or end with a backslash (`\\`).', 'type' => 'string', 'required' => false, 'example' => '50006', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'SourceIpConfig' => [
'title' => '',
'description' => 'The configuration of the source IP condition. You can specify up to five source IP addresses or CIDR blocks.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'One or more IP addresses or CIDR blocks.',
'type' => 'array',
'items' => ['description' => 'An IP address or a CIDR block.', 'type' => 'string', 'required' => false, 'example' => '192.168.0.0/32', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RuleActions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The forwarding actions.',
'type' => 'array',
'items' => [
'description' => 'The forwarding actions.',
'type' => 'object',
'properties' => [
'FixedResponseConfig' => [
'title' => '',
'description' => 'The configuration of the fixed response.',
'type' => 'object',
'properties' => [
'Content' => ['description' => 'The content of the fixed response. The content can be up to 1 KB in size and can contain only ASCII characters.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'dssacav'],
'ContentType' => ['description' => 'The format of the fixed response.'."\n"
."\n"
.'Valid values: **text/plain**, **text/css**, **text/html**, **application/javascript**, and **application/json**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'text/plain'],
'HttpCode' => ['description' => 'The HTTP response code. Valid values are **2xx**, **4xx**, and **5xx**. **x** is a digit from 0 to 9.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '200'],
],
'required' => false,
'example' => '',
],
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The server group configuration.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The list of destination server groups.',
'type' => 'array',
'items' => [
'description' => 'The destination server group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the destination server group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sg--atstuj3rtoptyui****'],
'Weight' => ['description' => 'The weight of the server group. A larger value indicates a higher weight. This means that the server group receives more requests. Valid values: **0** to **100**.'."\n"
."\n"
.'- If only one destination server group is specified, the weight is **100** by default.'."\n"
."\n"
.'- If multiple destination server groups are specified, you must specify a weight for each server group.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '0', 'title' => '', 'required' => false, 'example' => '30'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'ServerGroupStickySession' => [
'title' => '',
'description' => 'Session persistence among server groups.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Specifies whether to enable session persistence. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'Timeout' => ['description' => 'The timeout period, in seconds. Valid values: 1 to 86400.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '2'],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'InsertHeaderConfig' => [
'title' => '',
'description' => 'The configuration for inserting an HTTP header.',
'type' => 'object',
'properties' => [
'CoverEnabled' => ['description' => 'Specifies whether to overwrite the value of a request header that has the same key. Valid values:'."\n"
."\n"
.'- **true**'."\n"
."\n"
.'- **false** (default)', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'Key' => ['description' => 'The key of the header to be inserted. The key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The key in **InsertHeaderConfig** must be unique.'."\n"
."\n"
.'> The following header keys are not supported (case-insensitive): `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `x-forwarded-host`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, and `authority`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the header to be inserted.'."\n"
."\n"
.'- If **ValueType** is set to **SystemDefined**, you can use one of the following values:'."\n"
."\n"
.' - **ClientSrcPort**: The client port.'."\n"
."\n"
.' - **ClientSrcIp**: The client IP address.'."\n"
."\n"
.' - **Protocol**: The protocol of the client request (HTTP or HTTPS).'."\n"
."\n"
.' - **SLBId**: The ID of the Application Load Balancer instance.'."\n"
."\n"
.' - **SLBPort**: The listener port of the Application Load Balancer instance.'."\n"
."\n"
.'- If **ValueType** is set to **UserDefined**, you can specify a custom header value. The value must be 1 to 128 characters in length, and can contain asterisks (\\*), question marks (?), and printable characters with ASCII values from 32 to 126. The value cannot contain double quotation marks (`"`), start or end with a space, or end with a backslash (`\\`).'."\n"
."\n"
.'- If **ValueType** is set to **ReferenceHeader**, you can reference a request header. The value must be 1 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), and underscores (\\_).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'UserDefined'],
'ValueType' => ['description' => 'The type of the header value. Valid values:'."\n"
."\n"
.'- **UserDefined**: A custom header value.'."\n"
."\n"
.'- **ReferenceHeader**: A header value that is referenced from a request header.'."\n"
."\n"
.'- **SystemDefined**: A system-defined header value.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'UserDefined'],
],
'required' => false,
'example' => '',
],
'Order' => ['description' => 'The execution order of forwarding rule actions. The value can range from **1 to 50000**. Actions are executed in ascending order of their values. Each value must be unique and cannot be empty. You can add a maximum of 20 forwarding rule actions.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '1'],
'RedirectConfig' => [
'title' => '',
'description' => 'The redirection configuration. You can specify up to 20 redirections.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host. Valid values:'."\n"
."\n"
.'- **${host}** (default): This value can be used only on its own and cannot be combined with other characters.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The hostname must be 3 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.' - The hostname must contain at least one period (.). The period cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcards. It cannot contain digits or hyphens (-).'."\n"
."\n"
.' - A hyphen (-) cannot be the first or last character of a domain label.'."\n"
."\n"
.' - You can use asterisks (\\*) and question marks (?) at any position of a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'www.example.com'],
'HttpCode' => ['description' => 'The redirection method. Valid values: **301**, **302**, **303**, **307**, and **308**.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '301'],
'Path' => ['description' => 'The destination path. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can use variables such as ${host}, ${protocol}, and ${port}. Each variable can be referenced only once. You can use these variables together or combine them with a string that meets the requirements below.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The path must be 1 to 128 characters in length.'."\n"
."\n"
.' - It must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:`. It cannot contain the following special characters: `“%#;!()[]^,”\\"`. Asterisks (\\*) and question marks (?) can be used as wildcards.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/test'],
'Port' => ['description' => 'The destination port. Valid values:'."\n"
."\n"
.'- **${port}** (default): This value can be used only on its own and cannot be combined with other characters.'."\n"
."\n"
.'- Other values: **1** to 63335.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '10'],
'Protocol' => ['description' => 'The destination protocol. Valid values:'."\n"
."\n"
.'- **${protocol}** (default): This value can be used only on its own and cannot be combined with other characters.'."\n"
."\n"
.'- **HTTP** or **HTTPS**.'."\n"
."\n"
.'> HTTPS listeners support redirection only to HTTPS.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTP'],
'Query' => ['description' => 'The destination query string. Valid values:'."\n"
."\n"
.'- **${query}** (default): You can use variables such as ${host}, ${protocol}, and ${port}. Each variable can be referenced only once. You can use these variables together or combine them with a string that meets the requirements below.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - It can contain printable characters but cannot contain spaces or the following special characters: `#[]{}\\|<>"`. If the value contains letters, they must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'quert'],
],
'required' => false,
'example' => '',
],
'RewriteConfig' => [
'title' => '',
'description' => 'The rewrite configuration.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host to which requests are rewritten. Valid values:'."\n"
."\n"
.'- **${host}** (default): This value can be used only on its own and cannot be combined with other characters.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The hostname must be 3 to 128 characters in length and can contain lowercase letters, digits, hyphens (-), periods (.), asterisks (\\*), and question marks (?).'."\n"
."\n"
.' - The hostname must contain at least one period (.). A period cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and wildcards. It cannot contain digits or hyphens (-).'."\n"
."\n"
.' - A hyphen (-) cannot be the first or last character of a domain label. You can use asterisks (\\*) and question marks (?) at any position of a domain label.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'www.example.com'],
'Path' => ['description' => 'The destination path. Valid values:'."\n"
."\n"
.'- **${path}** (default): You can use variables such as ${host}, ${protocol}, and ${port}. Each variable can be referenced only once. You can use these variables together or combine them with a string that meets the requirements below.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The path must be 1 to 128 characters in length.'."\n"
."\n"
.' - It must start with a forward slash (/). It can contain letters, digits, and the following special characters: `$-_.+/&~@:`. It cannot contain the following special characters: `“%#;!()[]^,”\\"`. Asterisks (\\*) and question marks (?) can be used as wildcards.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/tsdf'],
'Query' => ['description' => 'The destination query string for the rewrite. Valid values:'."\n"
."\n"
.'- **${query}** (default): You can use variables such as ${host}, ${protocol}, and ${port}. Each variable can be referenced only once. You can use these variables together or combine them with a string that meets the requirements below.'."\n"
."\n"
.'- Other values must meet the following requirements:'."\n"
."\n"
.' - The value must be 1 to 128 characters in length.'."\n"
."\n"
.' - It can contain printable characters but cannot contain spaces or the following special characters: `#[]{}\\|<>"`. If the value contains letters, they must be lowercase.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'quedsa'],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The action type. You can specify up to nine action types. Valid values:'."\n"
."\n"
.'- **ForwardGroup**: Forwards a request to multiple server groups.'."\n"
."\n"
.'- **Redirect**: Redirects a request.'."\n"
."\n"
.'- **FixedResponse**: Returns a fixed response.'."\n"
."\n"
.'- **Rewrite**: Rewrites a request.'."\n"
."\n"
.'- **InsertHeader**: Inserts an HTTP header.'."\n"
."\n"
.'- **RemoveHeader**: Removes an HTTP header.'."\n"
."\n"
.'- **TrafficLimit**: Enables traffic throttling.'."\n"
."\n"
.'- **TrafficMirror**: Enables traffic mirroring.'."\n"
."\n"
.'- **Cors**: Enables Cross-Origin Resource Sharing (CORS).'."\n"
."\n"
.'> A forwarding rule must contain a **ForwardGroup**, **Redirect**, or **FixedResponse** action. When used with other action types, one of these actions must be performed last.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ForwardGroup'],
'TrafficLimitConfig' => [
'title' => '',
'description' => 'The traffic throttling configuration.',
'type' => 'object',
'properties' => [
'QPS' => ['description' => 'The number of queries per second (QPS). Valid values: **1** to 1,000,000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''],
'PerIpQps' => ['description' => 'The number of queries per second (QPS) allowed per IP address. Valid values: **1** to 1,000,000.'."\n"
."\n"
.'> If you specify both **QPS** and **PerIpQps**, the value of **PerIpQps** must be smaller than the value of **QPS**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '80', 'title' => ''],
],
'required' => false,
'example' => '',
],
'TrafficMirrorConfig' => [
'title' => '',
'description' => 'The traffic mirroring configuration.',
'type' => 'object',
'properties' => [
'TargetType' => ['description' => 'The type of the destination to which traffic is mirrored. Valid values:'."\n"
."\n"
.'- **ForwardGroupMirror**: A server group.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ForwardGroupMirror'],
'MirrorGroupConfig' => [
'title' => '',
'description' => 'The server group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'description' => 'The server group to which traffic is mirrored.',
'type' => 'array',
'items' => [
'description' => 'The server group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => false, 'example' => 'srg-00mkgijak0w4qgz9****', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'RemoveHeaderConfig' => [
'title' => '',
'description' => 'The configuration for removing an HTTP header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the header to be removed. The key must be 1 to 40 characters in length, and can contain letters, digits, underscores (\\_), and hyphens (-). The key must be unique within a `RemoveHeader` action.'."\n"
."\n"
.'- If `Direction` is set to `Request`, the following header keys are not supported (case-insensitive): `slb-id`, `slb-ip`, `x-forwarded-for`, `x-forwarded-proto`, `x-forwarded-eip`, `x-forwarded-port`, `x-forwarded-client-srcport`, `x-forwarded-host`, `connection`, `upgrade`, `content-length`, `transfer-encoding`, `keep-alive`, `te`, `host`, `cookie`, `remoteip`, and `authority`.'."\n"
."\n"
.'- If `Direction` is set to `Response`, the following header keys are not supported (case-insensitive): `connection`, `upgrade`, `content-length`, and `transfer-encoding`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
],
'required' => false,
'example' => '',
],
'CorsConfig' => [
'title' => '',
'description' => 'The Cross-Origin Resource Sharing (CORS) configuration.',
'type' => 'object',
'properties' => [
'AllowOrigin' => [
'title' => '',
'description' => 'The list of allowed origins. You can specify only one `*` or one or more values.'."\n"
."\n"
.'- A value must'."\n"
."\n"
.'- A single value can be specified with or without a port. The port range is **1**-**65535**.',
'type' => 'array',
'items' => ['description' => 'Allowed access sources.', 'type' => 'string', 'required' => false, 'example' => 'http://test.com', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowMethods' => [
'title' => '',
'description' => 'Select the HTTP methods to allow for cross-origin access.',
'type' => 'array',
'items' => ['description' => 'Select the HTTP methods allowed for cross-origin resource sharing (CORS). The valid values are:'."\n"
."\n"
.'- **GET**.'."\n"
."\n"
.'- **POST**.'."\n"
."\n"
.'- **PUT**.'."\n"
."\n"
.'- **DELETE**.'."\n"
."\n"
.'- **HEAD**.'."\n"
."\n"
.'- **OPTIONS**.'."\n"
."\n"
.'- **PATCH**.', 'type' => 'string', 'required' => false, 'example' => 'GET', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowHeaders' => [
'title' => '',
'description' => 'The list of headers allowed for cross-origin resource sharing (CORS).',
'type' => 'array',
'items' => ['description' => 'The list of headers that are allowed for cross-origin requests. You can set this parameter to the wildcard character (`*`) or one or more values. If you specify multiple values, separate them with commas (,). A single value can contain only uppercase and lowercase letters, digits, underscores (\\_), and hyphens (-). Underscores and hyphens cannot be the first or last character. The maximum length of a value is 32 characters.', 'type' => 'string', 'required' => false, 'example' => 'test_123', 'title' => ''],
'required' => false,
'example' => '',
],
'ExposeHeaders' => [
'title' => '',
'description' => 'The list of headers that can be exposed.',
'type' => 'array',
'items' => ['description' => 'The list of headers that are allowed to be exposed. You can set this to `*` or one or more values. Separate multiple values with a comma (,). A single value can contain only uppercase and lowercase letters, numbers, underscores (\\_), and hyphens (-). Underscores and hyphens cannot be the first or last character. The maximum length is 32 characters.', 'type' => 'string', 'required' => false, 'example' => 'test_123', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowCredentials' => ['description' => 'Specifies whether to include credentials. Valid values:'."\n"
."\n"
.'- **on**: Yes.'."\n"
."\n"
.'- **off**: No.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'on'],
'MaxAge' => ['description' => 'The maximum cache duration for a preflight request in the browser, in seconds.'."\n"
."\n"
.'Valid values: **-1** to **172800**.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'required' => false, 'example' => '1000'],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'RuleName',
'in' => 'query',
'schema' => ['description' => 'The name of the forwarding rule. The name must be 2 to 128 characters long and start with a letter, a Chinese character, or a number. It can contain numbers, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rule-instance-test'],
],
[
'name' => 'Priority',
'in' => 'query',
'schema' => ['description' => 'The priority of the rule ranges from **1 to 10000**. A smaller value indicates a higher priority.'."\n"
."\n"
.'> Rule priorities must be unique within the same listener.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '10'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'Updates the attributes of a specified forwarding rule for an Application Load Balancer (ALB).',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F5378-41F6-4AE4-92F8-7FF34B540710'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.Rule', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'Conflict.Priority', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleWildcardsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'."\n"],
['errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleActionsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['errorCode' => 'Mismatch.Protocol', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'OperationDenied.RewriteMissingForwardGroup', 'errorMessage' => 'The operation is not allowed because of RewriteMissingForwardGroup.', 'description' => 'The operation is not allowed because rewrite is missing the forward group.'],
['errorCode' => 'ResourceInConfiguring.Listener', 'errorMessage' => 'The specified listener is being configured, please try again later.', 'description' => ''],
['errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction', 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
['errorCode' => 'Forbidden.LoadBalancer', 'errorMessage' => 'Authentication is failed for %s.', 'description' => 'Authentication is failed for %s.'],
],
[
['errorCode' => 'ResourceNotFound.Rule', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F5378-41F6-4AE4-92F8-7FF34B540710\\"\\n}","type":"json"}]',
'title' => 'UpdateRuleAttribute',
'description' => '- The **UpdateRuleAttribute** operation is asynchronous. After you send a request, the system returns a request ID and performs the update in the background. You can call [ListRules](~~214379~~) to query the status of the forwarding rule:'."\n"
."\n"
.' - If the status is **Configuring**, the rule is being updated.'."\n"
."\n"
.' - If the status is **Available**, the update is complete.'."\n"
."\n"
.'- The maximum numbers of conditions (**RuleConditions**) and actions (**RuleActions**) for a forwarding rule are as follows:'."\n"
."\n"
.' - Conditions: 5 for Basic Edition, 10 for Standard Edition, and 10 for WAF-enabled Edition.'."\n"
."\n"
.' - Actions: 3 for Basic Edition, 5 for Standard Edition, and 5 for WAF-enabled Edition.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateRuleAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
],
],
],
],
],
'UpdateRulesAttribute' => [
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '35808',
'abilityTreeNodes' => ['FEATUREslbBIWWMH', 'FEATUREslbTXOYED', 'FEATUREslbQCCQ6L', 'FEATUREslb4T90LL', 'FEATUREslbIT4IYN', 'FEATUREslbA51OGD', 'FEATUREslbUBPZWI', 'FEATUREslbGVK35E', 'FEATUREslbYG3GCF', 'FEATUREslbRBR9GZ', 'FEATUREslbMWZQWL', 'FEATUREslbJCYSIV', 'FEATUREslbY93SFN', 'FEATUREslbVUMBEO', 'FEATUREslbZ4XFTS', 'FEATUREslb2Q6O49'],
'autoTest' => true,
'tenantRelevance' => 'tenant',
],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'Make sure that the client token is unique among different requests. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the API request as the **ClientToken**. The **RequestId** of each API request is different.', 'type' => 'string', 'example' => '123e4567-e89b-12d3-a456-42665544***', 'title' => '', 'required' => false],
],
[
'name' => 'Rules',
'in' => 'formData',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The list of forwarding rules.',
'type' => 'array',
'items' => [
'description' => 'A forwarding rule.',
'type' => 'object',
'properties' => [
'Priority' => ['description' => 'The priority of the forwarding rule.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '80'],
'RuleName' => ['description' => 'The name of the forwarding rule.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rule_111'],
'RuleActions' => [
'title' => '',
'description' => 'The list of forwarding rule actions.',
'type' => 'array',
'items' => [
'description' => 'A forwarding rule action.',
'type' => 'object',
'properties' => [
'FixedResponseConfig' => [
'title' => '',
'description' => 'The configuration of the action to return a fixed response.',
'type' => 'object',
'properties' => [
'Content' => ['description' => 'The content.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'dssacav'],
'ContentType' => ['description' => 'The content type.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'text/plain'],
'HttpCode' => ['description' => 'The HTTP status code.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '200'],
],
'required' => false,
'example' => '',
],
'ForwardGroupConfig' => [
'title' => '',
'description' => 'The configuration of the action to forward requests to server groups.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'title' => '',
'description' => 'The list of destination server groups.',
'type' => 'array',
'items' => [
'description' => 'A destination server group.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sgp-3kbj35ay7cvi******'],
'Weight' => ['description' => 'The weight.', 'type' => 'integer', 'format' => 'int32', 'minimum' => '0', 'title' => '', 'required' => false, 'example' => '100'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'ServerGroupStickySession' => [
'title' => '',
'description' => 'Session persistence between server groups.',
'type' => 'object',
'properties' => [
'Enabled' => ['description' => 'Specifies whether to enable session persistence.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'true'],
'Timeout' => ['description' => 'The timeout period.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '100'],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'InsertHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the action to insert a header.',
'type' => 'object',
'properties' => [
'CoverEnabled' => ['description' => 'Specifies whether to overwrite the value of a request header.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'False'],
'Key' => ['description' => 'The HTTP header.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The content of the HTTP header.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'value'],
'ValueType' => ['description' => 'The value type.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'SystemDefined'],
],
'required' => false,
'example' => '',
],
'Order' => ['description' => 'The priority.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '1'],
'RedirectConfig' => [
'title' => '',
'description' => 'The configuration of the redirection action.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The destination host to which requests are redirected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test.alb.com'],
'HttpCode' => ['description' => 'The redirection method.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '301'],
'Path' => ['description' => 'The destination path to which requests are redirected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/'],
'Port' => ['description' => 'The destination port to which requests are redirected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '443'],
'Protocol' => ['description' => 'The destination protocol to which requests are redirected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'HTTPS'],
'Query' => ['description' => 'The destination query string to which requests are redirected.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'RewriteConfig' => [
'title' => '',
'description' => 'The configuration of the rewrite action.',
'type' => 'object',
'properties' => [
'Host' => ['description' => 'The hostname.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${host}'],
'Path' => ['description' => 'The path.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '/'],
'Query' => ['description' => 'The query.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '${query}'],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The type of the forwarding rule action.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ForwardGroup'],
'TrafficLimitConfig' => [
'title' => '',
'description' => 'The throttling configuration.',
'type' => 'object',
'properties' => [
'QPS' => ['description' => 'The number of queries per second (QPS).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1000', 'title' => ''],
'PerIpQps' => ['description' => 'The number of QPS for a single IP address.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''],
],
'required' => false,
'example' => '',
],
'TrafficMirrorConfig' => [
'title' => '',
'description' => 'The traffic mirroring configuration.',
'type' => 'object',
'properties' => [
'TargetType' => ['description' => 'The type of the mirror destination.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ForwardGroupMirror'],
'MirrorGroupConfig' => [
'title' => '',
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupTuples' => [
'description' => 'The server groups to which traffic is mirrored.',
'type' => 'array',
'items' => [
'description' => 'A server group to which traffic is mirrored.',
'type' => 'object',
'properties' => [
'ServerGroupId' => ['description' => 'The server group ID.', 'type' => 'string', 'required' => false, 'example' => 'sgp-vlnjo1rhw0vc******', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'RemoveHeaderConfig' => [
'title' => '',
'description' => 'The configuration for removing a specific HTTP header.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the HTTP header.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
],
'required' => false,
'example' => '',
],
'CorsConfig' => [
'title' => '',
'description' => 'The cross-origin resource sharing (CORS) configuration.',
'type' => 'object',
'properties' => [
'AllowOrigin' => [
'title' => '',
'description' => 'The allowed origins.',
'type' => 'array',
'items' => ['description' => 'An allowed origin.', 'type' => 'string', 'required' => false, 'example' => '*', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowMethods' => [
'title' => '',
'description' => 'The allowed HTTP methods for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'The allowed HTTP method for cross-origin requests. Valid values:'."\n"
."\n"
.'- **GET**'."\n"
."\n"
.'- **POST**'."\n"
."\n"
.'- **PUT**'."\n"
."\n"
.'- **DELETE**'."\n"
."\n"
.'- **HEAD**'."\n"
."\n"
.'- **OPTIONS**'."\n"
."\n"
.'- **PATCH**', 'type' => 'string', 'required' => false, 'example' => 'GET', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowHeaders' => [
'title' => '',
'description' => 'The list of headers that are allowed for cross-origin requests.',
'type' => 'array',
'items' => ['description' => 'A header that is allowed for cross-origin requests.', 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''],
'required' => false,
'example' => '',
],
'ExposeHeaders' => [
'title' => '',
'description' => 'The list of headers that can be exposed to the client.',
'type' => 'array',
'items' => ['description' => 'A header that can be exposed to the client.', 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''],
'required' => false,
'example' => '',
],
'AllowCredentials' => ['description' => 'Specifies whether to allow credentials in cross-origin requests.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'off'],
'MaxAge' => ['description' => 'The maximum cache duration of preflight requests in the browser.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'required' => false, 'example' => '60'],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'RuleConditions' => [
'title' => '',
'description' => 'The list of forwarding rule conditions.',
'type' => 'array',
'items' => [
'description' => 'A forwarding rule condition.',
'type' => 'object',
'properties' => [
'CookieConfig' => [
'title' => '',
'description' => 'The configuration of the cookie-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of cookie key-value pairs.',
'type' => 'array',
'items' => [
'description' => 'A cookie key-value pair.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the cookie.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Value' => ['description' => 'The value of the cookie.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'value'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HeaderConfig' => [
'title' => '',
'description' => 'The configuration of the header-based condition.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the HTTP header.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'key'],
'Values' => [
'title' => '',
'description' => 'The list of HTTP header values.',
'type' => 'array',
'items' => ['description' => 'An HTTP header value.', 'type' => 'string', 'required' => false, 'example' => 'value', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'HostConfig' => [
'title' => '',
'description' => 'The configuration of the host-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of hostnames.',
'type' => 'array',
'items' => ['description' => 'A hostname.', 'type' => 'string', 'required' => false, 'example' => 'www.example.com', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'MethodConfig' => [
'title' => '',
'description' => 'The configuration of the method-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of HTTP request methods.',
'type' => 'array',
'items' => ['description' => 'An HTTP request method.', 'type' => 'string', 'required' => false, 'example' => 'PUT', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'PathConfig' => [
'title' => '',
'description' => 'The configuration of the path-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of path conditions.',
'type' => 'array',
'items' => ['description' => 'A path condition.', 'type' => 'string', 'required' => false, 'example' => '/test', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'QueryStringConfig' => [
'title' => '',
'description' => 'The configuration of the query string-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The list of query string key-value pairs.',
'type' => 'array',
'items' => [
'description' => 'A query string key-value pair.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the query string.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'account'],
'Value' => ['description' => 'The value of the query string.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'on'],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseHeaderConfig' => [
'title' => '',
'description' => 'The configuration of the response header-based condition.',
'type' => 'object',
'properties' => [
'Key' => ['description' => 'The key of the response header.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test'],
'Values' => [
'title' => '',
'description' => 'The values of the response header.',
'type' => 'array',
'items' => ['description' => 'A value of the response header.', 'type' => 'string', 'required' => false, 'example' => 'value', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'ResponseStatusCodeConfig' => [
'title' => '',
'description' => 'The configuration of the response status code-based condition.',
'type' => 'object',
'properties' => [
'Values' => [
'title' => '',
'description' => 'The response status codes.',
'type' => 'array',
'items' => ['description' => 'A response status code.', 'type' => 'string', 'required' => false, 'example' => '200', 'title' => ''],
'required' => false,
'example' => '',
],
],
'required' => false,
'example' => '',
],
'Type' => ['description' => 'The type of the condition.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'Header'],
'SourceIpConfig' => [
'title' => '',
'description' => 'The configuration for matching service traffic based on the source IP address.',
'type' => 'object',
'properties' => [
'Values' => [
'description' => 'One or more IP addresses or CIDR blocks.',
'type' => 'array',
'items' => ['description' => 'An IP address or a CIDR block.', 'type' => 'string', 'required' => false, 'example' => '192.168.1.1', 'title' => ''],
'required' => false,
'title' => '',
'example' => '',
],
],
'required' => false,
'example' => '',
],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => false,
'example' => '',
],
'RuleId' => ['description' => 'The forwarding rule ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'rule-n4hfecmmtmfl******'],
],
'required' => true,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 100,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned. In this case, the properties of the forwarding rules are not updated.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, the system returns an `HTTP 2xx` status code and starts the update.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'Response schema',
'type' => 'object',
'properties' => [
'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF34B540710'],
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'IncorrectStatus.Rule', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => ''],
['errorCode' => 'OperationDenied.SameGroupForForwardAndMirrorAction', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => 'The operation is not allowed because of %s.'],
['errorCode' => 'OperationDenied.GRPCServerGroup', 'errorMessage' => 'The operation is not allowed because of %s.', 'description' => ''],
['errorCode' => 'Conflict.Priority', 'errorMessage' => 'There is already %s having the same configuration with %s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'ResourceQuotaExceeded.ServerAddedNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleWildcardsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'."\n"],
['errorCode' => 'QuotaExceeded.RuleMatchEvaluationsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => ''],
['errorCode' => 'QuotaExceeded.RuleActionsNum', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['errorCode' => 'Mismatch.Protocol', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'The %s is mismatched for %s and %s.'],
['errorCode' => 'OperationDenied.ServiceManagedResource', 'errorMessage' => 'The operation is not allowed because the current resource of %s is managed resource.', 'description' => ''],
['errorCode' => 'OperationDenied.ListenerIdInconsistent', 'errorMessage' => 'The operation is not allowed because of ListenerIdInconsistent.', 'description' => ''],
['errorCode' => 'IllegalParam.Priority', 'errorMessage' => 'The param of Priority is illegal.', 'description' => ''],
['errorCode' => 'OperationDenied.MirrorActionSupportHttpGroupOnly', 'errorMessage' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.', 'description' => ''],
['errorCode' => 'OperationDenied.ProtocolMustSameForForwardGroupAction', 'errorMessage' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.', 'description' => ''],
],
404 => [
['errorCode' => 'ResourceNotFound.Rule', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Alb::2020-06-16::ListAsynJobs', 'callbackInterval' => 1000, 'maxCallbackTimes' => 60],
'title' => 'UpdateRulesAttribute',
'summary' => 'Updates the properties of multiple forwarding rules in a batch.',
'description' => '**UpdateRulesAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. The properties of the forwarding rules are not updated immediately. You can call the [](t2324530.xdita#)operation to query the update status of the forwarding rules:'."\n"
."\n"
.'- If multiple forwarding rules are in the **Configuring** state, their properties are being updated in a batch.'."\n"
."\n"
.'- If multiple forwarding rules are in the **Available** state, their properties are updated.'."\n"
."\n"
.'- A forwarding rule supports the following maximum number of conditions (**RuleConditions**) and actions (**RuleActions**):'."\n"
."\n"
.' - Conditions: 5 for a Basic Edition instance, 10 for a Standard Edition instance, and 10 for a WAF-enabled instance.'."\n"
."\n"
.' - Actions: 3 for a Basic Edition instance, 5 for a Standard Edition instance, and 5 for a WAF-enabled instance.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateRulesAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF34B540710\\",\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\"\\n}","type":"json"}]',
],
'UpdateSecurityPolicyAttribute' => [
'summary' => 'Updates the attributes of a security policy, such as the security protocol version and cipher suites.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => ['operationType' => 'update'],
'parameters' => [
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'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.'."\n"
."\n"
.'> If you do not specify this parameter, the system automatically uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each API request may be different.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0F******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run to check the request without updating the security policy. The system checks for required parameters, the request format, and service limits. If the check fails, the system returns an error. If the check passes, the system returns the `DryRunOperation` error code.'."\n"
."\n"
.'- **false** (default): sends a normal request. If the check succeeds, the system returns a 2xx HTTP status code and updates the security policy.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'SecurityPolicyId',
'in' => 'query',
'schema' => ['description' => 'The security policy ID.', 'type' => 'string', 'required' => true, 'example' => 'sp-n0kn923****', 'title' => ''],
],
[
'name' => 'TLSVersions',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The supported TLS protocol versions.',
'type' => 'array',
'items' => ['description' => 'The supported TLS protocol version. Valid values: **TLSv1.0**, **TLSv1.1**, **TLSv1.2**, and **TLSv1.3**.'."\n"
.'You can specify up to four TLS protocol versions.', 'type' => 'string', 'example' => 'TLSv1.0', 'required' => false, 'title' => ''],
'required' => false,
'example' => '',
],
],
[
'name' => 'Ciphers',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The supported cipher suites.',
'type' => 'array',
'items' => ['description' => 'A supported cipher suite. The available cipher suites depend on the specified **TLSVersions**. You can specify up to 32 cipher suites.'."\n"
."\n"
.'A cipher suite is valid if it is supported by at least one of the specified **TLSVersions**.'."\n"
."\n"
.'> If you specify TLSv1.3, the Ciphers array must include at least one cipher suite that is supported by TLSv1.3.'."\n"
."\n"
.'- Supported by TLS 1.0 and TLS 1.1:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.'- Supported by TLS 1.2:'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA'."\n"
."\n"
.' - AES128-SHA'."\n"
."\n"
.' - AES256-SHA'."\n"
."\n"
.' - DES-CBC3-SHA'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-ECDSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-ECDSA-AES256-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-GCM-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-GCM-SHA384'."\n"
."\n"
.' - ECDHE-RSA-AES128-SHA256'."\n"
."\n"
.' - ECDHE-RSA-AES256-SHA384'."\n"
."\n"
.' - AES128-GCM-SHA256'."\n"
."\n"
.' - AES256-GCM-SHA384'."\n"
."\n"
.' - AES128-SHA256'."\n"
."\n"
.' - AES256-SHA256'."\n"
."\n"
.' - ECDHE-RSA-CHACHA20-POLY1305'."\n"
."\n"
.' - ECDHE-ECDSA-CHACHA20-POLY1305'."\n"
."\n"
.'- Supported by TLS 1.3:'."\n"
."\n"
.' - TLS\\_AES\\_128\\_GCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_256\\_GCM\\_SHA384'."\n"
."\n"
.' - TLS\\_CHACHA20\\_POLY1305\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_SHA256'."\n"
."\n"
.' - TLS\\_AES\\_128\\_CCM\\_8\\_SHA256', 'type' => 'string', 'example' => 'ECDHE-ECDSA-AES128-SHA', 'required' => false, 'title' => ''],
'required' => false,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'SecurityPolicyName',
'in' => 'query',
'schema' => ['description' => 'The name of the security policy.'."\n"
."\n"
.'The name must be 2 to 128 characters long and can contain digits, periods (.), underscores (\\_), hyphens (-), and spaces. It must start with a letter, a Chinese character, or a digit.', 'type' => 'string', 'example' => 'test-secrity', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The asynchronous task ID.', 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****', 'title' => ''],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.SecurityPolicy', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
],
404 => [
['errorCode' => 'ResourceNotFound.SecurityPolicy', 'errorMessage' => 'The specified resource %s is not found.', 'description' => 'The specified resource %s is not found.'],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"593B0448-D13E-4C56-AC0D-FDF0******\\"\\n}","type":"json"}]',
'title' => 'UpdateSecurityPolicyAttribute',
'description' => '## Usage'."\n"
."\n"
.'**UpdateSecurityPolicyAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. The security policy is not updated immediately. You can call the [ListSecurityPolicies](~~213609~~) operation to query its status:'."\n"
."\n"
.'- If a security policy is in the **Configuring** state, the update is in progress.'."\n"
."\n"
.'- If a security policy is in the **Available** state, the update is complete.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateSecurityPolicyAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
],
],
],
],
],
'UpdateServerGroupAttribute' => [
'summary' => 'Update a server group\'s settings, such as health check, session persistence, name, scheduling algorithm, and protocol.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeCode' => '165',
'abilityTreeNodes' => ['FEATUREslbULKWF1', 'FEATUREslbVRSQEA'],
],
'parameters' => [
[
'name' => 'ServerGroupName',
'in' => 'query',
'schema' => ['description' => 'The name of the server group.'."\n"
."\n"
.'The name must be 2 to 128 characters long, start with a letter, digit, or Chinese character, and can contain letters, digits, periods (.), underscores (\\_), hyphens (-), and spaces.', 'type' => 'string', 'example' => 'test', 'title' => '', 'required' => false],
],
[
'name' => 'Scheduler',
'in' => 'query',
'schema' => ['description' => 'The scheduling algorithm. Valid values:'."\n"
."\n"
.'- **Wrr**: weighted round robin. Backend servers with higher weights receive more requests.'."\n"
."\n"
.'- **Wlc**: weighted least connections. The algorithm routes requests based on both the weight and the current load (number of connections) of each backend server. If backend servers have the same weight, the one with fewer active connections receives more requests.'."\n"
."\n"
.'- **Sch**: consistent hashing. The source IP address is used as the hash key by default. If you configure the `UchConfig` parameter, a URL parameter is used as the hash key instead.', 'type' => 'string', 'example' => 'Wrr', 'title' => '', 'required' => false],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token, which is used to ensure the idempotence of the request.'."\n"
."\n"
.'Generate a unique value on your client and ensure that the value is unique for each request. The client token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the RequestId of the API request as the client token.', 'type' => 'string', 'example' => '5A2CFF0E-5718-45B5-9D4D-70B3******', 'title' => '', 'required' => false],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: Performs a dry run to check the request\'s validity without modifying the resource. The system checks for required parameters, request format, and service limits. If the check is successful, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): Sends a normal request. If the request is valid, the operation is performed and an HTTP `2xx` status code is returned.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
],
[
'name' => 'HealthCheckConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The health check settings.',
'type' => 'object',
'properties' => [
'HealthCheckConnectPort' => ['description' => 'The port on the backend server that is used for health checks.'."\n"
."\n"
.'Valid values: **0** to **65535**.'."\n"
."\n"
.'If you set this value to **0**, the backend server\'s port is used for health checks.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to **true**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '65535', 'minimum' => '0', 'example' => '80', 'title' => '', 'required' => false],
'HealthCheckEnabled' => ['description' => 'Specifies whether to enable health checks. Valid values:'."\n"
."\n"
.'- **true**: Enables health checks.'."\n"
."\n"
.'- **false**: Disables health checks.', 'type' => 'boolean', 'example' => 'true', 'title' => '', 'required' => false],
'HealthCheckHost' => ['description' => 'The domain name used for health checks.'."\n"
."\n"
.'- **Use the private IP address of the backend server** (default): The private IP address of the backend server is used for the health check.'."\n"
."\n"
.'- **Specify a domain name**: Enter a domain name that meets the following requirements:'."\n"
."\n"
.' - The domain name must be 1 to 80 characters in length.'."\n"
."\n"
.' - It can contain lowercase letters, digits, hyphens (-), and periods (.).'."\n"
."\n"
.' - It must contain at least one period (.), which cannot be the first or last character.'."\n"
."\n"
.' - The rightmost domain label can contain only letters and cannot contain digits or hyphens (-).'."\n"
."\n"
.' - A hyphen (-) cannot be the first or last character.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'example' => 'example.com', 'title' => '', 'required' => false],
'HealthCheckCodes' => [
'title' => '',
'description' => 'The HTTP status codes that indicate a successful health check.',
'type' => 'array',
'items' => ['description' => 'The status code that indicates a successful health check.'."\n"
."\n"
.'- When **HealthCheckProtocol** is set to **HTTP** or **HTTPS**, you can specify **http\\_2xx** (default), **http\\_3xx**, **http\\_4xx**, and **http\\_5xx**. Separate multiple values with commas (,).'."\n"
."\n"
.'- When **HealthCheckProtocol** is set to **gRPC**, the valid status codes are from **0** to **99**. The default value is **0**. You can specify up to 20 ranges. Separate multiple ranges with commas (,).'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to **true** and **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'required' => false, 'example' => '200', 'title' => ''],
'required' => false,
'example' => '',
],
'HealthCheckHttpVersion' => ['description' => 'The HTTP version for health checks. Valid values:'."\n"
."\n"
.'- **HTTP1.0**'."\n"
."\n"
.'- **HTTP1.1**'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to true and **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'example' => 'HTTP1.1', 'title' => '', 'required' => false],
'HealthCheckInterval' => ['description' => 'The interval, in seconds, between health checks.'."\n"
."\n"
.'Valid values: **1** to **50**.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to **true**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '50', 'minimum' => '1', 'example' => '5', 'title' => '', 'required' => false],
'HealthCheckMethod' => ['description' => 'The method used for health checks. Valid values:'."\n"
."\n"
.'- **GET**: If the response body is larger than 8 KB, it is truncated. This does not affect the health check result.'."\n"
."\n"
.'- **POST**: By default, gRPC listeners use POST for health checks.'."\n"
."\n"
.'- **HEAD**: By default, HTTP and HTTPS listeners use HEAD for health checks.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to true and **HealthCheckProtocol** is set to **HTTP**, **HTTPS**, or **gRPC**.', 'type' => 'string', 'example' => 'HEAD', 'title' => '', 'required' => false],
'HealthCheckPath' => ['description' => 'The path to which health check requests are sent.'."\n"
."\n"
.'The path must be 1 to 80 characters in length. It can contain letters, digits, and the following characters: `-/.%?#&=` and `_~;!()*[]@$^:\',+`. The path must start with `/`.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to **true** and **HealthCheckProtocol** is set to **HTTP** or **HTTPS**.', 'type' => 'string', 'example' => '/test/index.html', 'title' => '', 'required' => false],
'HealthCheckProtocol' => ['description' => 'The protocol used for health checks. Valid values:'."\n"
."\n"
.'- **HTTP**: The system checks whether the application is healthy by sending a HEAD or GET request that simulates a browser visit.'."\n"
."\n"
.'- **HTTPS**: The system checks whether the application is healthy by sending a HEAD or GET request that simulates a browser visit. Data is encrypted, which is more secure than HTTP.'."\n"
."\n"
.'- **TCP**: The system verifies that the port is open by sending a SYN packet.'."\n"
."\n"
.'- **gRPC**: The system checks whether the application is healthy by sending a POST or GET request.', 'type' => 'string', 'example' => 'HTTP', 'title' => '', 'required' => false],
'HealthCheckTimeout' => ['description' => 'The timeout period, in seconds, for a health check response. If a backend server fails to respond within this period, the health check fails.'."\n"
."\n"
.'Valid values: **1** to **300**.'."\n"
."\n"
.'> This parameter takes effect only when **HealthCheckEnabled** is set to **true**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '300', 'minimum' => '1', 'example' => '3', 'title' => '', 'required' => false],
'HealthyThreshold' => ['description' => 'The number of consecutive successful health checks required for a server\'s status to change from **fail** to **success**.'."\n"
."\n"
.'Valid values: **2** to **10**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '10', 'minimum' => '2', 'example' => '4', 'title' => '', 'required' => false],
'UnhealthyThreshold' => ['description' => 'The number of consecutive failed health checks required for a server\'s status to change from **success** to **fail**.'."\n"
."\n"
.'Valid values: **2** to **10**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '10', 'minimum' => '2', 'example' => '4', 'title' => '', 'required' => false],
],
'required' => false,
'example' => 'true',
],
],
[
'name' => 'StickySessionConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The sticky session settings.',
'type' => 'object',
'properties' => [
'Cookie' => ['description' => 'The cookie that is configured on the server.'."\n"
."\n"
.'The cookie must be 1 to 200 characters long and consist of ASCII characters. It cannot contain commas (,), semicolons (;), or spaces, and cannot start with a dollar sign ($).'."\n"
."\n"
.'> This parameter takes effect only when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Server**.', 'type' => 'string', 'example' => 'B490B5EBF6F3CD402E515D22B******', 'title' => '', 'required' => false],
'CookieTimeout' => ['description' => 'The cookie timeout period, in seconds.'."\n"
."\n"
.'Valid values: **1** to **86400**.'."\n"
."\n"
.'> This parameter takes effect only when **StickySessionEnabled** is set to **true** and **StickySessionType** is set to **Insert**.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '86400', 'minimum' => '1', 'example' => '1000', 'title' => '', 'required' => false],
'StickySessionEnabled' => ['description' => 'Specifies whether to enable sticky sessions. Valid values:'."\n"
."\n"
.'- **true**: Enables sticky sessions.'."\n"
."\n"
.'- **false**: Disables sticky sessions.', 'type' => 'boolean', 'example' => 'false', 'title' => '', 'required' => false],
'StickySessionType' => ['description' => 'The method used to handle cookies. Valid values:'."\n"
."\n"
.'- **Insert**: The load balancer inserts a cookie (SERVERID) into the HTTP or HTTPS response to the first request from a client. Subsequent requests from the client that contain this cookie are routed to the same backend server.'."\n"
."\n"
.'- **Server**: The load balancer overwrites the original cookie when it detects a user-defined cookie. Subsequent requests from the client that contain the new cookie are routed to the same backend server.'."\n"
."\n"
.'> This parameter takes effect only when **StickySessionEnabled** is set to **true**.', 'type' => 'string', 'example' => 'Insert', 'title' => '', 'required' => false],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtop****', 'title' => ''],
],
[
'name' => 'UpstreamKeepaliveEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable persistent connections to backend servers.'."\n"
."\n"
.'- **true**: Enables persistent connections.'."\n"
."\n"
.'- **false**: Disables persistent connections.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'sgp-123'],
],
[
'name' => 'ServiceName',
'in' => 'query',
'schema' => ['description' => 'The name of the corresponding Kubernetes (K8s) `Service`. This parameter is applicable only to Application Load Balancer (ALB) Ingress scenarios.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'test2'],
],
[
'name' => 'UchConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The settings for URL-based consistent hashing.',
'type' => 'object',
'properties' => [
'Type' => ['description' => 'The type of the parameter. Only `QueryString` is supported.', 'type' => 'string', 'required' => true, 'example' => 'QueryString', 'title' => ''],
'Value' => ['description' => 'The name of the query string parameter to use for consistent hashing.', 'type' => 'string', 'required' => true, 'example' => 'abc', 'title' => ''],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'ConnectionDrainConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'description' => 'The connection draining settings.'."\n"
."\n"
.'If connection draining is enabled, the load balancer allows existing connections to be processed for a specified period of time after a backend server is removed or declared unhealthy.'."\n"
."\n"
.'> - Basic instances do not support connection draining. Only Standard and WAF-enhanced instances support this feature.'."\n"
.'>'."\n"
.'> - Server groups of the instance and IP types support connection draining. Server groups of the Function Compute type do not.',
'type' => 'object',
'properties' => [
'ConnectionDrainEnabled' => ['description' => 'Specifies whether to enable connection draining.'."\n"
."\n"
.'- **true**: Enables connection draining.'."\n"
."\n"
.'- **false**: Disables connection draining.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''],
'ConnectionDrainTimeout' => ['description' => 'The connection draining timeout period, in seconds.'."\n"
."\n"
.'Valid values: **0** to **900**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '300', 'title' => ''],
],
'required' => false,
'title' => '',
'example' => '',
],
],
[
'name' => 'SlowStartConfig',
'in' => 'query',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The slow start settings.'."\n"
."\n"
.'If you enable slow start, the load balancer warms up a newly added backend server over a specified period. During this warm-up period, the number of requests routed to the server increases linearly.'."\n"
."\n"
.'> - Basic instances do not support slow start. Only Standard and WAF-enhanced instances support this feature.'."\n"
.'>'."\n"
.'> - Server groups of the instance and IP types support slow start. Server groups of the Function Compute type do not.'."\n"
.'>'."\n"
.'> - Slow start can be enabled only when the scheduling algorithm is weighted round robin.',
'type' => 'object',
'properties' => [
'SlowStartEnabled' => ['description' => 'Specifies whether to enable slow start.'."\n"
."\n"
.'- **true**: Enables slow start.'."\n"
."\n"
.'- **false**: Disables slow start.', 'type' => 'boolean', 'title' => '', 'required' => false, 'example' => 'false'],
'SlowStartDuration' => ['description' => 'The duration of the slow start period, in seconds.'."\n"
."\n"
.'Valid values: **30** to **900**.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '30'],
],
'required' => false,
'example' => '',
],
],
[
'name' => 'CrossZoneEnabled',
'in' => 'query',
'schema' => ['description' => 'Specifies whether to enable cross-zone load balancing for the server group. Valid values:'."\n"
."\n"
.'- **true** (default): Enables cross-zone load balancing.'."\n"
."\n"
.'- **false**: Disables cross-zone load balancing.'."\n"
."\n"
.'> * Basic instances require cross-zone load balancing to be enabled. The option to disable it is supported only by Standard and WAF-enhanced instances.'."\n"
.'>'."\n"
.'> * Server groups of the instance and IP types support disabling cross-zone load balancing. Server groups of the Function Compute type do not.'."\n"
.'>'."\n"
.'> * Sticky sessions cannot be enabled when cross-zone load balancing is disabled.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''],
],
[
'name' => 'IpVersionAffinityMode',
'in' => 'query',
'allowEmptyValue' => true,
'schema' => ['description' => 'The IP version affinity mode.', 'type' => 'string', 'example' => 'Affinity', 'title' => '', 'required' => false],
],
],
'responses' => [
200 => [
'schema' => [
'title' => '',
'description' => 'The response data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'title' => '', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****'],
'RequestId' => ['title' => '', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3*****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'Mismatch.LoadBalancerEditionAndConnectionDrain', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'Mismatch.ServerGroupSchedulerAndSlowStartEnable', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'QuotaExceeded.ConnectionDrainTimeout', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'UnsupportedFeature.ConnectionDrain', 'errorMessage' => 'The feature of %s is not supported.', 'description' => 'The feature of %s is not supported.'],
['errorCode' => 'QuotaExceeded.SlowStartDuration', 'errorMessage' => 'The quota of %s is exceeded, usage %s/%s.', 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['errorCode' => 'UnsupportedFeature.SlowStart', 'errorMessage' => 'The feature of %s is not supported.', 'description' => ''],
['errorCode' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable', 'errorMessage' => 'The %s and %s are mismatched.', 'description' => 'The %s and %s are mismatched.'],
['errorCode' => 'OperationDenied.UpstreamKeepaliveDisabled', 'errorMessage' => 'The operation is not allowed because of UpstreamKeepaliveDisabled.', 'description' => 'Updating not allowed Backend long connection is closed'],
['errorCode' => 'OperationDenied.UpstreamKeepaliveEnabled', 'errorMessage' => 'The operation is not allowed because of UpstreamKeepaliveEnabled.', 'description' => 'Update not allowed to open Backend Long connection is in the open state'],
['errorCode' => 'CloseUpstreamKeepaliveNotSupport', 'errorMessage' => 'The param of UpstreamKeepalive is not Support.', 'description' => 'close keepalive attribute for server group is not supported'],
],
404 => [
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3*****\\"\\n}","type":"json"}]',
'title' => 'UpdateServerGroupAttribute',
'description' => 'The **UpdateServerGroupAttribute** API is asynchronous. After you call this API, the system returns a request ID and runs the update in the background. The configuration change is not immediate. You can call the [ListServerGroups](~~213627~~) API to query the status of the server group:'."\n"
."\n"
.'- A **Configuring** status indicates that the server group is being updated.'."\n"
."\n"
.'- An **Available** status indicates that the update is complete.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateServerGroupAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
],
],
'UpdateServerGroupServersAttribute' => [
'summary' => 'Updates the configurations of backend servers in a server group, such as their weight and description.',
'methods' => ['get', 'post'],
'schemes' => ['http', 'https'],
'security' => [
[
'AK' => [],
],
],
'operationType' => 'write',
'deprecated' => false,
'systemTags' => [
'operationType' => 'update',
'riskType' => 'none',
'chargeType' => 'free',
'abilityTreeNodes' => ['FEATUREslbULKWF1'],
],
'parameters' => [
[
'name' => 'ServerGroupId',
'in' => 'query',
'schema' => ['description' => 'The ID of the server group.', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtop****', 'title' => ''],
],
[
'name' => 'Servers',
'in' => 'formData',
'style' => 'flat',
'schema' => [
'title' => '',
'description' => 'The backend servers. You can specify up to 40 servers in each call.',
'type' => 'array',
'items' => [
'description' => 'The backend server.',
'type' => 'object',
'properties' => [
'Description' => ['description' => 'The description of the backend server. The description must be 2 to 256 characters in length and cannot start with http\\:// or https\\://.', 'type' => 'string', 'example' => 'test', 'title' => '', 'required' => false],
'Port' => ['description' => 'The port used by the backend server. Valid values: **1** to **65535**.'."\n"
."\n"
.'> This parameter is not required if **ServerType** is set to **Fc**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'docRequired' => false, 'example' => '80', 'title' => ''],
'ServerId' => ['description' => 'The ID of the backend server.'."\n"
."\n"
.'- If you set **ServerType** to **Ecs**, **Eni**, or **Eci**, set this parameter to the ID of the ECS instance, elastic network interface (ENI), or elastic container instance (ECI).'."\n"
."\n"
.'- If you set **ServerType** to **Ip**, set this parameter to an IP address.'."\n"
."\n"
.'- If you set **ServerType** to **Fc**, set this parameter to the Alibaba Cloud Resource Name (ARN) of the Function Compute function.', 'type' => 'string', 'required' => false, 'example' => 'i-bp1f9kdprbgy9uiu****', 'title' => ''],
'ServerIp' => ['description' => 'The IP address.', 'type' => 'string', 'example' => '192.168.1.1', 'title' => '', 'required' => false],
'ServerType' => ['description' => 'The type of the backend server. Valid values:'."\n"
."\n"
.'- **Ecs**: an ECS instance.'."\n"
."\n"
.'- **Eni**: an ENI.'."\n"
."\n"
.'- **Eci**: an ECI.'."\n"
."\n"
.'- **Ip**: an IP address.'."\n"
."\n"
.'- **Fc**: a Function Compute function.', 'type' => 'string', 'required' => true, 'docRequired' => false, 'example' => 'Ecs', 'title' => ''],
'Weight' => ['description' => 'The weight of the backend server. Valid values: **0** to **100**. Default value: **100**. If you set the weight to **0**, no requests are forwarded to the backend server.'."\n"
."\n"
.'> This parameter is not required if **ServerType** is set to **Fc**.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => '', 'required' => false],
],
'required' => false,
'title' => '',
'example' => '',
],
'required' => true,
'maxItems' => 200,
'minItems' => 1,
'example' => '',
],
],
[
'name' => 'ClientToken',
'in' => 'query',
'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n"
."\n"
.'Generate a token that is unique among different requests. The token can contain only ASCII characters.'."\n"
."\n"
.'> If you do not specify this parameter, the system uses the **RequestId** of the request as the **ClientToken**. The **RequestId** of each request is unique.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '593B0448-D13E-4C56-AC0D-FDF0******'],
],
[
'name' => 'DryRun',
'in' => 'query',
'schema' => ['title' => 'dryRun', 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n"
."\n"
.'- **true**: performs a dry run. The system checks the required parameters, request format, and service limits, but does not update the configurations, such as the weight and description, of the backend servers. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n"
."\n"
.'- **false** (default): sends a normal request. After the request passes the check, the system returns an HTTP 2xx status code and completes the operation.', 'type' => 'boolean', 'required' => false, 'example' => 'false'],
],
],
'responses' => [
200 => [
'schema' => [
'title' => 'Schema of Response',
'description' => 'The returned data.',
'type' => 'object',
'properties' => [
'JobId' => ['description' => 'The ID of the asynchronous task.', 'type' => 'string', 'example' => '72dcd26b-f12d-4c27-b3af-18f6aed5****', 'title' => ''],
'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '365F4154-92F6-4AE4-92F8-7FF3*****'],
],
'example' => '',
],
],
],
'errorCodes' => [
400 => [
['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => 'The status of %s [%s] is incorrect.'],
['errorCode' => 'ResourceInConfiguring', 'errorMessage' => 'The specified resource of %s is being configured. Please try again later.', 'description' => ''],
],
403 => [
['errorCode' => 'Forbidden.ServerGroup', 'errorMessage' => 'Authentication has failed for ServerGroup.', 'description' => ''],
],
[
['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
['errorCode' => 'ResourceNotFound.BackendServer', 'errorMessage' => 'The specified resource %s is not found.', 'description' => ''],
],
],
'title' => 'UpdateServerGroupServersAttribute',
'description' => '**UpdateServerGroupServersAttribute** is an asynchronous operation. After you send a request, the system returns a request ID and runs the task in the background. The configurations of the backend servers are not updated in real time.'."\n"
."\n"
.'1. You can call the [](t2324516.xdita#)operation to query the status of a server group:'."\n"
."\n"
.' - If a server group is in the **Configuring** state, the group is being modified.'."\n"
."\n"
.' - If a server group is in the **Available** state, the group is running.'."\n"
."\n"
.'2. You can call the [](t2324517.xdita#)operation to query the status of a backend server:'."\n"
."\n"
.' - If a backend server is in the **Configuring** state, the server is being modified.'."\n"
."\n"
.' - If a backend server is in the **Available** state, the server is running.',
'changeSet' => [],
'ramActions' => [
[
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateServerGroupServersAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:ecs/{#ecsId}'],
],
],
],
],
'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"72dcd26b-f12d-4c27-b3af-18f6aed5****\\",\\n \\"RequestId\\": \\"365F4154-92F6-4AE4-92F8-7FF3*****\\"\\n}","type":"json"}]',
],
],
'endpoints' => [
['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-northeast-1.aliyuncs.com', 'endpoint' => 'alb.ap-northeast-1.aliyuncs.com', 'vpc' => 'alb-vpc.ap-northeast-1.aliyuncs.com'],
['regionId' => 'ap-northeast-2', 'regionName' => 'South Korea (Seoul)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-northeast-2.aliyuncs.com', 'endpoint' => 'alb.ap-northeast-2.aliyuncs.com', 'vpc' => 'alb-vpc.ap-northeast-2.aliyuncs.com'],
['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-1.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-1.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-1.aliyuncs.com'],
['regionId' => 'ap-southeast-2', 'regionName' => 'Australia (Sydney) Closed', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-2.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-2.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-2.aliyuncs.com'],
['regionId' => 'ap-southeast-3', 'regionName' => 'Malaysia (Kuala Lumpur)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-3.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-3.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-3.aliyuncs.com'],
['regionId' => 'ap-southeast-5', 'regionName' => 'Indonesia (Jakarta)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-5.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-5.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-5.aliyuncs.com'],
['regionId' => 'ap-southeast-6', 'regionName' => 'Philippines (Manila)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-6.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-6.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-6.aliyuncs.com'],
['regionId' => 'ap-southeast-7', 'regionName' => 'Thailand (Bangkok)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.ap-southeast-7.aliyuncs.com', 'endpoint' => 'alb.ap-southeast-7.aliyuncs.com', 'vpc' => 'alb-vpc.ap-southeast-7.aliyuncs.com'],
['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-beijing.aliyuncs.com', 'endpoint' => 'alb.cn-beijing.aliyuncs.com', 'vpc' => 'alb-vpc.cn-beijing.aliyuncs.com'],
['regionId' => 'cn-chengdu', 'regionName' => 'China (Chengdu)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-chengdu.aliyuncs.com', 'endpoint' => 'alb.cn-chengdu.aliyuncs.com', 'vpc' => 'alb-vpc.cn-chengdu.aliyuncs.com'],
['regionId' => 'cn-fuzhou', 'regionName' => 'China (Fuzhou - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-fuzhou.aliyuncs.com', 'endpoint' => 'alb.cn-fuzhou.aliyuncs.com', 'vpc' => 'alb-vpc.cn-fuzhou.aliyuncs.com'],
['regionId' => 'cn-guangzhou', 'regionName' => 'China (Guangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-guangzhou.aliyuncs.com', 'endpoint' => 'alb.cn-guangzhou.aliyuncs.com', 'vpc' => 'alb-vpc.cn-guangzhou.aliyuncs.com'],
['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-hangzhou.aliyuncs.com', 'endpoint' => 'alb.cn-hangzhou.aliyuncs.com', 'vpc' => 'alb-vpc.cn-hangzhou.aliyuncs.com'],
['regionId' => 'cn-heyuan', 'regionName' => 'China (Heyuan)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-heyuan.aliyuncs.com', 'endpoint' => 'alb.cn-heyuan.aliyuncs.com', 'vpc' => 'alb-vpc.cn-heyuan.aliyuncs.com'],
['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-hongkong.aliyuncs.com', 'endpoint' => 'alb.cn-hongkong.aliyuncs.com', 'vpc' => 'alb-vpc.cn-hongkong.aliyuncs.com'],
['regionId' => 'cn-nanjing', 'regionName' => 'China (Nanjing - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-nanjing.aliyuncs.com', 'endpoint' => 'alb.cn-nanjing.aliyuncs.com', 'vpc' => 'alb-vpc.cn-nanjing.aliyuncs.com'],
['regionId' => 'cn-qingdao', 'regionName' => 'China (Qingdao)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-qingdao.aliyuncs.com', 'endpoint' => 'alb.cn-qingdao.aliyuncs.com', 'vpc' => 'alb-vpc.cn-qingdao.aliyuncs.com'],
['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-shanghai.aliyuncs.com', 'endpoint' => 'alb.cn-shanghai.aliyuncs.com', 'vpc' => 'alb-vpc.cn-shanghai.aliyuncs.com'],
['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-shenzhen.aliyuncs.com', 'endpoint' => 'alb.cn-shenzhen.aliyuncs.com', 'vpc' => 'alb-vpc.cn-shenzhen.aliyuncs.com'],
['regionId' => 'cn-wuhan-lr', 'regionName' => 'China (Wuhan - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-wuhan-lr.aliyuncs.com', 'endpoint' => 'alb.cn-wuhan-lr.aliyuncs.com', 'vpc' => 'alb-vpc.cn-wuhan-lr.aliyuncs.com'],
['regionId' => 'cn-wulanchabu', 'regionName' => 'China (Ulanqab)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-wulanchabu.aliyuncs.com', 'endpoint' => 'alb.cn-wulanchabu.aliyuncs.com', 'vpc' => 'alb-vpc.cn-wulanchabu.aliyuncs.com'],
['regionId' => 'cn-zhangjiakou', 'regionName' => 'China (Zhangjiakou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-zhangjiakou.aliyuncs.com', 'endpoint' => 'alb.cn-zhangjiakou.aliyuncs.com', 'vpc' => 'alb-vpc.cn-zhangjiakou.aliyuncs.com'],
['regionId' => 'cn-zhengzhou-jva', 'regionName' => 'Zhengzhou (China Unicom Joint Venture)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'alb.cn-zhengzhou-jva.aliyuncs.com', 'endpoint' => 'alb.cn-zhengzhou-jva.aliyuncs.com', 'vpc' => 'alb-vpc.cn-zhengzhou-jva.aliyuncs.com'],
['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'alb.eu-central-1.aliyuncs.com', 'endpoint' => 'alb.eu-central-1.aliyuncs.com', 'vpc' => 'alb-vpc.eu-central-1.aliyuncs.com'],
['regionId' => 'eu-west-1', 'regionName' => 'UK (London)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'alb.eu-west-1.aliyuncs.com', 'endpoint' => 'alb.eu-west-1.aliyuncs.com', 'vpc' => 'alb-vpc.eu-west-1.aliyuncs.com'],
['regionId' => 'na-south-1', 'regionName' => 'Mexico', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'alb.na-south-1.aliyuncs.com', 'endpoint' => 'alb.na-south-1.aliyuncs.com', 'vpc' => 'alb-vpc.na-south-1.aliyuncs.com'],
['regionId' => 'us-east-1', 'regionName' => 'US (Virginia)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'alb.us-east-1.aliyuncs.com', 'endpoint' => 'alb.us-east-1.aliyuncs.com', 'vpc' => 'alb-vpc.us-east-1.aliyuncs.com'],
['regionId' => 'us-west-1', 'regionName' => 'US (Silicon Valley)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'alb.us-west-1.aliyuncs.com', 'endpoint' => 'alb.us-west-1.aliyuncs.com', 'vpc' => 'alb-vpc.us-west-1.aliyuncs.com'],
['regionId' => 'ap-south-1', 'regionName' => 'India (Mumbai) Closed', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'alb.ap-south-1.aliyuncs.com', 'endpoint' => 'alb.ap-south-1.aliyuncs.com', 'vpc' => 'alb-vpc.ap-south-1.aliyuncs.com'],
['regionId' => 'me-central-1', 'regionName' => 'Saudi Arabia (Riyadh)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'alb.me-central-1.aliyuncs.com', 'endpoint' => 'alb.me-central-1.aliyuncs.com', 'vpc' => 'alb-vpc.me-central-1.aliyuncs.com'],
['regionId' => 'cn-beijing-finance-1', 'regionName' => 'China North 2 Finance (Preview)', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'alb.cn-beijing-finance-1.aliyuncs.com', 'endpoint' => 'alb.cn-beijing-finance-1.aliyuncs.com', 'vpc' => 'alb-vpc.cn-beijing-finance-1.aliyuncs.com'],
['regionId' => 'cn-hangzhou-finance', 'regionName' => 'China East 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'alb.cn-hangzhou.aliyuncs.com', 'endpoint' => 'alb.cn-hangzhou.aliyuncs.com', 'vpc' => ''],
['regionId' => 'cn-shanghai-finance-1', 'regionName' => 'China East 2 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'alb.cn-shanghai-finance-1.aliyuncs.com', 'endpoint' => 'alb.cn-shanghai-finance-1.aliyuncs.com', 'vpc' => 'alb-vpc.cn-shanghai-finance-1.aliyuncs.com'],
['regionId' => 'cn-shenzhen-finance-1', 'regionName' => 'China South 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'alb.cn-shenzhen-finance-1.aliyuncs.com', 'endpoint' => 'alb.cn-shenzhen-finance-1.aliyuncs.com', 'vpc' => 'alb-vpc.cn-shenzhen-finance-1.aliyuncs.com'],
],
'errorCodes' => [
['code' => 'CloseUpstreamKeepaliveNotSupport', 'message' => 'The param of UpstreamKeepalive is not Support.', 'http_code' => 400, 'description' => 'close keepalive attribute for server group is not supported'],
['code' => 'Conflict.Acl', 'message' => 'There is already %s having the same configuration with %s.', 'http_code' => 400, 'description' => 'There is already %s having the same configuration with %s.'],
['code' => 'Conflict.BackendServer', 'message' => 'There is already %s having the same configuration with %s.', 'http_code' => 400, 'description' => ''],
['code' => 'Conflict.Priority', 'message' => 'There is already %s having the same configuration with %s.', 'http_code' => 400, 'description' => ''],
['code' => 'DryRunOperation', 'message' => 'Request validation has been passed with DryRun flag set.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.%s', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.BackendServer', 'message' => 'The param of BackendServer is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.BackendServer', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => 'The param of %s is duplicated.'],
['code' => 'DuplicatedParam.Key', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.Order', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param of RuleConditions.1.SourceIpConfig.Values is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.Rules.2.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param of Rules.2.RuleConditions.1.SourceIpConfig.Values is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.TagKey', 'message' => 'The param of TagKey is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.Type', 'message' => 'The param of Type is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'DuplicatedParam.Value', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => 'Parameter Duplicate'],
['code' => 'DuplicatedParam.ZoneId', 'message' => 'The param of ZoneId is duplicated.', 'http_code' => 400, 'description' => ''],
['code' => 'EntityNotExist.Role', 'message' => 'The role not exists.', 'http_code' => 404, 'description' => ''],
['code' => 'ExclusiveParam.%sAnd%s', 'message' => 'The param of %s and %s are mutually exclusive.', 'http_code' => 400, 'description' => 'The parameters %s and %s are mutually exclusive.'],
['code' => 'ExclusiveParam.TrafficMirrorAndFixedResponse', 'message' => 'The param of RuleActions.TrafficMirror and RuleActions.FixedResponse are mutually exclusive.', 'http_code' => 400, 'description' => ''],
['code' => 'ExclusiveParam.TrafficMirrorAndRedirect', 'message' => 'The param of Rules.1.RuleActions.TrafficMirror and Rules.1.RuleActions.Redirect are mutually exclusive.', 'http_code' => 400, 'description' => ''],
['code' => 'ExclusiveParam.TrafficMirrorAndRewrite', 'message' => 'The param of RuleActions.TrafficMirror and RuleActions.Rewrite are mutually exclusive.', 'http_code' => 400, 'description' => ''],
['code' => 'Forbidden.Acl', 'message' => 'ACL authentication has failed.', 'http_code' => 403, 'description' => ''],
['code' => 'Forbidden.Acl', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => 'Authentication is failed for %s.'],
['code' => 'Forbidden.alb', 'message' => 'Authentication has failed for alb.', 'http_code' => 400, 'description' => ''],
['code' => 'Forbidden.HealthCheckTemplate', 'message' => 'Authentication has failed for HealthCheckTemplate.', 'http_code' => 403, 'description' => ''],
['code' => 'Forbidden.HealthCheckTemplate', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => 'Authentication is failed for %s.'],
['code' => 'Forbidden.Listener', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => 'Authentication is failed for %s.'],
['code' => 'Forbidden.LoadBalancer', 'message' => 'Authentication has failed for LoadBalancer.', 'http_code' => 403, 'description' => ''],
['code' => 'Forbidden.LoadBalancer', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => 'Authentication is failed for %s.'],
['code' => 'Forbidden.SecurityPolicy', 'message' => 'Authentication has failed for SecurityPolicy.', 'http_code' => 403, 'description' => ''],
['code' => 'Forbidden.ServerGroup', 'message' => 'Authentication has failed for ServerGroup.', 'http_code' => 403, 'description' => ''],
['code' => 'Forbidden.ServerGroup', 'message' => 'Authentication is failed for ServerGroup.', 'http_code' => 403, 'description' => ''],
['code' => 'IdempotentParameterMismatch', 'message' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', 'http_code' => 400, 'description' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.'],
['code' => 'IllegalParam.%s', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AclEntrys', 'message' => 'The param of AclEntrys is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AclIds', 'message' => 'The param of AclIds is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AclName', 'message' => 'The param of AclName is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AclType', 'message' => 'The param of AclType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AddressAllocatedMode', 'message' => 'The param of AddressAllocatedMode is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.AddressType', 'message' => 'The param of AddressType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.CaCertificates', 'message' => 'The param of CaCertificates is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Category', 'message' => 'The param of Category is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Cipher', 'message' => 'The param of Cipher is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Ciphers', 'message' => 'The param of Ciphers is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ConnectPort', 'message' => 'The param of ConnectPort is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Content', 'message' => 'The param of Rules.RuleActions.FixedResponseConfig.Content is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ContentType', 'message' => 'The param of Rules.RuleActions.FixedResponseConfig.ContentType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Cookie', 'message' => 'The param of Cookie is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Description', 'message' => 'The param of Description is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Direction', 'message' => 'The param of Rules.Direction is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.EnableCrossBorder', 'message' => 'Invalid EnableCrossBorder.', 'http_code' => 400, 'description' => 'The acceleration region and origin station you selected involve cross-border data transmission. Please configure the EnableCrossBorder parameters and agree to the relevant compliance commitment.'],
['code' => 'IllegalParam.HealthCheck.healthCheckHost', 'message' => 'The param of HealthCheck.healthCheckHost is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheck.healthCheckHttpVersion', 'message' => 'The param of HealthCheck.healthCheckHttpVersion is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheck.healthCheckMethod', 'message' => 'The param of HealthCheck.healthCheckMethod is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheckHost', 'message' => 'The param of HealthCheckHost is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheckHttpCode', 'message' => 'The param of HealthCheckHttpCode is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheckHttpVersion', 'message' => 'The param of HealthCheckHttpVersion is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheckMethod', 'message' => 'The param of HealthCheckMethod is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthCheckPath', 'message' => 'The param of HealthCheckPath is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HealthyThreshold', 'message' => 'The param of HealthyThreshold is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Host', 'message' => 'The param of Rules.RuleConditions.HostConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HttpCode', 'message' => 'The param of Rules.RuleActions.FixedResponseConfig.HttpCode is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.HttpVersion', 'message' => 'The param of HttpVersion is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.InternetChargeType', 'message' => 'The param of InternetChargeType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.IntervalTime', 'message' => 'The param of IntervalTime is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.IP', 'message' => 'The param of IP is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Key', 'message' => 'The param of Rules.RuleActions.RemoveHeaderConfig.Key is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ListenerDescription', 'message' => 'The param of ListenerDescription is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ListenerIds', 'message' => 'The param of ListenerIds is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ListenerPort', 'message' => 'The param of ListenerPort is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ListenerProtocol', 'message' => 'The param of ListenerProtocol is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.LoadBalancerEdition', 'message' => 'The param of LoadBalancerEdition is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.LoadBalancerIds', 'message' => 'The param of LoadBalancerIds is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.LoadBalancerName', 'message' => 'The param of LoadBalancerName is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.MaxResults', 'message' => 'The param of MaxResults is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Method', 'message' => 'The param of Method is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Name', 'message' => 'The param of Name is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.NextToken', 'message' => 'The param of NextToken is illegal.', 'http_code' => 400, 'description' => 'The specified NextToken is illegal.'],
['code' => 'IllegalParam.Order', 'message' => 'The param of Rules.RuleActions.TrafficLimitConfig.Order is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Path', 'message' => 'The param of Rules.RuleActions.RewriteConfig.Path is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.PayType', 'message' => 'The param of PayType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Port', 'message' => 'The param of Rules.RuleActions.Redirect.Port is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Priority', 'message' => 'The param of Priority is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Protocol', 'message' => 'The param of Protocol is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Query', 'message' => 'The param of Rules.RuleActions.Redirect.Query is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Reason', 'message' => 'The param of ModificationProtectionConfig.Reason is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ResourceId', 'message' => 'ResourceId %s is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ResourceType', 'message' => 'The param of ResourceType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.RuleAction', 'message' => 'The param of Rules.RuleActions is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.RuleIds', 'message' => 'The param of RuleIds is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.RuleIds', 'message' => 'Invalid RuleIds, array length cannot exceed 20.', 'http_code' => 400, 'description' => 'Invalid RuleIds, array length cannot exceed 20'],
['code' => 'IllegalParam.RuleName', 'message' => 'The param of Rules.RuleName is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Rules.2.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param of Rules.2.RuleConditions.1.SourceIpConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Scheduler', 'message' => 'The param of Scheduler is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.SecurityPolicyName', 'message' => 'The param of SecurityPolicyName is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ServerGroupName', 'message' => 'The param of ServerGroupName is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ServerGroupStickySession', 'message' => 'The specified ServerGroupStickySession parameter is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ServerGroupType', 'message' => 'The param of ServerGroupType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ServerIp', 'message' => 'The param of ServerIp is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Servers', 'message' => 'The param of Servers is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Status', 'message' => 'The param of Status is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.StickySession.cookie', 'message' => 'The param of StickySession.cookie is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TagKey', 'message' => 'The param of TagKey is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TagModels', 'message' => 'The param of TagModels is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TagValue', 'message' => 'The param of TagValue is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TargetType', 'message' => 'The param of TargetType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Timeout', 'message' => 'The param of Timeout is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TLSVersion', 'message' => 'The param of TLSVersion is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TracingSample', 'message' => 'The param of AccessLogTracingConfig.TracingSample is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TracingType', 'message' => 'The param of AccessLogTracingConfig.TracingType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.TrafficLimitConfig', 'message' => 'The param of Rules.RuleActions.TrafficLimitConfig.QPS is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Type', 'message' => 'The param of Rules.RuleActions.Type is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.UnhealthyThreshold', 'message' => 'The param of UnhealthyThreshold is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Value', 'message' => 'The param of Rules.RuleConditions.ResponseStatusCode.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.ValueType', 'message' => 'The param of Rules.RuleConditions.ValueType is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.Weight', 'message' => 'The param of Rules.RuleActions.ForwardGroupConfig.ServerGroupTuples.Weight is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.XForwardedForClientCertClientVerifyAlias', 'message' => 'The param of XForwardedForClientCertClientVerifyAlias is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.XForwardedForClientCertFingerprintAlias', 'message' => 'The param of XForwardedForClientCertFingerprintAlias is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.XForwardedForClientCertIssuerDNAlias', 'message' => 'The param of XForwardedForClientCertIssuerDNAlias is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParam.XForwardedForClientCertSubjectDNAlias', 'message' => 'The param of XForwardedForClientCertSubjectDNAlias is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamFormat.%s', 'message' => 'The param format of %s is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamFormat.ServerId', 'message' => 'The param format of ServerId is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamLength.%s', 'message' => 'The param length of %s is illegal.', 'http_code' => 400, 'description' => 'The parameter length of %s is illegal.'],
['code' => 'IllegalParamLength.Host', 'message' => 'The param length of Host is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamLength.Key', 'message' => 'The param length of Rules.RuleActions.RemoveHeaderConfig.Key is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamLength.Path', 'message' => 'The param length of Rules.RuleActions.RewriteConfig.Path is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamLength.Query', 'message' => 'The param length of Rules.RuleActions.Redirect.Query is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamLength.Value', 'message' => 'The param length of Rules.RuleConditions.HostConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.%s', 'message' => 'The param size of %s is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.AdditionalCertificates', 'message' => 'The param size of AdditionalCertificates is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.Certificates', 'message' => 'The param size of Certificates is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param size of RuleConditions.1.SourceIpConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param of IllegalParamSize.RuleConditions.1.SourceIpConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.Rules.2.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param size of Rules.2.RuleConditions.1.SourceIpConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.Rules.2.RuleConditions.1.SourceIpConfig.Values', 'message' => 'The param of IllegalParamSize.Rules.2.RuleConditions.1.SourceIpConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.ServerGroupTuple', 'message' => 'The param size of ServerGroupTuple is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.ServerGroupTuples', 'message' => 'The param size of ServerGroupTuples is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.ServerGroupTuples', 'message' => 'The param of IllegalParamSize.ServerGroupTuples is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.Servers', 'message' => 'The param size of Servers is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.Value', 'message' => 'The param size of Rules.RuleConditions.HostConfig.Values is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IllegalParamSize.ZoneMappings', 'message' => 'The param size of ZoneMappings is illegal.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectBusinessStatus.CommonBandwidthPackage', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectBusinessStatus.Eip', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The business status of %s [%s] is incorrect.'],
['code' => 'IncorrectBusinessStatus.Eip', 'message' => 'The business status of Eip [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectBusinessStatus.LoadBalancer', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The business status of %s [%s] is incorrect.'],
['code' => 'IncorrectBusinessStatus.LoadBalancer', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.Acl', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.AclNotStable', 'message' => 'The status of %s [%s] is not stable.', 'http_code' => 400, 'description' => 'The current ACL status does not support this operation.'],
['code' => 'IncorrectStatus.CommonBandwidthPackage', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.Eni', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The status of %s [%s] is incorrect.'],
['code' => 'IncorrectStatus.HealthCheckTemplate', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The status of %s [%s] is incorrect.'],
['code' => 'IncorrectStatus.Listener', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.LoadBalancer', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.Rule', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => ''],
['code' => 'IncorrectStatus.SecurityPolicy', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The status of %s [%s] is incorrect.'],
['code' => 'IncorrectStatus.ServerGroup', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => 'The status of %s [%s] is incorrect.'],
['code' => 'InternalError', 'message' => 'The request failed to be processed due to unknown errors or exceptions.', 'http_code' => 500, 'description' => 'The request processing has failed due to some unknown error, exception or failure.'],
['code' => 'InvalidAccessLogRecordCustomizedHeadersEnabled', 'message' => 'AccessLogRecordCustomizedHeadersEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidCaEnabled', 'message' => 'CaEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidCookieTimeout', 'message' => 'CookieTimeout is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidDeletionProtectionEnabled', 'message' => 'DeletionProtectionEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidDryRun', 'message' => 'DryRun is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidEnabled', 'message' => 'Specified parameter Enabled is not valid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidGzipEnabled', 'message' => 'GzipEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHealthCheckConnectPort', 'message' => 'HealthCheckConnectPort is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHealthCheckInterval', 'message' => 'HealthCheckInterval is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHealthCheckTcpFastCloseEnabled', 'message' => 'HealthCheckTcpFastCloseEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHealthCheckTimeout', 'message' => 'HealthCheckTimeout is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHealthyThreshold', 'message' => 'HealthyThreshold is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidHttp2Enabled', 'message' => 'Http2Enabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidIdleTimeout', 'message' => 'IdleTimeout is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidInternetBandwidth', 'message' => 'InternetBandwidth is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidMaxResults', 'message' => 'MaxResults is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidParameter', 'message' => 'Invalid parameter, please check the parameter input.', 'http_code' => 400, 'description' => 'Invalid parameter, please check the parameter input.'],
['code' => 'InvalidQPS', 'message' => 'Specified parameter QPS is not valid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidQuicUpgradeEnabled', 'message' => 'QuicUpgradeEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidRequestTimeout', 'message' => 'RequestTimeout is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidTracingEnabled', 'message' => 'TracingEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidUnhealthyThreshold', 'message' => 'UnhealthyThreshold is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForClientCertClientVerifyEnabled', 'message' => 'XForwardedForClientCertClientVerifyEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForClientCertFingerprintEnabled', 'message' => 'XForwardedForClientCertFingerprintEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForClientCertIssuerDNEnabled', 'message' => 'XForwardedForClientCertIssuerDNEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForClientCertSubjectDNEnabled', 'message' => 'XForwardedForClientCertSubjectDNEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForClientSrcPortEnabled', 'message' => 'XForwardedForClientSrcPortEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForEnabled', 'message' => 'XForwardedForEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForProtoEnabled', 'message' => 'XForwardedForProtoEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForSLBIdEnabled', 'message' => 'XForwardedForSLBIdEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'InvalidXForwardedForSLBPortEnabled', 'message' => 'XForwardedForSLBPortEnabled is invalid.', 'http_code' => 400, 'description' => ''],
['code' => 'LockFailed', 'message' => 'The specified resource lock failed.', 'http_code' => 400, 'description' => 'The specified resource lock failed.'],
['code' => 'Mismatch.IspType', 'message' => 'The IspType is mismatched for Eip and CommonBandwidthPackage.', 'http_code' => 400, 'description' => ''],
['code' => 'Mismatch.LoadBalancerEditionAndConnectionDrain', 'message' => 'The %s and %s are mismatched.', 'http_code' => 400, 'description' => 'The %s and %s are mismatched.'],
['code' => 'Mismatch.LoadBalancerEditionAndSlowStartEnable', 'message' => 'The %s and %s are mismatched.', 'http_code' => 400, 'description' => 'The %s and %s are mismatched.'],
['code' => 'Mismatch.Protocol', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'The %s is mismatched for %s and %s.'],
['code' => 'Mismatch.ServerGroupSchedulerAndSlowStartEnable', 'message' => 'The %s and %s are mismatched.', 'http_code' => 400, 'description' => 'The %s and %s are mismatched.'],
['code' => 'Mismatch.ServerType', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => ''],
['code' => 'Mismatch.Type', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'The %s is mismatched for %s and %s.'],
['code' => 'Mismatch.VpcId', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'The %s is mismatched for %s and %s.'],
['code' => 'Mismatch.ZoneIdAndVSwitchId', 'message' => 'The %s and %s are mismatched.', 'http_code' => 400, 'description' => 'The %s and %s are mismatched.'],
['code' => 'Mismatch.ZoneIdAndVSwitchId', 'message' => 'The ZoneId and VSwitchId are mismatched.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingLoadBalancerBillingConfig.PayType', 'message' => 'LoadBalancerBillingConfig.PayType is mandatory for this action.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.%s', 'message' => 'The param of %s is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.CaCertificates', 'message' => 'The param of CaCertificates is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Certificates', 'message' => 'The param of Certificates is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Ciphers', 'message' => 'The param of Ciphers is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Cookie', 'message' => 'The param of Cookie is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Key', 'message' => 'The param of Rules.RuleActions.RemoveHeaderConfig.Key is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.LoadBalancerId', 'message' => 'The param of LoadBalancerId is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.LoadBalancerName', 'message' => 'The param of LoadBalancerName is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Port', 'message' => 'The param of Port is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.QuicListenerId', 'message' => 'The param of QuicListenerId is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.StickySession', 'message' => 'The param of StickySession is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.StickySession.cookie', 'message' => 'The param of StickySession.cookie is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.TagsOrResourceIds', 'message' => 'The param of TagsOrResourceIds is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.TLSVersions', 'message' => 'The param of TLSVersions is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Type', 'message' => 'The param of Type is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.VpcId', 'message' => 'The param of VpcId is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingParam.Weight', 'message' => 'The param of Rules.RuleActions.ForwardGroupConfig.ServerGroupTuples.Weight is missing.', 'http_code' => 400, 'description' => ''],
['code' => 'MissingZoneMappings', 'message' => 'ZoneMappings is mandatory for this action.', 'http_code' => 400, 'description' => ''],
['code' => 'NotExist.ResourceGroup', 'message' => 'ResourceGroup does not exist.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.AcceleratorCidrConflictWithAclEntity', 'message' => 'The operation is not allowed because of ga back-to-source cidr conflict with acl entity which associated with listener in loadbalancer.', 'http_code' => 400, 'description' => 'GA cannot be enabled when the back-to-origin CIDR block of GA conflicts with a CIDR block in the ACL.'],
['code' => 'OperationDenied.AcceleratorIpInAclBlackList', 'message' => 'The operation is not allowed because of ga back-source Ip in blacklist acl', 'http_code' => 400, 'description' => 'GA cannot be enabled when the back-to-origin IP address of GA is on the blacklist.'],
['code' => 'OperationDenied.AccessLogDisabled', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.AccessLogEnabled', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.AclNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.AddressTypeNotChanged', 'message' => 'The operation is not allowed because of AddressTypeNotChanged.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.AddressTypeNotChanged', 'message' => 'The address type of the specified loadbalancer has not been changed.', 'http_code' => 400, 'description' => 'The address type of the specified loadbalancer has not been changed.'],
['code' => 'OperationDenied.CaEnableListenerNotSupportGA', 'message' => 'The operation is not allowed because of the ALB instance has a listener configured for mutual authentication.', 'http_code' => 400, 'description' => 'Application acceleration is not supported when the ALB instance is associated with a listener which has mutual authentication enabled.'],
['code' => 'OperationDenied.CertCommonNameEmpty', 'message' => 'The operation is not allowed because of CertCommonNameEmpty.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.CertificateTypeMismatched', 'message' => 'The operation is not allowed because of CertificateTypeMismatched.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.CloudBox', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.ConfigLastActiveZoneNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'You are not allowed to remove, disable, or delete the A record of the last active zone.'],
['code' => 'OperationDenied.ConfigManagedEnabled', 'message' => 'The operation is not allowed because the ConfigManaged is enabled.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.CrossListenerAScripts', 'message' => 'The operation is not allowed because of %s', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.CrossLoadBalancerQUICListener', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.CrossLoadBalancerRules', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.DefaultCertificateUsed', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.DeletionProtectionEnabled', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.Downgrade', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'."\n"],
['code' => 'OperationDenied.EciNotSupportJobType', 'message' => 'he operation is not allowed because of eci not support job type.', 'http_code' => 400, 'description' => 'Job-optimized elastic container instances cannot be added to the server group.'],
['code' => 'OperationDenied.EciNotSupportJobType', 'message' => 'The operation is not allowed because of eci not support job type.', 'http_code' => 400, 'description' => 'The operation is not allowed because of eci not support job type.'],
['code' => 'OperationDenied.EditionNotChanged', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.EniStatusNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'This operation is not supported by the status of the ENI.'],
['code' => 'OperationDenied.GaNotSupportAcceleratorRegion', 'message' => 'The operation is not allowed because of ga not support this accelerator region.', 'http_code' => 400, 'description' => 'The specified acceleration area does not exist.'],
['code' => 'OperationDenied.GaNotSupportAdditionalCertificate', 'message' => 'The operation is not allowed because of loadbalancer configured with additional certificate not support application acceleration.', 'http_code' => 400, 'description' => 'The ALB instance has been configured with an extended certificate and does not support application acceleration.'],
['code' => 'OperationDenied.GaNotSupportCustomSecurityPolicy', 'message' => 'The operation is not allowed because of the ALB instance configured with custom TLS.', 'http_code' => 400, 'description' => 'Application acceleration is not supported when a custom TLS policy is configured for the ALB instance.'],
['code' => 'OperationDenied.GaNotSupportQuic', 'message' => 'The operation is not allowed because of Ga not support Quic.', 'http_code' => 400, 'description' => 'The operation is not allowed, the load balancing instance has a QUIC protocol type monitoring, and one-click global acceleration is not supported.'],
['code' => 'OperationDenied.GRPCServerGroup', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.GRPCServerGroupNotSupport', 'message' => 'The operation is not allowed because of ALB instances associated with gRPC backend server groups.', 'http_code' => 400, 'description' => 'Application acceleration is not supported when the ALB instance is associated with a gRPC server group.'],
['code' => 'OperationDenied.HttpListenerNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.IntranetLoadBalancer', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.IpGroupCanNotUsedForMirrorAction', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.Ipv6InternetInstance', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.Ipv6IntranetInstance', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.LbAssociatedAclCanNotJoinSecurityGroup', 'message' => 'The operation is not allowed because of loadBalancer associated acl can not join security group.', 'http_code' => 400, 'description' => 'This operation is not allowed because the listener under the Server Load Balancer instance has been bound to an access control policy. You are not allowed to join the security group again.'],
['code' => 'OperationDenied.LbAssociatedGrpcServerGroupNotSupportGA', 'message' => 'The operation is not allowed because of ALB instances associated with gRPC backend server groups.', 'http_code' => 400, 'description' => 'ALB instances associated with gRPC backend server groups do not support application acceleration.'],
['code' => 'OperationDenied.ListenerConfiguring', 'message' => 'The operation is not allowed because of Listener configuring.', 'http_code' => 400, 'description' => 'Application acceleration is not supported when the listener configurations are being modified.'],
['code' => 'OperationDenied.ListenerEnabledCaNotSupportGA', 'message' => 'The operation is not allowed because of the ALB instance has a listener configured for mutual authentication.', 'http_code' => 400, 'description' => 'The ALB instance has a listener configured for mutual authentication. Application acceleration is not supported.'],
['code' => 'OperationDenied.ListenerIdInconsistent', 'message' => 'The operation is not allowed because of ListenerIdInconsistent.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.LoadbalancerAlreadyEnableAccelerator', 'message' => 'The operation is not allowed because of Global Acceleration has been enabled for the instance.', 'http_code' => 400, 'description' => 'GA is already enabled for the ALB instance.'],
['code' => 'OperationDenied.LoadbalancerAlreadyEnabledAccelerator', 'message' => 'The operation is not allowed because of Global Acceleration has been enabled for the instance.', 'http_code' => 400, 'description' => 'Global acceleration has been enabled for the instance.'],
['code' => 'OperationDenied.LoadBalancerJoinedSecurityGroupNotSupportAcl', 'message' => 'The operation is not allowed because of loadbalancer joined security group not support acl.', 'http_code' => 400, 'description' => 'The operation is not supported because SLB instances in security groups cannot be added to ACLs.'],
['code' => 'OperationDenied.MirrorActionSupportHttpGroupOnly', 'message' => 'The operation is not allowed because of MirrorActionSupportHttpGroupOnly.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.NoAvailableBusinessRegionForGa', 'message' => 'The operation is not allowed because of Global Acceleration is not available in this region.', 'http_code' => 400, 'description' => 'Global Acceleration GA is not available in this region and does not support application acceleration.'],
['code' => 'OperationDenied.NoAvailableVSwitch', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.NoListenerInLoadbalancer', 'message' => 'The operation is not allowed because of the ALB instance does not contain listeners.', 'http_code' => 400, 'description' => 'Application acceleration is not supported when the ALB instance does not have a listener.'],
['code' => 'OperationDenied.NonDualStackInstance', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.OnlyFixedAddressAllocatedModeSupported', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'This operation is not supported by the IP mode of the SLB instance.'],
['code' => 'OperationDenied.OnlyPostPaidEipSupported', 'message' => 'The operation is not allowed because of OnlyPostPaidEipSupported.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.ProtectedPrivateIPv4AddressChanged', 'message' => 'The operation is not allowed because of ProtectedPrivateIPv4AddressChanged.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.ProtocolMustSameForForwardGroupAction', 'message' => 'The operation is not allowed because of ProtocolMustSameForForwardGroupAction.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.RewriteMissingForwardGroup', 'message' => 'The operation is not allowed because of RewriteMissingForwardGroup.', 'http_code' => 400, 'description' => 'The operation is not allowed because rewrite is missing the forward group.'],
['code' => 'OperationDenied.SameGroupForForwardAndMirrorAction', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.SecurityGroupNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.ServerGroupProtocolNotSupport', 'message' => 'The operation is not allowed because of ServerGroupProtocolNotSupport.', 'http_code' => 400, 'description' => 'The operation is not allowed because the server group protocol is not supported.'],
['code' => 'OperationDenied.ServiceManagedResource', 'message' => 'The operation is not allowed because the current resource is managed resource.', 'http_code' => 400, 'description' => 'The operation is not allowed because the current resource is being managed.'],
['code' => 'OperationDenied.ServiceManagedResource', 'message' => 'The operation is not allowed because the current resource of %s is managed resource.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.TcpFastCloseNotSupport', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.UnsupportedInternetChargeTypeConvert', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.UpstreamKeepaliveDisabled', 'message' => 'The operation is not allowed because of UpstreamKeepaliveDisabled.', 'http_code' => 400, 'description' => 'Updating not allowed Backend long connection is closed'],
['code' => 'OperationDenied.UpstreamKeepaliveEnabled', 'message' => 'The operation is not allowed because of UpstreamKeepaliveEnabled.', 'http_code' => 400, 'description' => 'Update not allowed to open Backend Long connection is in the open state'],
['code' => 'OperationDenied.VgwVipNotFound', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.VpcNotSupportIpv6', 'message' => 'The operation is not allowed because of VpcNotSupportIpv6.', 'http_code' => 400, 'description' => 'This operation is not allowed because the IPv6 function is not enabled for the current VPC.'],
['code' => 'OperationDenied.VpcVportNotFound', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'],
['code' => 'OperationDenied.WafVersionNotSupport', 'message' => 'The operation is not allowed because of WafVersionNotSupport.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.WrongTargetAddressType', 'message' => 'The operation is not allowed because of WrongTargetAddressType.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.ZoneMappingsNotChanged', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationDenied.ZoneVSwitchChanged', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The operation is not allowed because of %s.'."\n"],
['code' => 'OperationDenied.ZoneVSwitchNotExist', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'The instance does not contain the zone or vSwitch specified in the request.'],
['code' => 'OperationDenyed.ServiceLinkedRoleNotExist', 'message' => 'The service linked role AliyunServiceRoleForAlb does not exist.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationFailed.CancelShiftLoadBalancerZonesFailed', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'Failed to restore the A record of the IP address in the zone.'],
['code' => 'OperationFailed.CertCommonNameEmpty', 'message' => 'The operation failed because of CertCommonNameEmpty.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationFailed.DefaultCertificateNotFound', 'message' => 'The operation failed because of %s.', 'http_code' => 400, 'description' => 'The operation failed because of %s.'],
['code' => 'OperationFailed.LockFailed', 'message' => 'The operation failed because of LockFailed.', 'http_code' => 400, 'description' => ''],
['code' => 'OperationFailed.ResourceGroupStatusCheckFail', 'message' => 'The operation failed because of ResourceGroupStatusCheckFail.', 'http_code' => 400, 'description' => 'The operation failed because resource group status check failed.'],
['code' => 'OperationFailed.ShiftLoadBalancerZonesFailed', 'message' => 'The operation is not allowed because of %s.', 'http_code' => 400, 'description' => 'Failed to remove the A record of the IP address in the zone.'],
['code' => 'QuotaExceeded.AclEntriesNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded. Usage %s/%s.'],
['code' => 'QuotaExceeded.AclsNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'QuotaExceeded.ConnectionDrainTimeout', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'QuotaExceeded.HealthCheckTemplatesNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['code' => 'QuotaExceeded.LoadBalancerCertificatesNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'QuotaExceeded.LoadBalancersNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'QuotaExceeded.RuleActionsNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['code' => 'QuotaExceeded.RuleMatchEvaluationsNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'QuotaExceeded.RuleWildcardsNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'."\n"],
['code' => 'QuotaExceeded.SecurityPoliciesNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded. Usage: %s/%s.'],
['code' => 'QuotaExceeded.ServerGroupsNum', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'QuotaExceeded.SlowStartDuration', 'message' => 'The quota of %s is exceeded, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded, usage %s/%s.'],
['code' => 'ResourceAlreadyAssociated.Certificate', 'message' => 'The specified resource %s is already associated.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceAlreadyAssociated.Listener', 'message' => 'The specified resource %s is already associated.', 'http_code' => 400, 'description' => 'The specified resource %s is already associated.'],
['code' => 'ResourceAlreadyAssociated.SecurityGroup', 'message' => 'The specified resource of %s is already associated.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceAlreadyExist.AclEntry', 'message' => 'The specified resource %s already exists.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceAlreadyExist.Listener', 'message' => 'The specified resource %s is already exist.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInConfiguring', 'message' => 'The specified resource of %s is being configured. Please try again later.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInConfiguring.BackendServer', 'message' => 'The specified resource of BackendServer is being configured. Please try again later.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInConfiguring.BackendServer', 'message' => 'The specified resource of %s is being configured, please try again later.', 'http_code' => 400, 'description' => 'The specified resource of %s is being configured, please try again later.'],
['code' => 'ResourceInConfiguring.Listener', 'message' => 'The specified resource %s is configuring, please try again later.', 'http_code' => 400, 'description' => 'The specified resource %s is being configured. Please try again later.'],
['code' => 'ResourceInConfiguring.Listener', 'message' => 'The specified listener is being configured, please try again later.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInConfiguring.Listener', 'message' => 'The specified resource is being configured, please try again later.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInConfiguring.Listener', 'message' => 'The specified resource of %s is being configured, please try again later.', 'http_code' => 400, 'description' => 'The specified resource of %s is being configured, please try again later.'],
['code' => 'ResourceInConfiguring.LoadBalancer', 'message' => 'The specified resource of %s is being configured, please try again later.', 'http_code' => 400, 'description' => 'The specified resource of %s is being configured, please try again later.'],
['code' => 'ResourceInConfiguring.SecurityPolicy', 'message' => 'The specified resource %s is being configured. Please try again later.', 'http_code' => 400, 'description' => 'The specified resource %s is being configured. Please try again later.'],
['code' => 'ResourceInUse.Acl', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => 'The specified resource %s is in use.'],
['code' => 'ResourceInUse.Eni', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => 'The specified resource %s is in use.'],
['code' => 'ResourceInUse.IP', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => 'The specified resource %s is in use.'],
['code' => 'ResourceInUse.Listener', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => 'The specified resource %s is in use.'],
['code' => 'ResourceInUse.SecurityPolicy', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceInUse.ServerGroup', 'message' => 'The specified resource %s is in use.', 'http_code' => 400, 'description' => 'The specified resource %s is in use.'],
['code' => 'ResourceInUse.ServerGroup', 'message' => 'The specified server group is in use.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceNotAssociated.Acl', 'message' => 'The specified resource %s is not associated.', 'http_code' => 404, 'description' => 'The specified resource %s is not associated.'],
['code' => 'ResourceNotAssociated.Certificate', 'message' => 'The specified resource %s is not associated.', 'http_code' => 400, 'description' => 'The specified resource %s is not associated.'],
['code' => 'ResourceNotAssociated.SecurityGroup', 'message' => 'The specified resource of %s is not associated.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceNotEnough.VSwitchIp', 'message' => 'The specified resource %s is not enough.', 'http_code' => 400, 'description' => 'The specified resource %s is not enough.'],
['code' => 'ResourceNotFound', 'message' => 'The specified resource (%s) is not found.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceNotFound.Acl', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.AclEntry', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.AScript', 'message' => 'The specified resource %s is not found.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceNotFound.Ascript', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.BackendServer', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Certificate', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.Certificate', 'message' => 'The specified certificate is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.CommonBandwidthPackage', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Eci', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Eip', 'message' => 'The specified resource ResourceNotFound.Eip is not found.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceNotFound.Eni', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.HealthCheckTemplate', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.Ipv6Gateway', 'message' => 'The specified resource is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Listener', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.LoadBalancer', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.LoadBalancer', 'message' => 'The specified LoadBalancer is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.LoadBalancer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => 'The specified resource of %s is not found.'],
['code' => 'ResourceNotFound.ResourceGroup', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.Rule', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.SecurityGroup', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.SecurityPolicy', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceNotFound.ServerGroup', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.ServerLoadBalancer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.Vpc', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => ''],
['code' => 'ResourceNotFound.VSwitch', 'message' => 'The specified resource %s is not found.', 'http_code' => 404, 'description' => 'The specified resource %s is not found.'],
['code' => 'ResourceQuotaExceeded.AclEntriesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.AScriptLinesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.AScriptsNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.AScriptsTotalLinesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.FcServerGroupServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.ListenerAclEntriesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['code' => 'ResourceQuotaExceeded.LoadBalancerAclEntriesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['code' => 'ResourceQuotaExceeded.LoadBalancerCertificatesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.LoadBalancerListenersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded for resource %s, usage %s/%s.'],
['code' => 'ResourceQuotaExceeded.LoadBalancerRulesNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.LoadBalancerServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.SecurityGroupNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.SecurityPolicyAttachedNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => 'The quota of %s is exceeded for resource %s. Usage: %s/%s.'],
['code' => 'ResourceQuotaExceeded.ServerAddedNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ResourceQuotaExceeded.ServerGroupAttachedNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => ''],
['code' => 'ServiceUnavailable', 'message' => 'The request has failed due to a temporary failure of the server.', 'http_code' => 400, 'description' => 'The request has failed due to a temporary failure of the server.'],
['code' => 'SystemBusy', 'message' => 'System is busy, please try again later.', 'http_code' => 400, 'description' => 'The system is busy. Please try again later.'],
['code' => 'SystemBusy', 'message' => 'System is busy now, please try again later.', 'http_code' => 400, 'description' => ''],
['code' => 'Throttling', 'message' => 'Request was denied due to flow control.', 'http_code' => 429, 'description' => 'Request was denied due to flow control.'],
['code' => 'UnauthorizedRegion', 'message' => 'The specified region of %s is not authorized.', 'http_code' => 403, 'description' => ''],
['code' => 'UnauthorizedZone', 'message' => 'The specified zone of %s is not authorized.', 'http_code' => 403, 'description' => 'The specified zone of %s is not authorized.'],
['code' => 'UnsupportedFeature.ConnectionDrain', 'message' => 'The feature of %s is not supported.', 'http_code' => 400, 'description' => 'The feature of %s is not supported.'],
['code' => 'UnsupportedFeature.CookieForward', 'message' => 'The feature of CookieForward is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.CustomizeTLS', 'message' => 'The feature of CustomizeTLS is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.FcServerGroup', 'message' => 'The feature of TcpFastClose is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.FcServerGroup', 'message' => 'Server groups of type FC are not supported.', 'http_code' => 400, 'description' => 'Server groups of type FC are not supported'],
['code' => 'UnsupportedFeature.FC_SUPPORT_CA', 'message' => 'The feature of FC SUPPORT CA is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.FixResponse', 'message' => 'The feature of FixResponse is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.FullTraceHttps', 'message' => 'The feature of FullTraceHttps is not supported for current instance.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.GroupStickySession', 'message' => 'The feature of GroupStickySession is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.GRPC', 'message' => 'The feature of GRPC is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.HttpMethodForward', 'message' => 'The feature of HttpMethodForward is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.IpServerGroup', 'message' => 'The feature of IpServerGroup is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.QueryStringForward', 'message' => 'The feature of QueryStringForward is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.ResponseRule', 'message' => 'The feature of ResponseRule is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.Rewrite', 'message' => 'The feature of Rewrite is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.SelectCommonBandwidthPackage', 'message' => 'The feature of SelectCommonBandwidthPackage is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.ServiceName', 'message' => 'The feature of ServiceName is not supported.', 'http_code' => 400, 'description' => 'ServiceName feature not supported'],
['code' => 'UnsupportedFeature.SlowStart', 'message' => 'The feature of %s is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.SourceIpCondition', 'message' => 'The feature of SourceIpCondition is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.SupportCA', 'message' => 'The feature of SupportCA is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.TcpFastClose', 'message' => 'The feature of TcpFastClose is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedFeature.UpstreamKeepalive', 'message' => 'The feature of UpstreamKeepalive is not supported.', 'http_code' => 400, 'description' => ''],
['code' => 'UnsupportedRegion', 'message' => 'The feature of %s is not supported in region of %s.', 'http_code' => 400, 'description' => 'The feature of %s is not supported in region %s.'],
['code' => 'UnsupportedZone', 'message' => 'The feature of %s is not supported in zone of %s.', 'http_code' => 400, 'description' => 'The feature of %s is not supported in zone %s.'],
['code' => 'OperationDenied.DeploymentSetsNotSharedToAlb', 'message' => 'DeploymentSets are not shared to alb.', 'http_code' => 400, 'description' => 'These deployment sets are not shared to the ALB.'],
['code' => 'OperationDenied.CACertificateCorrupted', 'message' => 'The CA certificate is corrupted.', 'http_code' => 400, 'description' => 'CA certificate is corrupted'],
],
'changeSet' => [],
'ram' => [
'productCode' => 'ALB',
'productName' => 'Server Load Balancer',
'ramCodes' => ['alb'],
'ramLevel' => 'RESOURCE',
'ramConditions' => [
[
'name' => 'alb:ServerGroupProtocol',
'schema' => [
'type' => 'String',
'description' => 'The server group protocol type of Application Load Balancer',
'enums' => ['GRPC', 'HTTP', 'HTTPS'],
],
],
[
'name' => 'alb:AddressType',
'schema' => [
'type' => 'String',
'description' => 'The address type of Application Load Balancer',
'enums' => ['Internet', 'Intranet'],
],
],
[
'name' => 'alb:ListenerProtocol',
'schema' => [
'type' => 'String',
'description' => 'The listening protocol type of Application Load Balancer',
'enums' => ['HTTP', 'HTTPS', 'QUIC'],
],
],
],
'ramActions' => [
[
'apiName' => 'UpdateListenerLogConfig',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateListenerLogConfig',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'EnableLoadBalancerAccessLog',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableLoadBalancerAccessLog',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'AssociateAdditionalCertificatesWithListener',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AssociateAdditionalCertificatesWithListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'AttachCommonBandwidthPackageToLoadBalancer',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:AttachCommonBandwidthPackageToLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'CreateRule',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateRule',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'ListTagValues',
'description' => '',
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListTagValues',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
[
'apiName' => 'DeleteHealthCheckTemplates',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteHealthCheckTemplates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#HealthCheckTemplatesId}'],
],
],
],
[
'apiName' => 'CreateSecurityPolicy',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateSecurityPolicy',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/*'],
],
],
],
[
'apiName' => 'GetHealthCheckTemplateAttribute',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetHealthCheckTemplateAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthchecktemplateId}'],
],
],
],
[
'apiName' => 'UpdateServerGroupServersAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateServerGroupServersAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:ecs/{#ecsId}'],
],
],
],
[
'apiName' => 'DeleteRule',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteRule',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'acs:ResourceTag', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'GetListenerAttribute',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetListenerAttribute',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'acs:ResourceTag', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'DissociateAclsFromListener',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DissociateAclsFromListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'UpdateAScripts',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'UpdateListenerAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateListenerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'UpdateRulesAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateRulesAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
],
],
],
[
'apiName' => 'DeleteSecurityPolicy',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteSecurityPolicy',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
],
],
],
[
'apiName' => 'UpdateLoadBalancerAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'LoadBalancerJoinSecurityGroup',
'description' => '',
'operationType' => 'none',
'ramAction' => [
'action' => 'alb:LoadBalancerJoinSecurityGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'AddEntriesToAcl',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AddEntriesToAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'DisableDeletionProtection',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableDeletionProtection',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListAclEntries',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAclEntries',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'UpdateLoadBalancerEdition',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerEdition',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'ListListenerCertificates',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListListenerCertificates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'UpdateSecurityPolicyAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateSecurityPolicyAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
],
],
],
[
'apiName' => 'CreateAcl',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/*'],
],
],
],
[
'apiName' => 'AddServersToServerGroup',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AddServersToServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
[
'apiName' => 'UpdateAclAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateAclAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'EnableDeletionProtection',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableDeletionProtection',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'CreateLoadBalancer',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/*'],
],
],
],
[
'apiName' => 'UpdateHealthCheckTemplateAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateHealthCheckTemplateAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthchecktemplateId}'],
],
],
],
[
'apiName' => 'UpdateLoadBalancerZones',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListHealthCheckTemplates',
'description' => '',
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListHealthCheckTemplates',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/*'],
],
],
],
[
'apiName' => 'RemoveServersFromServerGroup',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:RemoveServersFromServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
[
'apiName' => 'RemoveEntriesFromAcl',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:RemoveEntriesFromAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'CreateRules',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'UpdateLoadBalancerAddressTypeConfig',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateLoadBalancerAddressTypeConfig',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'DetachCommonBandwidthPackageFromLoadBalancer',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DetachCommonBandwidthPackageFromLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'DeleteListener',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'StartShiftLoadBalancerZones',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StartShiftLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'ListSecurityPolicies',
'description' => '',
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListSecurityPolicies',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/*'],
],
],
],
[
'apiName' => 'ListRules',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'DisableLoadBalancerAccessLog',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableLoadBalancerAccessLog',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'UpdateServerGroupAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateServerGroupAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'MoveResourceGroup',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:MoveResourceGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'ListServerGroupServers',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListServerGroupServers',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'AssociateAclsWithListener',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:AssociateAclsWithListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'LoadBalancerLeaveSecurityGroup',
'description' => '',
'operationType' => 'none',
'ramAction' => [
'action' => 'alb:LoadBalancerLeaveSecurityGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'StartListener',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StartListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListTagResources',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListTagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securityPolicyId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'DisableLoadBalancerIpv6Internet',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:DisableLoadBalancerIpv6Internet',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'ListListeners',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListListeners',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListAclRelations',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAclRelations',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
],
],
],
[
'apiName' => 'EnableLoadBalancerIpv6Internet',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:EnableLoadBalancerIpv6Internet',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:AddressType', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'UpdateRuleAttribute',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:UpdateRuleAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
],
],
],
[
'apiName' => 'DeleteAScripts',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'CreateServerGroup',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateServerGroup',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:ServerGroupProtocol', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/*'],
],
],
],
[
'apiName' => 'UnTagResources',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:UnTagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#SecurityPolicyId}'],
],
],
],
[
'apiName' => 'CreateHealthCheckTemplate',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateHealthCheckTemplate',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/*'],
],
],
],
[
'apiName' => 'StopListener',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:StopListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'DeleteLoadBalancer',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteLoadBalancer',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'DeleteAcl',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteAcl',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
],
],
],
[
'apiName' => 'CreateListener',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateListener',
'authLevel' => 'resource',
'actionConditions' => [
['conditionKey' => 'alb:ListenerProtocol', 'validationType' => 'always'],
],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'DeleteServerGroup',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
],
],
],
[
'apiName' => 'TagResources',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:TagResources',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#AclId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#SecurityPolicyId}'],
],
],
],
[
'apiName' => 'ListAsynJobs',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListAsynJobs',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
[
'apiName' => 'ListAcls',
'description' => '',
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListAcls',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/*'],
],
],
],
[
'apiName' => 'GetLoadBalancerAttribute',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetLoadBalancerAttribute',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ReplaceServersInServerGroup',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:ReplaceServersInServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
],
],
],
[
'apiName' => 'ListAScripts',
'description' => '',
'operationType' => 'list',
'ramAction' => [
'action' => 'alb:ListAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'GetListenerHealthStatus',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:GetListenerHealthStatus',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListLoadBalancers',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListLoadBalancers',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/*'],
['validationType' => 'conditional', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'DeleteRules',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DeleteRules',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'CreateAScripts',
'description' => '',
'operationType' => 'create',
'ramAction' => [
'action' => 'alb:CreateAScripts',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListServerGroups',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListServerGroups',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/*'],
],
],
],
[
'apiName' => 'ListTagKeys',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListTagKeys',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'All Resource', 'arn' => '*'],
],
],
],
[
'apiName' => 'CancelShiftLoadBalancerZones',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:CancelShiftLoadBalancerZones',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'],
],
],
],
[
'apiName' => 'DissociateAdditionalCertificatesFromListener',
'description' => '',
'operationType' => 'delete',
'ramAction' => [
'action' => 'alb:DissociateAdditionalCertificatesFromListener',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
],
],
],
[
'apiName' => 'ListSecurityPolicyRelations',
'description' => '',
'operationType' => 'get',
'ramAction' => [
'action' => 'alb:ListSecurityPolicyRelations',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicy}'],
],
],
],
[
'apiName' => 'ApplyHealthCheckTemplateToServerGroup',
'description' => '',
'operationType' => 'update',
'ramAction' => [
'action' => 'alb:ApplyHealthCheckTemplateToServerGroup',
'authLevel' => 'resource',
'actionConditions' => [],
'resources' => [
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthCheckTemplateId}'],
['validationType' => 'always', 'product' => 'ALB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#serverGroupId}'],
],
],
],
],
'resourceTypes' => [
['validationType' => 'always', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'],
['validationType' => 'always', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/{#servergroupId}'],
['validationType' => 'conditional', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/*'],
['validationType' => 'conditional', 'resourceType' => 'ServerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:servergroup/*'],
['validationType' => 'conditional', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:alb:{#regionId}:{#accountId}:loadbalancer/*'],
['validationType' => 'conditional', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/*'],
['validationType' => 'always', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#HealthCheckTemplatesId}'],
['validationType' => 'always', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/{#healthchecktemplateId}'],
['validationType' => 'always', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:ecs/{#ecsId}'],
['validationType' => 'always', 'resourceType' => 'Acl', 'arn' => 'acs:alb:{#regionId}:{#accountId}:acl/{#aclId}'],
['validationType' => 'always', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicyId}'],
['validationType' => 'conditional', 'resourceType' => 'Instance', 'arn' => 'acs:alb:{#regionId}:{#accountId}:ecs/{#InstanceId}'],
['validationType' => 'conditional', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eni/{#NetworkInterfaceId}'],
['validationType' => 'conditional', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:alb:{#regionId}:{#accountId}:eci/{#ContainerGroupId}'],
['validationType' => 'always', 'resourceType' => 'HealthCheckTemplate', 'arn' => 'acs:alb:{#regionId}:{#accountId}:healthchecktemplate/*'],
['validationType' => 'always', 'resourceType' => 'SecurityPolicy', 'arn' => 'acs:alb:{#regionId}:{#accountId}:securitypolicy/{#securitypolicy}'],
],
],
];