diff options
Diffstat (limited to 'data/zh_cn/gwlb')
| -rw-r--r-- | data/zh_cn/gwlb/2024-04-15/api-docs.php | 6932 |
1 files changed, 2816 insertions, 4116 deletions
diff --git a/data/zh_cn/gwlb/2024-04-15/api-docs.php b/data/zh_cn/gwlb/2024-04-15/api-docs.php index 5c12259..1796505 100644 --- a/data/zh_cn/gwlb/2024-04-15/api-docs.php +++ b/data/zh_cn/gwlb/2024-04-15/api-docs.php @@ -1,216 +1,289 @@ <?php return [ 'version' => '1.0', - 'info' => [ - 'style' => 'RPC', - 'product' => 'Gwlb', - 'version' => '2024-04-15', - ], + 'info' => ['style' => 'RPC', 'product' => 'Gwlb', 'version' => '2024-04-15'], 'directories' => [ [ - 'id' => 198458, - 'title' => '地域与可用区', + 'children' => ['DescribeRegions', 'DescribeZones'], 'type' => 'directory', - 'children' => [ - 'DescribeRegions', - 'DescribeZones', - ], + 'title' => '地域与可用区', + 'id' => 81989, ], [ - 'id' => 198461, - 'title' => '实例', + 'children' => ['CreateLoadBalancer', 'UpdateLoadBalancerAttribute', 'UpdateLoadBalancerZones', 'DeleteLoadBalancer', 'ListLoadBalancers', 'GetLoadBalancerAttribute'], 'type' => 'directory', - 'children' => [ - 'CreateLoadBalancer', - 'UpdateLoadBalancerAttribute', - 'UpdateLoadBalancerZones', - 'DeleteLoadBalancer', - 'ListLoadBalancers', - 'GetLoadBalancerAttribute', - ], + 'title' => '实例', + 'id' => 82204, ], [ - 'id' => 198468, - 'title' => '服务器组', + 'children' => ['CreateServerGroup', 'UpdateServerGroupAttribute', 'DeleteServerGroup', 'AddServersToServerGroup', 'RemoveServersFromServerGroup', 'ListServerGroups', 'ListServerGroupServers'], 'type' => 'directory', - 'children' => [ - 'CreateServerGroup', - 'UpdateServerGroupAttribute', - 'DeleteServerGroup', - 'AddServersToServerGroup', - 'RemoveServersFromServerGroup', - 'ListServerGroups', - 'ListServerGroupServers', - ], + 'title' => '服务器组', + 'id' => 82211, ], [ - 'id' => 198476, - 'title' => '监听', + 'children' => ['CreateListener', 'UpdateListenerAttribute', 'DeleteListener', 'ListListeners', 'GetListenerAttribute', 'GetListenerHealthStatus'], 'type' => 'directory', - 'children' => [ - 'CreateListener', - 'UpdateListenerAttribute', - 'DeleteListener', - 'ListListeners', - 'GetListenerAttribute', - 'GetListenerHealthStatus', - ], + 'title' => '监听', + 'id' => 82219, ], [ - 'id' => 198483, - 'title' => '标签', + 'children' => ['TagResources', 'UntagResources', 'ListTagResources'], 'type' => 'directory', - 'children' => [ - 'TagResources', - 'UntagResources', - 'ListTagResources', - ], + 'title' => '标签', + 'id' => 82226, ], [ - 'id' => 198487, - 'title' => '资源组', + 'children' => ['MoveResourceGroup'], 'type' => 'directory', - 'children' => [ - 'MoveResourceGroup', - ], + 'title' => '资源组', + 'id' => 82230, ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ - 'DescribeRegions' => [ - 'summary' => '查询负载均衡支持地域和服务地址。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'AddServersToServerGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '222561', - 'abilityTreeNodes' => [ - 'FEATUREslbM7ALO6', - ], - 'tenantRelevance' => 'publicInformation', + 'abilityTreeCode' => '225056', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'AcceptLanguage', + 'name' => 'ServerGroupId', 'in' => 'formData', + 'schema' => ['description' => '服务器组ID。', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****'], + ], + [ + 'name' => 'Servers', + 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => '支持的语言。取值:'."\n" - ."\n" - .'- **zh-CN**:中文'."\n" - ."\n" - .'- **en-US**(默认值):英文'."\n" + 'description' => '后端服务器列表。'."\n" ."\n" - .'- **ja**:日文', - 'type' => 'string', - 'required' => false, - 'example' => 'zh-CN', + .'> 单次调用最多支持传入200个服务器。', + 'type' => 'array', + 'items' => [ + 'description' => '后端服务器。', + 'type' => 'object', + 'properties' => [ + 'Port' => ['title' => '服务器端口', 'description' => '后端服务器使用的端口,取值:'."\n" + ."\n" + .'- **6081**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '6081'], + 'ServerId' => ['title' => '服务器id', 'description' => '后端服务器ID。'."\n" + ."\n" + .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" + ."\n" + .'- 当服务器组为**Ip**类型时,该参数为IP地址。', 'type' => 'string', 'required' => true, 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['title' => '服务器ip', 'description' => '后端服务器IP地址。', 'type' => 'string', 'required' => false, 'example' => '192.168.XX.XX'], + 'ServerType' => [ + 'title' => '服务器类型', + 'description' => '后端服务器类型,取值:'."\n" + ."\n" + .'- **Ecs**:ECS实例。'."\n" + .'- **Eni**:ENI弹性网卡实例。'."\n" + .'- **Eci**:ECI弹性容器。'."\n" + .'- **Ip**:Ip地址。', + 'type' => 'string', + 'required' => true, + 'example' => 'Ecs', + 'enum' => ['Ecs', 'Eni', 'Eci', 'Ip'], + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 200, ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求,取值:'."\n" + .'- **true**:发送检查请求,不会向服务器组中添加后端服务器。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => '返回数据结构体。', 'type' => 'object', 'properties' => [ - 'Regions' => [ - 'description' => '地域列表。', - 'type' => 'array', - 'items' => [ - 'description' => '地域信息对象。', - 'type' => 'object', - 'properties' => [ - 'LocalName' => [ - 'description' => '地域名称。', - 'type' => 'string', - 'example' => 'China (Hangzhou)', - ], - 'RegionEndpoint' => [ - 'description' => '地域服务地址。', - 'type' => 'string', - 'example' => 'gwlb.cn-hangzhou.aliyuncs.com', - ], - 'RegionId' => [ - 'description' => '地域ID。', - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '162FCE8D-CEEC-5083-90BF-B45D8C4F81FB', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], ], ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"China (Hangzhou)\\",\\n \\"RegionEndpoint\\": \\"gwlb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"162FCE8D-CEEC-5083-90BF-B45D8C4F81FB\\"\\n}","type":"json"}]', - 'title' => '查询地域', - ], - 'DescribeZones' => [ - 'summary' => '查询负载均衡支持可用区。', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Conflict.Server', 'errorMessage' => 'The %s [%s] is conflict.', 'description' => '%s冲突,已经存在同配置的%s。'], + ['errorCode' => 'Mismatch.ServerType', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => 'ServerType不匹配。'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => '指定的IP地址已被使用'], + ['errorCode' => 'IllegalParam.ServerIp', 'errorMessage' => 'The param of %s is illegal.', 'description' => '参数ServerIp非法,请检查输入参数。'], + ['errorCode' => 'IllegalParam.EcsNetworkType', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'DuplicatedParam.Server', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '参数中存在重复的server。'], + ['errorCode' => 'ResourceInUse.Eni', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => '传入的eni不能是网关型负载均衡实例使用的eni,请检查参数。'], + ['errorCode' => 'IncorrectStatus.Eni', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'IllegalParam.IP', 'errorMessage' => 'The param of %s is illegal.', 'description' => '参数IP非法。请检查参数IP的输入值。'], + ['errorCode' => 'Mismatch.IP', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => '输入的IP类型服务器的ID和IP不匹配。'], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => '两个资源的VPC ID不匹配'], + ['errorCode' => 'QuotaExceeded.ServerGroupServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => '配额gwlb_quota_servergroup_servers_num已超额度限制。'], + ['errorCode' => 'QuotaExceeded.ServerGroupAzServersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => '配额gwlb_quota_servergroup_az_servers_num已超额度限制。'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Eni', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的弹性网卡资源不存在。'], + ['errorCode' => 'ResourceNotFound.Eci', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的弹性容器实例资源不存在。'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], + ['errorCode' => 'ResourceNotFound.Ecs', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的云服务器资源不存在。'], + ], ], - 'schemes' => [ - 'https', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '服务器组中添加后端服务器', + 'summary' => '向负载均衡服务器组中添加后端服务器。', + 'description' => '**AddServersToServerGroup**接口属于异步接口,即系统返回一个请求ID,但该后端服务器尚未添加成功,系统后台的添加任务仍在进行。'."\n" + ."\n" + .'1. 您可以调用 ListServerGroups 查询服务器组的状态:'."\n" + ."\n" + .'- 当服务器组处于**Configuring**状态时,表示服务器组正在变配中。'."\n" + .'- 当服务器组处于**Available**状态时,表示服务器组运行中。'."\n" + ."\n" + .'2. 您可以调用 ListServerGroupServers 查询后端服务器的状态:'."\n" + ."\n" + .'- 当后端服务器处于**Adding**状态时,表示后端服务器正在加入服务器组。'."\n" + .'- 当后端服务器处于**Available**状态时,表示后端服务器运行中。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddServersToServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:AddServersToServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + ], + 'CreateListener' => [ + 'summary' => '创建负载均衡监听器。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '222562', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], - 'tenantRelevance' => 'publicInformation', + 'abilityTreeCode' => '220131', + 'abilityTreeNodes' => ['FEATUREslbPNW4R2'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'AcceptLanguage', + 'name' => 'LoadBalancerId', + 'in' => 'formData', + 'schema' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'required' => true, 'example' => 'gwlb-te609d6696632f7*****'], + ], + [ + 'name' => 'ListenerDescription', 'in' => 'formData', + 'schema' => ['description' => '自定义监听描述。'."\n" + ."\n" + .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'listener-description'], + ], + [ + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => '服务器组 ID。', 'type' => 'string', 'required' => true, 'example' => 'sgp-ckh01px70dszof****'], + ], + [ + 'name' => 'TcpIdleTimeout', + 'in' => 'formData', + 'schema' => ['title' => 'TCP连接空闲超时时间。默认值:**350**秒。'."\n" + ."\n" + .'取值范围:**60**-**6000**秒。', 'description' => 'TCP连接空闲超时时间。'."\n" + ."\n" + .'取值范围:**60**-**6000** 秒。'."\n" + ."\n" + .'默认值:**350** 秒。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '350', 'default' => '350'], + ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会创建监听。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], + [ + 'name' => 'Tag', + 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => '支持的语言。取值:'."\n" - ."\n" - .'- **zh-CN**:中文'."\n" - ."\n" - .'- **en-US**(默认值):英文'."\n" - ."\n" - .'- **ja**:日文', - 'type' => 'string', + 'description' => '标签列表。一次调用最多支持添加20个标签。', + 'type' => 'array', + 'items' => [ + 'description' => '标签。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testValue'], + ], + 'required' => false, + ], 'required' => false, - 'example' => 'zh-CN', + 'maxItems' => 20, ], ], ], @@ -218,54 +291,69 @@ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '4C605F7E-D0F6-54E2-B004-F9B132F0D8B2', - ], - 'Zones' => [ - 'description' => '可用区列表。', - 'type' => 'array', - 'items' => [ - 'description' => '可用区信息对象。', - 'type' => 'object', - 'properties' => [ - 'LocalName' => [ - 'description' => '可用区名称。', - 'type' => 'string', - 'example' => 'Hangzhou Zone G', - ], - 'ZoneId' => [ - 'description' => '可用区ID。', - 'type' => 'string', - 'example' => 'cn-hangzhou-g', - ], - ], - ], - ], + 'ListenerId' => ['title' => '', 'description' => '监听ID。', 'type' => 'string', 'example' => 'lsn-wi3c0v30ivysrg****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'A045E652-D298-5E70-A978-7247135336FB'], ], ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => '标签键参数缺失'], + ['errorCode' => 'MissingParam.TagValue', 'errorMessage' => 'The param of TagValue is missing.', 'description' => '标签值参数缺失'], + ['errorCode' => 'OperationDenied.TooManyListeners', 'errorMessage' => 'The operation is not allowed because of TooManyListener.', 'description' => '负载均衡实例下的监听数量超过限制,操作不支持'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of IP is in use.', 'description' => ''], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => '两个资源的VPC ID不匹配'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'IllegalParam.TagValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => '标签值参数不合法'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'description' => '配置冲突,自定义配置了的TCP连接空闲超时时间,服务器组的调度算法需要使用五元组哈希。'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4C605F7E-D0F6-54E2-B004-F9B132F0D8B2\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"Hangzhou Zone G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => '查询可用区', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '创建监听', + 'description' => '**CreateListener** 接口属于异步接口,即系统返回一个请求 ID,但该监听尚未创建成功,系统后台的创建任务仍在进行。您可以调用[GetListenerAttribute](~~2853569~~)查询监听的创建状态:'."\n" + ."\n" + .'- 当监听处于 **Provisioning** 状态时,表示监听正在创建中。'."\n" + ."\n" + .'- 当监听处于 **Running** 状态时,表示监听创建成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateListener'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerId\\": \\"lsn-wi3c0v30ivysrg****\\",\\n \\"RequestId\\": \\"A045E652-D298-5E70-A978-7247135336FB\\"\\n}","type":"json"}]', ], 'CreateLoadBalancer' => [ 'summary' => '创建负载均衡实例。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -278,9 +366,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221915', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -302,24 +388,14 @@ [ 'name' => 'LoadBalancerName', 'in' => 'formData', - 'schema' => [ - 'description' => '网关型负载均衡实例名称。'."\n" - ."\n" - .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'required' => false, - 'example' => 'testGwlbName', - ], + 'schema' => ['description' => '网关型负载均衡实例名称。'."\n" + ."\n" + .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'testGwlbName'], ], [ 'name' => 'VpcId', 'in' => 'formData', - 'schema' => [ - 'description' => '专有网络VPC ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'vpc-uf6qcgpv22ttrnnjh****', - ], + 'schema' => ['description' => '专有网络VPC ID。', 'type' => 'string', 'required' => true, 'example' => 'vpc-uf6qcgpv22ttrnnjh****'], ], [ 'name' => 'ZoneMappings', @@ -332,18 +408,8 @@ 'description' => '可用区及交换机映射对象。', 'type' => 'object', 'properties' => [ - 'VSwitchId' => [ - 'description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', - 'type' => 'string', - 'required' => true, - 'example' => 'vsw-2f0eb020****', - ], - 'ZoneId' => [ - 'description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou-a', - ], + 'VSwitchId' => ['description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', 'type' => 'string', 'required' => true, 'example' => 'vsw-2f0eb020****'], + 'ZoneId' => ['description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou-a'], ], 'required' => false, ], @@ -362,20 +428,10 @@ 'description' => '标签列表。一次调用最多支持20个标签。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" - ."\n" - .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" + ."\n" + .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagValue'], ], 'required' => false, ], @@ -386,40 +442,23 @@ [ 'name' => 'ResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => '资源组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'rg-acfmwbufq6q3****', - ], + 'schema' => ['description' => '资源组ID。', 'type' => 'string', 'required' => false, 'example' => 'rg-acfmwbufq6q3****'], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会创建实例。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会创建实例。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -429,66 +468,26 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'LoadBalancerId' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '00B19438-66BB-58C3-8C2F-DA5B6F95CBDA', - ], + 'LoadBalancerId' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'example' => 'gwlb-9njtjmqt7zfcqm****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '00B19438-66BB-58C3-8C2F-DA5B6F95CBDA'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'DuplicatedParam.ZoneId', - 'errorMessage' => 'The param of ZoneId is duplicated.', - ], - [ - 'errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', - 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', - ], - [ - 'errorCode' => 'ResourceNotEnough.VSwitchIp', - 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', - ], - [ - 'errorCode' => 'DuplicatedParam.VSwitchId', - 'errorMessage' => 'The param of VSwitchId is duplicated.', - ], - [ - 'errorCode' => 'IllegalParamSize.ZoneMappings', - 'errorMessage' => 'The param size of ZoneMappings is illegal.', - ], - [ - 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId', - 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', - ], - [ - 'errorCode' => 'QuotaExceeded.LoadBalancersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], + ['errorCode' => 'DuplicatedParam.ZoneId', 'errorMessage' => 'The param of ZoneId is duplicated.', 'description' => '列表中的ZoneId参数重复'], + ['errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'description' => '交换机vSwitch没有开启IPv6,操作不支持'], + ['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', 'description' => 'vSwitch IP资源不足'], + ['errorCode' => 'DuplicatedParam.VSwitchId', 'errorMessage' => 'The param of VSwitchId is duplicated.', 'description' => '列表中的vSwitchId参数重复'], + ['errorCode' => 'IllegalParamSize.ZoneMappings', 'errorMessage' => 'The param size of ZoneMappings is illegal.', 'description' => 'ZoneMappings列表数量不合法'], + ['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', 'description' => '参数ZoneId和vSwitchId的值不匹配'], + ['errorCode' => 'QuotaExceeded.LoadBalancersNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => '配额gwlb_quota_loadbalancers_num已超额度限制。'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"RequestId\\": \\"00B19438-66BB-58C3-8C2F-DA5B6F95CBDA\\"\\n}","type":"json"}]', 'title' => '创建负载均衡实例', 'description' => '**请确保在使用该接口前,已充分了解网关型负载均衡产品的收费方式和[价格](~~2806160~~)**。'."\n" @@ -496,97 +495,292 @@ .'- **CreateLoadBalancer**接口属于异步接口,即系统返回一个实例 ID,但该网关型负载均衡实例尚未创建成功,系统后台的创建任务仍在进行。您可以调用[GetLoadBalancerAttribute](~~2853555~~)查询网关型负载均衡实例的创建状态:'."\n" .' - 当网关型负载均衡实例处于**Provisioning**状态时,表示网关型负载均衡实例正在创建中。'."\n" .' - 当网关型负载均衡实例处于**Active**状态时,表示网关型负载均衡实例创建成功。', - ], - 'UpdateLoadBalancerAttribute' => [ - 'summary' => '更新负载均衡实例属性。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateLoadBalancer'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], + ], + 'CreateServerGroup' => [ + 'summary' => '创建负载均衡服务器组。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221916', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeCode' => '225035', + 'abilityTreeNodes' => ['FEATUREslb88O4KB', 'FEATUREslb98XMCW', 'FEATUREslb4EL8LZ', 'FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', + 'name' => 'ServerGroupType', 'in' => 'formData', 'schema' => [ - 'description' => '网关型负载均衡实例的ID。', + 'title' => '服务器组类型', + 'description' => '服务器组类型。取值:'."\n" + ."\n" + .'- **Instance**(默认值):服务器类型,该类型服务器组支持添加**Ecs**、**Eni**、**Eci**类型实例。'."\n" + ."\n" + .'- **Ip**:IP地址类型,该类型服务器组支持直接添加IP地址类型的后端服务器。', 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', + 'required' => false, + 'example' => 'Instance', + 'enum' => ['Instance', 'Ip'], ], ], [ - 'name' => 'LoadBalancerName', + 'name' => 'ServerGroupName', + 'in' => 'formData', + 'schema' => ['title' => '服务器组名称', 'description' => '服务器组名称。'."\n" + ."\n" + .'长度为2~128个字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'testServerGroupName'], + ], + [ + 'name' => 'Protocol', 'in' => 'formData', 'schema' => [ - 'description' => '网关型负载均衡实例名称。'."\n" + 'title' => '后端服务器类型', + 'description' => '后端转发协议。取值:'."\n" ."\n" - .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', + .'- **GENEVE**(默认值)。', 'type' => 'string', 'required' => false, - 'example' => 'testGwlbName', + 'enumValueTitles' => ['GENEVE' => 'GENEVE'], + 'example' => 'GENEVE', + 'enum' => ['GENEVE'], ], ], [ - 'name' => 'DryRun', + 'name' => 'Scheduler', 'in' => 'formData', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会更新实例属性。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', + 'title' => '会话保持类型', + 'description' => '调度算法。取值:'."\n" + ."\n" + .'- **5TCH**(默认值):五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', + 'type' => 'string', 'required' => false, - 'example' => 'false', + 'example' => '5TCH', + 'enum' => ['5TCH', '3TCH', '2TCH'], ], ], [ - 'name' => 'ClientToken', + 'name' => 'ServerFailoverMode', 'in' => 'formData', 'schema' => [ - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'由客户端生成该参数值,要保证在不同请求间唯一。ClientToken只支持ASCII字符。'."\n" + 'title' => '', + 'description' => '服务器异常时,存量流量的处理方式。取值:'."\n" ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', + .'- **NoRebalance(默认值)**:不重新平衡现有流量。'."\n" + .'- **Rebalance**:重新平衡现有流量。', 'type' => 'string', 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-426655440000', + 'example' => 'NoRebalance', + 'enum' => ['NoRebalance', 'Rebalance'], ], ], [ - 'name' => 'TrafficMode', + 'name' => 'VpcId', + 'in' => 'formData', + 'schema' => ['title' => '服务器组所在vpc的id', 'description' => 'VPC实例ID。'."\n" + ."\n" + .'> 如果**ServerGroupType**取值为**Instance**时,只有该VPC下的服务器可以加入到该服务器组。', 'type' => 'string', 'required' => true, 'docRequired' => false, 'example' => 'vpc-bp15zckdt37pq72zv****'], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'formData', + 'schema' => ['title' => '企业资源组id', 'description' => '资源组ID。', 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****'], + ], + [ + 'name' => 'ConnectionDrainConfig', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => '流量模式。取值:'."\n" + 'title' => '连接优雅中断配置', + 'description' => '连接优雅中断相关配置。', + 'type' => 'object', + 'properties' => [ + 'ConnectionDrainEnabled' => ['title' => '是否开启连接优雅中断', 'description' => '是否开启连接优雅中断。取值:'."\n" + ."\n" + .'- **true**:开启。'."\n" + ."\n" + .'- **false**(默认值):关闭。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + 'ConnectionDrainTimeout' => ['title' => '连接优雅中断超时时间', 'description' => '连接优雅中断超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**3600**。'."\n" + ."\n" + .'默认值:**300**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '300'], + ], + 'required' => false, + ], + ], + [ + 'name' => 'HealthCheckConfig', + 'in' => 'formData', + 'style' => 'flat', + 'schema' => [ + 'title' => '健康检查配置', + 'description' => '健康检查相关配置。', + 'type' => 'object', + 'properties' => [ + 'HealthCheckConnectPort' => ['title' => '健康检查使用的端口', 'description' => '健康检查使用的后端服务器的端口。'."\n" + ."\n" + .'取值范围: **1**~**65535**。'."\n" + ."\n" + .'默认值:**80**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '80'], + 'HealthCheckConnectTimeout' => ['title' => '健康检查响应的最大超时时间', 'description' => '健康检查响应的最大超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**300**。'."\n" + ."\n" + .'默认值:**5**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5'], + 'HealthCheckDomain' => ['title' => '健康检查的域名', 'description' => '用于健康检查的域名。取值:'."\n" + ."\n" + .'- **$SERVER_IP**(默认值):使用后端服务器内网IP。'."\n" + ."\n" + .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" + ."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'required' => false, 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['title' => '是否开启健康检查', 'description' => '是否开启健康检查,取值:'."\n" + ."\n" + .'- **true**(默认值):开启。'."\n" + ."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'HealthCheckHttpCode' => [ + 'title' => '状态码,多个状态码用逗号分隔', + 'description' => '健康状态返回码列表。', + 'type' => 'array', + 'items' => [ + 'description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" + .'取值:'."\n" + .'- **http\\_2xx**'."\n" + .'- **http\\_3xx**'."\n" + .'- **http\\_4xx**'."\n" + .'- **http\\_5xx**'."\n" + ."\n" + .'默认值:**http\\_2xx** 。'."\n" + ."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', + 'type' => 'string', + 'required' => false, + 'example' => 'http_2xx', + 'enum' => ['http_2xx', 'http_3xx', 'http_4xx', 'http_5xx'], + ], + 'required' => false, + ], + 'HealthCheckInterval' => ['title' => '健康检查时间间隔', 'description' => '健康检查的时间间隔。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**50**。'."\n" + ."\n" + .'默认值:**10**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10'], + 'HealthCheckPath' => ['title' => '健康检查的path', 'description' => '健康检查路径。'."\n" + ."\n" + .'长度为1~80个字符,只能使用大小写英文字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和and(&)以及扩展字符集_;~!()*[]@$^:\',+='."\n" + ."\n" + .'必须以正斜线(/)开头。'."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'required' => false, 'example' => '/test/index.html'], + 'HealthCheckProtocol' => [ + 'title' => '健康检查协议类型', + 'description' => '健康检查协议,取值:'."\n" + ."\n" + .'- **TCP**(默认值):通过发送SYN握手报文来检测服务器端口是否存活。'."\n" + ."\n" + .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + 'enum' => ['TCP', 'HTTP'], + ], + 'HealthyThreshold' => ['title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" + ."\n" + .'取值范围:**2**~**10**。'."\n" + ."\n" + .'默认值:**2**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], + 'UnhealthyThreshold' => ['title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" + ."\n" + .'取值范围:**2**~**10**。'."\n" + ."\n" + .'默认值:**2**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string'], + 'HealthCheckExp' => ['type' => 'string'], + ], + 'required' => false, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'formData', + 'style' => 'flat', + 'schema' => [ + 'title' => '标签列表', + 'description' => '标签列表。'."\n" ."\n" - .'- **LoadBalance**:负载均衡。'."\n" - .'- **ByPass**:绕行模式。', - 'type' => 'string', + .'一次调用最多支持 20 个标签。', + 'type' => 'array', + 'items' => [ + 'description' => '标签。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagValue'], + ], + 'required' => false, + ], 'required' => false, - 'example' => 'LoadBalance', + 'maxItems' => 20, ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会创建服务器组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'False'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ @@ -595,234 +789,147 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], + 'ServerGroupId' => ['description' => '服务器组ID。', 'type' => 'string', 'example' => 'sgp-atstuj3rtoptyui****'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IllegalParam.HealthCheckProtocol', 'errorMessage' => 'The param of %s is illegal.', 'description' => '健康检查协议非法,请检查输入参数。'], + ['errorCode' => 'QuotaExceeded.ServerGroupsNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => '配额gwlb_quota_servergroups_num已超额度限制。'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Vpc', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的专有网络资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroups', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '创建服务器组', + 'description' => '**CreateServerGroup**接口属于异步接口,即系统返回一个请求ID,但该服务器组尚未创建成功,系统后台的创建任务仍在进行。您可以调用 ListServerGroups 查询服务器组的创建状态:'."\n" + .'- 当服务器组处于**Creating**状态时,表示服务器组正在创建中。'."\n" + .'- 当服务器组处于**Available**状态时,表示服务器组创建成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD\\"\\n}","type":"json"}]', - 'title' => '更新负载均衡实例属性', - 'description' => '- UpdateLoadBalancerAttribute 属于异步接口,即系统返回一个请求 ID,但该实例属性尚未修改成功,系统后台的变更任务仍在进行。您可以调用 GetLoadBalancerAttribute 查询网关型负载均衡实例的更新状态:'."\n" - .' - 当网关型负载均衡实例处于 Configuring 状态时,表示网关型负载均衡实例正在更新中。'."\n" - .' - 当网关型负载均衡实例处于 Active 状态时,表示网关型负载均衡实例更新成功。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\"\\n}","type":"json"}]', ], - 'UpdateLoadBalancerZones' => [ - 'summary' => '更新负载均衡实例可用区。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'DeleteListener' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221912', - 'abilityTreeNodes' => [ - 'FEATUREslb23BWZ4', - ], + 'abilityTreeCode' => '221398', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', + 'name' => 'ListenerId', 'in' => 'formData', - 'schema' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - ], - [ - 'name' => 'ZoneMappings', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '可用区及交换机映射列表。至少需要添加一个可用区,最多支持添加20个可用区。若当前地域支持2个及以上的可用区,建议添加2个及以上可用区。', - 'type' => 'array', - 'items' => [ - 'description' => '可用区及交换机映射对象。', - 'type' => 'object', - 'properties' => [ - 'VSwitchId' => [ - 'description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', - 'type' => 'string', - 'required' => true, - 'example' => 'vsw-bp1n75pbs77v5q6p3****', - ], - 'ZoneId' => [ - 'description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou-h', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 20, - ], + 'schema' => ['description' => '监听ID。', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdincizg***'], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会更新实例可用区。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会删除监听。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'由客户端生成该参数值,要保证在不同请求间唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'ED8905C2-A4F6-5E43-87B7-6A5DC8757146', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '5C6E3548-086F-5FF6-A2B3-B1871B3AB488'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'OperationDenied.VSwitchChangeNotSupport', - 'errorMessage' => 'The operation is not allowed because of VSwitchChangeNotSupport.', - ], - [ - 'errorCode' => 'DuplicatedParam.VSwitchId', - 'errorMessage' => 'The param of VSwitchId is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.ZoneId', - 'errorMessage' => 'The param of ZoneId is duplicated.', - ], - [ - 'errorCode' => 'IllegalParamSize.ZoneMappings', - 'errorMessage' => 'The param size of ZoneMappings is illegal.', - ], - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'Mismatch.ZoneIdAndVSwitchId', - 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', - ], - [ - 'errorCode' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], - [ - 'errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', - 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', - ], - [ - 'errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', - 'errorMessage' => 'The specified resource of %s is already associated.', - ], - [ - 'errorCode' => 'ResourceNotEnough.VSwitchIp', - 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作。'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"ED8905C2-A4F6-5E43-87B7-6A5DC8757146\\"\\n}","type":"json"}]', - 'title' => '更新负载均衡可用区', - 'description' => '**请确保在使用该接口前,已充分了解网关型负载均衡产品的收费方式和[价格](~~2806160~~)。**'."\n" - ."\n" - .'**UpdateLoadBalancerZones**属于异步接口,即系统返回一个请求ID,但该实例可用区及可用区属性尚未修改成功,系统后台的变更任务仍在进行。您可以调用[GetLoadBalancerAttribute](~~2853555~~)查询网关型负载均衡实例的更新状态:'."\n" - ."\n" - .'- 当网关型负载均衡实例处于**Configuring**状态时,表示网关型负载均衡实例正在更新中。'."\n" - .'- 当网关型负载均衡实例处于**Active**状态时,表示网关型负载均衡实例更新成功。'."\n" + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '删除监听', + 'summary' => '删除负载均衡监听器。', + 'description' => '**DeleteListener** 接口属于异步接口,即系统返回一个请求 ID,但该监听尚未删除成功,系统后台的删除任务仍在进行。您可以调用 **GetListenerAttribute** 查询监听的删除状态:'."\n" ."\n" - .'><notice>每次调用该接口时,请确保您传入该网关型负载均衡实例的所有可用区参数,包括当前和新增的可用区。如您未传入当前的可用区参数,表示需要将当前可用区删除。您可以通过 GetLoadBalancerAttribute 接口查询该实例的当前可用区。></notice>', + .'- 当监听器处于 **Deleting** 状态时,表示监听正在删除中。'."\n" + .'- 当查询不到该监听时,表示监听删除成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteListener'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5C6E3548-086F-5FF6-A2B3-B1871B3AB488\\"\\n}","type":"json"}]', ], 'DeleteLoadBalancer' => [ - 'summary' => '删除负载均衡实例。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -835,9 +942,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221917', - 'abilityTreeNodes' => [ - 'FEATUREslb12YEWG', - ], + 'abilityTreeNodes' => ['FEATUREslb12YEWG'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -845,40 +950,23 @@ [ 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => '网关型负载均衡实例的ID', - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], + 'schema' => ['description' => '网关型负载均衡实例的ID', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****'], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会删除实例。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会删除实例。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -888,281 +976,443 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '37907828-01AB-5AC3-9DDE-25D419091D54', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '37907828-01AB-5AC3-9DDE-25D419091D54'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], - [ - 'errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', - 'errorMessage' => 'The specified resource of %s is already associated.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => '负载均衡ID参数缺失'], + ['errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'errorMessage' => 'The specified resource of %s is already associated.', 'description' => '指定资源%s已被关联'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"37907828-01AB-5AC3-9DDE-25D419091D54\\"\\n}","type":"json"}]', + 'staticInfo' => ['returnType' => 'synchronous'], 'title' => '删除负载均衡实例', - ], - 'ListLoadBalancers' => [ - 'summary' => '查询负载均衡实例列表。', - 'methods' => [ - 'post', - 'get', + 'summary' => '删除负载均衡实例。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteLoadBalancer'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"37907828-01AB-5AC3-9DDE-25D419091D54\\"\\n}","type":"json"}]', + ], + 'DeleteServerGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221914', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeCode' => '225038', + 'abilityTreeNodes' => ['FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ZoneIds', + 'name' => 'ServerGroupId', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '可用区ID列表。一次最多支持查询20个可用区ID。', - 'type' => 'array', - 'items' => [ - 'description' => '可用区ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'cn-beijing-h', - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['title' => '服务器组ID', 'description' => '服务器组ID', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****'], ], [ - 'name' => 'VpcIds', + 'name' => 'DryRun', 'in' => 'formData', - 'style' => 'flat', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求,取值:'."\n" + .'- **true**:发送检查请求,不会删除服务器组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2XX状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '专有网络唯一标识', - 'description' => '专有网络ID列表。一次最多支持查询20个VPC ID。', - 'type' => 'array', - 'items' => [ - 'description' => '专用网络ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'vpc-bp1xuejaht4o7yhh2****', + 'title' => '', + 'description' => '返回数据结构体。', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], ], - 'required' => false, - 'maxItems' => 20, ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectStatus.BackendServer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '服务器的状态无法进行当前操作,请检查服务器当前是否处于其他操作下。'], + ['errorCode' => 'ResourceInUse.ServerGroup', 'errorMessage' => 'The specified resource of %s is in use.', 'description' => '指定的服务器组资源正在使用中,请稍后重试。'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '删除服务器组', + 'summary' => '删除负载均衡服务器组。', + 'description' => '服务器组未被任何监听使用时支持删除。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteServerGroup'], + ], + ], + 'ramActions' => [ [ - 'name' => 'AddressIpVersion', - 'in' => 'formData', - 'schema' => [ - 'title' => '协议类型', - 'description' => '协议版本。取值:'."\n" - ."\n" - .'- **Ipv4**:Ipv4类型。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'IPv4' => 'IPv4', - 'DualStack' => 'DualStack', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], ], - 'example' => 'Ipv4', - 'enum' => [], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + ], + 'DescribeRegions' => [ + 'summary' => '查询负载均衡支持地域和服务地址', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerStatus', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '222561', + 'abilityTreeNodes' => ['FEATUREslbM7ALO6'], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'AcceptLanguage', 'in' => 'formData', + 'schema' => ['description' => '支持的语言。取值:'."\n" + ."\n" + .'- **zh-CN**:中文'."\n" + ."\n" + .'- **en-US**(默认值):英文'."\n" + ."\n" + .'- **ja**:日文', 'type' => 'string', 'required' => false, 'example' => 'zh-CN'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '实例状态', - 'description' => '网关型负载均衡的实例状态。取值:'."\n" - .'- **Active**:运行中。'."\n" - .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" - .'- **Provisioning**:创建中。'."\n" - .'- **Configuring**:变配中。', - 'type' => 'string', - 'required' => false, - 'example' => 'Active', + 'title' => '', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Regions' => [ + 'description' => '地域列表。', + 'type' => 'array', + 'items' => [ + 'description' => '地域信息对象。', + 'type' => 'object', + 'properties' => [ + 'LocalName' => ['description' => '地域名称。', 'type' => 'string', 'example' => 'China (Hangzhou)'], + 'RegionEndpoint' => ['description' => '地域服务地址。', 'type' => 'string', 'example' => 'gwlb.cn-hangzhou.aliyuncs.com'], + 'RegionId' => ['description' => '地域ID。', 'type' => 'string', 'example' => 'cn-hangzhou'], + ], + ], + ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '162FCE8D-CEEC-5083-90BF-B45D8C4F81FB'], + ], ], ], + ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Regions\\": [\\n {\\n \\"LocalName\\": \\"China (Hangzhou)\\",\\n \\"RegionEndpoint\\": \\"gwlb.cn-hangzhou.aliyuncs.com\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n }\\n ],\\n \\"RequestId\\": \\"162FCE8D-CEEC-5083-90BF-B45D8C4F81FB\\"\\n}","type":"json"}]', + 'title' => '查询地域', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeRegions'], + ], + ], + 'ramActions' => [], + ], + 'DescribeZones' => [ + 'summary' => '查询负载均衡支持可用区。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerBusinessStatus', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '222562', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'AcceptLanguage', 'in' => 'formData', + 'schema' => ['description' => '支持的语言。取值:'."\n" + ."\n" + .'- **zh-CN**:中文'."\n" + ."\n" + .'- **en-US**(默认值):英文'."\n" + ."\n" + .'- **ja**:日文', 'type' => 'string', 'required' => false, 'example' => 'zh-CN'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '实例业务状态', - 'description' => '网关型负载均衡的业务状态。取值:'."\n" - .'- **Normal**:正常状态。'."\n" - .'- **FinancialLocked**:欠费锁定状态。', - 'type' => 'string', - 'required' => false, - 'example' => 'Normal', + 'title' => '', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '4C605F7E-D0F6-54E2-B004-F9B132F0D8B2'], + 'Zones' => [ + 'description' => '可用区列表。', + 'type' => 'array', + 'items' => [ + 'description' => '可用区信息对象。', + 'type' => 'object', + 'properties' => [ + 'LocalName' => ['description' => '可用区名称。', 'type' => 'string', 'example' => 'Hangzhou Zone G'], + 'ZoneId' => ['description' => '可用区ID。', 'type' => 'string', 'example' => 'cn-hangzhou-g'], + ], + ], + ], + ], ], ], + ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4C605F7E-D0F6-54E2-B004-F9B132F0D8B2\\",\\n \\"Zones\\": [\\n {\\n \\"LocalName\\": \\"Hangzhou Zone G\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => '查询可用区', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeZones'], + ], + ], + 'ramActions' => [], + ], + 'GetListenerAttribute' => [ + 'summary' => '查询负载均衡实例的监听器详情。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'LoadBalancerNames', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '221399', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'ListenerId', 'in' => 'formData', - 'style' => 'flat', + 'schema' => ['description' => '监听ID。', 'type' => 'string', 'required' => true, 'example' => 'lsn-brx2y3hqdinciz****'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '负载均衡实例名称', - 'description' => '网关型负载均衡实例名称列表。一次最多支持查询20个实例名称。', - 'type' => 'array', - 'items' => [ - 'description' => '网络型负载均衡实例名称。', - 'type' => 'string', - 'required' => false, - 'example' => 'testGwlbName', + 'title' => '', + 'description' => '请求的返回值。', + 'type' => 'object', + 'properties' => [ + 'ListenerDescription' => ['title' => '监听描述', 'description' => '自定义监听描述。'."\n" + ."\n" + .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', 'type' => 'string', 'example' => 'listener_description'], + 'ListenerId' => ['title' => '', 'description' => '监听ID。', 'type' => 'string', 'example' => 'lsn-3kbj3587mqhm3p****'], + 'ListenerStatus' => ['title' => '监听状态', 'description' => '当前监听的状态。取值:'."\n" + ."\n" + .'- **Provisioning**:创建中。'."\n" + .'- **Running**:运行中。'."\n" + .'- **Configuring**:配置中。'."\n" + .'- **Deleting**:删除中。', 'type' => 'string', 'example' => 'Provisioning'], + 'LoadBalancerId' => ['title' => '负载均衡实例ID', 'description' => '网关型负载均衡实例ID。', 'type' => 'string', 'example' => 'gwlb-te609d6696632f76****'], + 'RegionId' => ['title' => '', 'description' => '网关型负载均衡实例所在的地域 ID。', 'type' => 'string', 'example' => 'cn-hangzhou'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '75CC3312-7757-5EE1-90D8-49CEA66608AE'], + 'ServerGroupId' => ['title' => '服务器组ID', 'description' => '服务器组ID。', 'type' => 'string', 'example' => 'sgp-sp8d2r6y7t0xtl****'], + 'TcpIdleTimeout' => ['title' => 'TCP连接空闲超时时间。', 'description' => 'TCP连接空闲超时时间。', 'type' => 'integer', 'format' => 'int32', 'example' => '350'], + 'Tags' => [ + 'description' => '标签列表。', + 'type' => 'array', + 'items' => [ + 'description' => '标签。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'example' => 'testKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'example' => 'testValue'], + ], + ], + ], ], - 'required' => false, - 'maxItems' => 20, ], ], + ], + 'errorCodes' => [ + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '查询监听详细信息', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerDescription\\": \\"listener_description\\",\\n \\"ListenerId\\": \\"lsn-3kbj3587mqhm3p****\\",\\n \\"ListenerStatus\\": \\"Provisioning\\",\\n \\"LoadBalancerId\\": \\"gwlb-te609d6696632f76****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"75CC3312-7757-5EE1-90D8-49CEA66608AE\\",\\n \\"ServerGroupId\\": \\"sgp-sp8d2r6y7t0xtl****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'GetListenerHealthStatus' => [ + 'summary' => '查询负载均衡实例监听的健康检查状态。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'ResourceGroupId', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '221400', + 'abilityTreeNodes' => ['FEATUREslbL239O5'], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'ListenerId', 'in' => 'formData', - 'schema' => [ - 'title' => '企业资源组标识', - 'description' => '资源组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aek2htf5qsyrn****', - ], + 'schema' => ['description' => '监听ID。', 'type' => 'string', 'required' => true, 'example' => 'lsn-7sixpvm5fc3v0b****'], ], [ - 'name' => 'LoadBalancerIds', + 'name' => 'NextToken', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '实例列表', - 'description' => '网关型负载均衡实例的ID列表。一次最多支持查询20个实例。', - 'type' => 'array', - 'items' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-cp6prgqy40hols****', - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => '4f1d7cc9f51e18904e8a063603a6b0c3d03bc69f78734254e0b5e8707e68****'], ], [ - 'name' => 'TrafficMode', + 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'description' => '流量模式。取值:'."\n" - ."\n" - .'- **LoadBalance**:负载均衡。'."\n" - .'- **ByPass**:绕行模式。', - 'type' => 'string', - 'required' => false, - 'example' => 'LoadBalance', - ], + 'schema' => ['title' => '分页大小', 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值为 20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '1000', 'minimum' => '1', 'example' => '20'], ], [ - 'name' => 'Tag', + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => '分页查询时,跳过的条目数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10'], + ], + [ + 'name' => 'Filter', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'title' => '标签', - 'description' => '标签列表。一次调用最多支持20个标签。', + 'description' => '动态查询条件列表。一次最多添加20个动态查询条件。', 'type' => 'array', 'items' => [ - 'description' => '标签信息对象。', + 'description' => '动态查询条件。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" - ."\n" - .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', + 'Name' => [ + 'description' => '动态查询条件名称,可选择一个或者多个名称进行查询。取值范围:'."\n" + .'- **Status**:健康检查状态。'."\n" + .'- **ReasonCode**:Status 为异常状态时的详细原因。'."\n" + .'- **ServerId**:后端服务器ID。'."\n" + .'- **ServerIp**:后端服务器IP地址。', 'type' => 'string', 'required' => false, - 'example' => 'testTagKey', + 'example' => 'Status', + 'enum' => ['Status', 'ReasonCode', 'ServerId', 'ServerIp'], ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', + 'Values' => [ + 'description' => '动态查询条件的值列表。一次最多添加20个值。', + 'type' => 'array', + 'items' => ['description' => '动态查询条件的值。取值范围参考返回参数中相应字段的取值。', 'type' => 'string', 'required' => false, 'example' => 'Unhealthy'], 'required' => false, - 'example' => 'testTagValue', + 'maxItems' => 20, + 'minItems' => 1, ], ], 'required' => false, ], 'required' => false, 'maxItems' => 20, - ], - ], - [ - 'name' => 'NextToken', - 'in' => 'formData', - 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'required' => false, - 'example' => 'WyJyb290IiwibiIsIm4iLDEsMCwxNjg1MDY1NTgyNzYwLCI2NDcwMGY2ZTc2Zjc0MWFiZGEyZjQyNzc4ZDk2MmJkOTk3ZGZmM2Nm****', - ], - ], - [ - 'name' => 'MaxResults', - 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], - ], - [ - 'name' => 'Skip', - 'in' => 'formData', - 'schema' => [ - 'description' => '查询时跳过指定的条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', + 'minItems' => 1, ], ], ], @@ -1170,177 +1420,114 @@ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'LoadBalancers' => [ - 'description' => '网关型负载均衡实例列表。', + 'ListenerHealthStatus' => [ + 'description' => '监听的服务器组健康检查状态列表。', 'type' => 'array', 'items' => [ - 'description' => '网关型负载均衡实例对象。', + 'description' => '监听的服务器组健康检查状态结构。', 'type' => 'object', 'properties' => [ - 'AddressIpVersion' => [ - 'description' => '协议版本。取值:'."\n" - ."\n" - .'- **IPv4**:IPv4类型。', - 'type' => 'string', - 'example' => 'IPv4', - ], - 'CreateTime' => [ - 'description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', - 'type' => 'string', - 'example' => '2024-08-05T18:24:07Z', - ], - 'LoadBalancerBusinessStatus' => [ - 'description' => '网关型负载均衡的业务状态。取值:'."\n" - .'- **Normal**:正常状态。'."\n" - .'- **FinancialLocked**:欠费锁定状态。', - 'type' => 'string', - 'example' => 'Normal', - ], - 'LoadBalancerId' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - 'LoadBalancerName' => [ - 'description' => '网关型负载均衡实例名称。'."\n" - ."\n" - .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'example' => 'testGwlbName', - ], - 'LoadBalancerStatus' => [ - 'description' => '网关型负载均衡的实例状态。取值:'."\n" - .'- **Active**:运行中。'."\n" - .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" - .'- **Provisioning**:创建中。'."\n" - .'- **Configuring**:变配中。', - 'type' => 'string', - 'example' => 'Active', - ], - 'ResourceGroupId' => [ - 'description' => '资源组ID。', - 'type' => 'string', - 'example' => 'rg-aek26jasguy****', - ], - 'Tags' => [ - 'description' => '标签列表。', - 'type' => 'array', - 'items' => [ - 'description' => '标签对象。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" - ."\n" - .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持输入20个标签值。一旦传入该值,可以为空字符串。'."\n" - ."\n" - .'一个标签值最多支持128个字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-),不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'example' => 'testTagValue', - ], - ], - ], - ], - 'VpcId' => [ - 'description' => '专用网络ID。', - 'type' => 'string', - 'example' => 'vpc-uf6eg0vndlsa84n7r****', - ], - 'ZoneMappings' => [ - 'description' => '可用区及交换机映射列表。至少需要添加一个可用区,最多支持添加20个可用区。若当前地域支持2个及以上的可用区,建议添加2个及以上可用区。', + 'ListenerId' => ['description' => '监听ID。', 'type' => 'string', 'example' => 'lsn-sg8aha6pzjavvo****'], + 'ServerGroupInfos' => [ + 'description' => '服务器组信息列表。', 'type' => 'array', 'items' => [ - 'description' => '可用区及交换机映射对象。', + 'description' => '服务器组信息。', 'type' => 'object', 'properties' => [ - 'LoadBalancerAddresses' => [ - 'description' => '网关型负载均衡实例地址列表。', + 'HealthCheckEnabled' => ['description' => '是否开启健康检查。取值:'."\n" + .'- **true**:开启。'."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'example' => 'true'], + 'ServerGroupId' => ['description' => '服务器组 ID。', 'type' => 'string', 'example' => 'sgp-0vdsbyszro3nr6****'], + 'Servers' => [ + 'description' => '后端服务器列表。', 'type' => 'array', 'items' => [ - 'description' => '网关型负载均衡实例地址对象。', + 'description' => '后端服务器。', 'type' => 'object', 'properties' => [ - 'EniId' => [ - 'description' => '弹性网卡ENI ID。', - 'type' => 'string', - 'example' => 'eni-bp17qv9zbzyqy629****', - ], - 'PrivateIpv4Address' => [ - 'description' => 'IPv4 私网地址。', - 'type' => 'string', - 'example' => '192.168.XX.XX', + 'Port' => ['title' => '服务器端口', 'description' => '后端服务器端口。', 'type' => 'integer', 'format' => 'int32', 'example' => '6081'], + 'Reason' => [ + 'description' => '**Status**为异常状态时的详细原因。', + 'type' => 'object', + 'properties' => [ + 'ReasonCode' => ['description' => '**Status**为异常状态时的详细原因,取值:'."\n" + ."\n" + .'- **CONNECT_TIMEOUT**:负载均衡健康检查时向后端服务器建立连接超时。'."\n" + .'- **CONNECT_FAIL**:负载均衡健康检查时向后端服务器建立连接失败。'."\n" + .'- **RECV_TIMEOUT**:负载均衡健康检查时从后端服务器接收响应超时。'."\n" + .'- **CONNECT_INTERRUPT**:负载均衡健康检查与后端服务器连接中断。'."\n" + .'- **HTTP_CODE_NOT_MATCH**:负载均衡健康 HTTP 检查时从后端服务器接收的响应码与预期配置返回码不一致。'."\n" + .'- **HTTP_INVALID_HEADER**:负载均衡健康 HTTP 检查时从后端服务器接收响应格式错误。', 'type' => 'string', 'example' => 'CONNECT_TIMEOUT'], + ], ], + 'ServerId' => ['title' => '服务器id', 'description' => '后端服务器ID。', 'type' => 'string', 'example' => 'i-2ze4rnh8yj9kif3z****'], + 'ServerIp' => ['title' => '服务器ip', 'description' => '后端服务器IP。', 'type' => 'string', 'example' => '192.168.0.XXX'], + 'Status' => ['description' => '后端服务器健康检查状态。取值:'."\n" + ."\n" + .'- **Initial**:初始化中,表示负载均衡实例配置了健康检查,但查不到数据。'."\n" + .'- **Unhealthy**:异常,表示连续上报不健康的状态。'."\n" + .'- **Unused**:未使用;'."\n" + .'- **Unavailable**:未开启,表示未开启健康检查;'."\n" + .'- **Healthy**:健康检查正常;', 'type' => 'string', 'example' => 'Healthy'], ], ], ], - 'VSwitchId' => [ - 'description' => '可用区对应的交换机,每个可用区默认使用一台交换机和一个子网。', - 'type' => 'string', - 'example' => 'vsw-2zemule5dz7okwqfv****', - ], - 'ZoneId' => [ - 'description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', - 'type' => 'string', - 'example' => 'cn-hangzhou-g', - ], ], ], ], ], ], ], - 'MaxResults' => [ - 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 第一次查询和没有下一次查询时,均无需填写。'."\n" - .'- 如果有下一次查询,取值为上一次API调用返回的NextToken值。', - 'type' => 'string', - 'example' => 'CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '378A80E9-4262-5D8E-8D62-0969E52D7358', - ], - 'TotalCount' => [ - 'description' => '列表条目总数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], + 'MaxResults' => ['description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值为 20。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'example' => 'U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A'], + 'TotalCount' => ['description' => '本次请求条件下的数据总量。', 'type' => 'integer', 'format' => 'int32', 'example' => '31'], ], ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IllegalParam.FilterValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => '动态查询条件的值非法'], + ['errorCode' => 'IllegalParam.FilterName', 'errorMessage' => 'The param of %s is illegal.', 'description' => '动态查询条件名称非法'], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AddressIpVersion\\": \\"IPv4\\",\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"testGwlbName\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ResourceGroupId\\": \\"rg-aek26jasguy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-uf6eg0vndlsa84n7r****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp17qv9zbzyqy629****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-2zemule5dz7okwqfv****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****\\",\\n \\"RequestId\\": \\"378A80E9-4262-5D8E-8D62-0969E52D7358\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]', - 'title' => '查询负载均衡实例列表', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '查询监听健康检查状态', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerHealthStatus'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerHealthStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-sg8aha6pzjavvo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": true,\\n \\"ServerGroupId\\": \\"sgp-0vdsbyszro3nr6****\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"Reason\\": {\\n \\"ReasonCode\\": \\"CONNECT_TIMEOUT\\"\\n },\\n \\"ServerId\\": \\"i-2ze4rnh8yj9kif3z****\\",\\n \\"ServerIp\\": \\"192.168.0.XXX\\",\\n \\"Status\\": \\"Healthy\\"\\n }\\n ]\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****\\",\\n \\"RequestId\\": \\"0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A\\",\\n \\"TotalCount\\": 31\\n}","type":"json"}]', ], 'GetLoadBalancerAttribute' => [ - 'summary' => '查询负载均衡实例详细信息。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -1353,9 +1540,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '221913', - 'abilityTreeNodes' => [ - 'FEATUREslbHRNRPI', - ], + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -1363,12 +1548,7 @@ [ 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => '网关型负载均衡实例的ID', - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], + 'schema' => ['description' => '网关型负载均衡实例的ID', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****'], ], ], 'responses' => [ @@ -1378,56 +1558,24 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'AddressIpVersion' => [ - 'description' => '协议版本。取值:'."\n" - ."\n" - .'- **Ipv4**:Ipv4类型', - 'type' => 'string', - 'example' => 'Ipv4', - ], - 'CreateTime' => [ - 'description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', - 'type' => 'string', - 'example' => '2024-07-08T10:12:58Z', - ], - 'LoadBalancerBusinessStatus' => [ - 'description' => '网关型负载均衡的业务状态。取值:'."\n" - .'- **Normal**:正常状态。'."\n" - .'- **FinancialLocked**:欠费锁定状态。', - 'type' => 'string', - 'example' => 'Normal', - ], - 'LoadBalancerId' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'example' => 'gwlb-9njtjmqt7zfcqm****', - ], - 'LoadBalancerName' => [ - 'description' => '网关型负载均衡实例名称。'."\n" - ."\n" - .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'example' => 'gwlb', - ], - 'LoadBalancerStatus' => [ - 'description' => '网关型负载均衡的实例状态。取值:'."\n" - .'- **Active**:运行中。'."\n" - .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" - .'- **Provisioning**:创建中。'."\n" - .'- **Configuring**:变配中。', - 'type' => 'string', - 'example' => 'Active', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF', - ], - 'ResourceGroupId' => [ - 'description' => '资源组ID。', - 'type' => 'string', - 'example' => 'rg-acfmx7pmxcy****', - ], + 'AddressIpVersion' => ['description' => '协议版本。取值:'."\n" + ."\n" + .'- **Ipv4**:Ipv4类型', 'type' => 'string', 'example' => 'Ipv4'], + 'CreateTime' => ['description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', 'type' => 'string', 'example' => '2024-07-08T10:12:58Z'], + 'LoadBalancerBusinessStatus' => ['description' => '网关型负载均衡的业务状态。取值:'."\n" + .'- **Normal**:正常状态。'."\n" + .'- **FinancialLocked**:欠费锁定状态。', 'type' => 'string', 'example' => 'Normal'], + 'LoadBalancerId' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'example' => 'gwlb-9njtjmqt7zfcqm****'], + 'LoadBalancerName' => ['description' => '网关型负载均衡实例名称。'."\n" + ."\n" + .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'example' => 'gwlb'], + 'LoadBalancerStatus' => ['description' => '网关型负载均衡的实例状态。取值:'."\n" + .'- **Active**:运行中。'."\n" + .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" + .'- **Provisioning**:创建中。'."\n" + .'- **Configuring**:变配中。', 'type' => 'string', 'example' => 'Active'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF'], + 'ResourceGroupId' => ['description' => '资源组ID。', 'type' => 'string', 'example' => 'rg-acfmx7pmxcy****'], 'Tags' => [ 'description' => '标签列表。', 'type' => 'array', @@ -1435,26 +1583,14 @@ 'description' => '标签对象。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" - ."\n" - .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'example' => 'testTagValue', - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" + ."\n" + .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'example' => 'testTagValue'], ], ], ], - 'VpcId' => [ - 'description' => '专有网络ID。', - 'type' => 'string', - 'example' => 'vpc-k1aajsbwbaq4todet****', - ], + 'VpcId' => ['description' => '专有网络ID。', 'type' => 'string', 'example' => 'vpc-k1aajsbwbaq4todet****'], 'ZoneMappings' => [ 'description' => '可用区及交换机映射列表。至少需要添加一个可用区,最多支持添加20个可用区。若当前地域支持2个及以上的可用区,建议添加2个及以上可用区。', 'type' => 'array', @@ -1469,1253 +1605,506 @@ 'description' => '网关型负载均衡实例地址对象。', 'type' => 'object', 'properties' => [ - 'EniId' => [ - 'description' => '弹性网卡ENI ID。', - 'type' => 'string', - 'example' => 'eni-bp1iahwz3rzgvltz****', - ], - 'PrivateIpv4Address' => [ - 'description' => 'IPv4 私网地址。', - 'type' => 'string', - 'example' => '192.168.XX.XX', - ], + 'EniId' => ['description' => '弹性网卡ENI ID。', 'type' => 'string', 'example' => 'eni-bp1iahwz3rzgvltz****'], + 'PrivateIpv4Address' => ['description' => 'IPv4 私网地址。', 'type' => 'string', 'example' => '192.168.XX.XX'], ], ], ], - 'VSwitchId' => [ - 'description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', - 'type' => 'string', - 'example' => 'vsw-uf6v8l7d2f1k53xrl****', - ], - 'ZoneId' => [ - 'description' => '可用区ID。', - 'type' => 'string', - 'example' => 'cn-hangzhou-j', - ], + 'VSwitchId' => ['description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', 'type' => 'string', 'example' => 'vsw-uf6v8l7d2f1k53xrl****'], + 'ZoneId' => ['description' => '可用区ID。', 'type' => 'string', 'example' => 'cn-hangzhou-j'], ], ], ], - 'TrafficMode' => [ - 'description' => '流量模式。取值:'."\n" - ."\n" - .'- **LoadBalance**:负载均衡。'."\n" - .'- **ByPass**:绕行模式。', - 'type' => 'string', - 'example' => 'LoadBalance', - ], + 'TrafficMode' => ['description' => '流量模式。取值:'."\n" + ."\n" + .'- **LoadBalance**:负载均衡。'."\n" + .'- **ByPass**:绕行模式。', 'type' => 'string', 'example' => 'LoadBalance'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'MissingParam.LoadBalancerId', - 'errorMessage' => 'The param of LoadBalancerId is missing.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => '负载均衡ID参数缺失'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AddressIpVersion\\": \\"Ipv4\\",\\n \\"CreateTime\\": \\"2024-07-08T10:12:58Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"gwlb\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"RequestId\\": \\"B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF\\",\\n \\"ResourceGroupId\\": \\"rg-acfmx7pmxcy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-k1aajsbwbaq4todet****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp1iahwz3rzgvltz****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-uf6v8l7d2f1k53xrl****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-j\\"\\n }\\n ],\\n \\"TrafficMode\\": \\"LoadBalance\\"\\n}","type":"json"}]', + 'staticInfo' => ['returnType' => 'synchronous'], 'title' => '查询负载均衡实例详细信息', - ], - 'CreateServerGroup' => [ - 'summary' => '创建负载均衡服务器组。', - 'methods' => [ - 'post', - 'get', + 'summary' => '查询负载均衡实例详细信息。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetLoadBalancerAttribute'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AddressIpVersion\\": \\"Ipv4\\",\\n \\"CreateTime\\": \\"2024-07-08T10:12:58Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"gwlb\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"RequestId\\": \\"B6DC5DDC-9560-59BF-80FA-ED1E5CB417DF\\",\\n \\"ResourceGroupId\\": \\"rg-acfmx7pmxcy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-k1aajsbwbaq4todet****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp1iahwz3rzgvltz****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-uf6v8l7d2f1k53xrl****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-j\\"\\n }\\n ],\\n \\"TrafficMode\\": \\"LoadBalance\\"\\n}","type":"json"}]', + ], + 'ListListeners' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225035', - 'abilityTreeNodes' => [ - 'FEATUREslb88O4KB', - 'FEATUREslb98XMCW', - 'FEATUREslb4EL8LZ', - 'FEATUREslb5QFSS9', - ], + 'abilityTreeCode' => '221401', + 'abilityTreeNodes' => ['FEATUREslbC68LB1'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupType', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组类型', - 'description' => '服务器组类型。取值:'."\n" - ."\n" - .'- **Instance**(默认值):服务器类型,该类型服务器组支持添加**Ecs**、**Eni**、**Eci**类型实例。'."\n" - ."\n" - .'- **Ip**:IP地址类型,该类型服务器组支持直接添加IP地址类型的后端服务器。', - 'type' => 'string', - 'required' => false, - 'example' => 'Instance', - 'enum' => [ - 'Instance', - 'Ip', - ], - ], - ], - [ - 'name' => 'ServerGroupName', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组名称', - 'description' => '服务器组名称。'."\n" - ."\n" - .'长度为2~128个字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'required' => false, - 'example' => 'testServerGroupName', - ], - ], - [ - 'name' => 'Protocol', - 'in' => 'formData', - 'schema' => [ - 'title' => '后端服务器类型', - 'description' => '后端转发协议。取值:'."\n" - ."\n" - .'- **GENEVE**(默认值)。', - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [ - 'GENEVE' => 'GENEVE', - ], - 'example' => 'GENEVE', - 'enum' => [ - 'GENEVE', - ], - ], - ], - [ - 'name' => 'Scheduler', + 'name' => 'ListenerIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '会话保持类型', - 'description' => '调度算法。取值:'."\n" - ."\n" - .'- **5TCH**(默认值):五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', - 'type' => 'string', + 'description' => '监听ID列表,最多支持20个监听ID。', + 'type' => 'array', + 'items' => ['description' => '监听ID。', 'type' => 'string', 'required' => false, 'example' => 'lsn-w3t3vpgjj12b2i****'], 'required' => false, - 'example' => '5TCH', - 'enum' => [ - '5TCH', - '3TCH', - '2TCH', - ], + 'maxItems' => 20, + 'minItems' => 1, ], ], [ - 'name' => 'ServerFailoverMode', + 'name' => 'LoadBalancerIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '', - 'description' => '服务器异常时,存量流量的处理方式。取值:'."\n" - ."\n" - .'- **NoRebalance(默认值)**:不重新平衡现有流量。'."\n" - .'- **Rebalance**:重新平衡现有流量。', - 'type' => 'string', + 'description' => '网关型负载均衡实例ID。最多支持20个实例ID。', + 'type' => 'array', + 'items' => ['description' => '网关型负载均衡实例ID。', 'type' => 'string', 'required' => false, 'example' => 'gwlb-rbtjolkkbudmrr****'], 'required' => false, - 'example' => 'NoRebalance', - 'enum' => [ - 'NoRebalance', - 'Rebalance', - ], - ], - ], - [ - 'name' => 'VpcId', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组所在vpc的id', - 'description' => 'VPC实例ID。'."\n" - ."\n" - .'> 如果**ServerGroupType**取值为**Instance**时,只有该VPC下的服务器可以加入到该服务器组。', - 'type' => 'string', - 'required' => true, - 'docRequired' => false, - 'example' => 'vpc-bp15zckdt37pq72zv****', + 'maxItems' => 20, + 'minItems' => 1, ], ], [ - 'name' => 'ResourceGroupId', + 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => '企业资源组id', - 'description' => '资源组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'rg-atstuj3rtop****', - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => 'd209f4e63ec942c967c50c888a13****'], ], [ - 'name' => 'ConnectionDrainConfig', + 'name' => 'MaxResults', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '连接优雅中断配置', - 'description' => '连接优雅中断相关配置。', - 'type' => 'object', - 'properties' => [ - 'ConnectionDrainEnabled' => [ - 'title' => '是否开启连接优雅中断', - 'description' => '是否开启连接优雅中断。取值:'."\n" - ."\n" - .'- **true**:开启。'."\n" - ."\n" - .'- **false**(默认值):关闭。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'ConnectionDrainTimeout' => [ - 'title' => '连接优雅中断超时时间', - 'description' => '连接优雅中断超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**3600**。'."\n" - ."\n" - .'默认值:**300**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '300', - ], - ], - 'required' => false, - ], - ], - [ - 'name' => 'HealthCheckConfig', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '健康检查配置', - 'description' => '健康检查相关配置。', - 'type' => 'object', - 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => '健康检查使用的后端服务器的端口。'."\n" - ."\n" - .'取值范围: **1**~**65535**。'."\n" - ."\n" - .'默认值:**80**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => '健康检查响应的最大超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**300**。'."\n" - ."\n" - .'默认值:**5**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => '用于健康检查的域名。取值:'."\n" - ."\n" - .'- **$SERVER_IP**(默认值):使用后端服务器内网IP。'."\n" - ."\n" - .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => '是否开启健康检查,取值:'."\n" - ."\n" - .'- **true**(默认值):开启。'."\n" - ."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HealthCheckHttpCode' => [ - 'title' => '状态码,多个状态码用逗号分隔', - 'description' => '健康状态返回码列表。', - 'type' => 'array', - 'items' => [ - 'description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" - .'取值:'."\n" - .'- **http\\_2xx**'."\n" - .'- **http\\_3xx**'."\n" - .'- **http\\_4xx**'."\n" - .'- **http\\_5xx**'."\n" - ."\n" - .'默认值:**http\\_2xx** 。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => 'http_2xx', - 'enum' => [ - 'http_2xx', - 'http_3xx', - 'http_4xx', - 'http_5xx', - ], - ], - 'required' => false, - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => '健康检查的时间间隔。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**50**。'."\n" - ."\n" - .'默认值:**10**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => '健康检查路径。'."\n" - ."\n" - .'长度为1~80个字符,只能使用大小写英文字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和and(&)以及扩展字符集_;~!()*[]@$^:\',+='."\n" - ."\n" - .'必须以正斜线(/)开头。'."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => '健康检查协议,取值:'."\n" - ."\n" - .'- **TCP**(默认值):通过发送SYN握手报文来检测服务器端口是否存活。'."\n" - ."\n" - .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', - 'type' => 'string', - 'required' => false, - 'example' => 'TCP', - 'enum' => [ - 'TCP', - 'HTTP', - ], - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" - ."\n" - .'取值范围:**2**~**10**。'."\n" - ."\n" - .'默认值:**2**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" - ."\n" - .'取值范围:**2**~**10**。'."\n" - ."\n" - .'默认值:**2**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - ], - 'required' => false, - ], + 'schema' => ['title' => '分页大小', 'description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], ], [ 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'title' => '标签列表', - 'description' => '标签列表。'."\n" - ."\n" - .'一次调用最多支持 20 个标签。', + 'description' => '标签列表。一次调用最多支持 20 个标签。', 'type' => 'array', 'items' => [ 'description' => '标签。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" + ."\n" + .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'tagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'tagValue'], ], 'required' => false, ], 'required' => false, 'maxItems' => 20, + 'minItems' => 1, ], ], [ - 'name' => 'DryRun', - 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会创建服务器组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'False', - ], - ], - [ - 'name' => 'ClientToken', + 'name' => 'Skip', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['description' => '分页查询时,跳过的条目数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '', + 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - 'ServerGroupId' => [ - 'description' => '服务器组ID。', - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', + 'Listeners' => [ + 'description' => '网关型负载均衡监听列表。', + 'type' => 'array', + 'items' => [ + 'description' => '监听信息。', + 'type' => 'object', + 'properties' => [ + 'ListenerDescription' => ['title' => '监听描述', 'description' => '监听描述。', 'type' => 'string', 'example' => 'listener-description'], + 'ListenerId' => ['title' => '自己生成后赋值', 'description' => '监听ID。', 'type' => 'string', 'example' => 'lsn-vu7folhh5ntm8u****'], + 'ListenerStatus' => ['title' => '监听状态', 'description' => '当前监听的状态,取值:'."\n" + ."\n" + .'- **Provisioning**:创建中。'."\n" + .'- **Running**:运行中。'."\n" + .'- **Configuring**:配置中。'."\n" + .'- **Deleting**:删除中。', 'type' => 'string', 'example' => 'Running'], + 'LoadBalancerId' => ['title' => '负载均衡实例ID', 'description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'example' => 'gwlb-uf6hbeh795xlqln7g****'], + 'ServerGroupId' => ['title' => '服务器组ID', 'description' => '服务器组ID。', 'type' => 'string', 'example' => 'sgp-5yapcb422i51ru****'], + 'TcpIdleTimeout' => ['title' => 'TCP连接空闲超时时间。', 'description' => 'TCP连接空闲超时时间。', 'type' => 'integer', 'format' => 'int32', 'example' => '350'], + 'Tags' => [ + 'description' => '标签列表。', + 'type' => 'array', + 'items' => [ + 'description' => '标签列表。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。', 'type' => 'string', 'example' => 'testKey'], + 'Value' => ['description' => '标签值。', 'type' => 'string', 'example' => 'testValue'], + ], + ], + ], + ], + ], ], + 'MaxResults' => ['description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'example' => '5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9'], + 'TotalCount' => ['description' => '列表条目总数。', 'type' => 'integer', 'format' => 'int32', 'example' => '8'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IllegalParam.HealthCheckProtocol', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupsNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => '标签键参数缺失'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Vpc', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '查询监听列表', + 'summary' => '查询负载均衡监听列表。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListListeners'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroups', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListListeners', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\"\\n}","type":"json"}]', - 'title' => '创建服务器组', - 'description' => '**CreateServerGroup**接口属于异步接口,即系统返回一个请求ID,但该服务器组尚未创建成功,系统后台的创建任务仍在进行。您可以调用 ListServerGroups 查询服务器组的创建状态:'."\n" - .'- 当服务器组处于**Creating**状态时,表示服务器组正在创建中。'."\n" - .'- 当服务器组处于**Available**状态时,表示服务器组创建成功。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Listeners\\": [\\n {\\n \\"ListenerDescription\\": \\"listener-description\\",\\n \\"ListenerId\\": \\"lsn-vu7folhh5ntm8u****\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"gwlb-uf6hbeh795xlqln7g****\\",\\n \\"ServerGroupId\\": \\"sgp-5yapcb422i51ru****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****\\",\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\",\\n \\"TotalCount\\": 8\\n}","type":"json"}]', ], - 'UpdateServerGroupAttribute' => [ - 'summary' => '更新负载均衡服务器组属性。', - 'methods' => [ - 'get', - 'post', - ], - 'schemes' => [ - 'https', - ], + 'ListLoadBalancers' => [ + 'summary' => '查询负载均衡实例列表。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225039', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '221914', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupId', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组ID', - 'description' => '服务器组ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], - ], - [ - 'name' => 'ServerGroupName', + 'name' => 'ZoneIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '服务器组名称', - 'description' => '服务器组名称。'."\n" - ."\n" - .'长度为2~128个字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', - 'type' => 'string', + 'description' => '可用区ID列表。一次最多支持查询20个可用区ID。', + 'type' => 'array', + 'items' => ['description' => '可用区ID。', 'type' => 'string', 'required' => false, 'example' => 'cn-beijing-h'], 'required' => false, - 'example' => 'testServerGroupName', + 'maxItems' => 20, ], ], [ - 'name' => 'Scheduler', + 'name' => 'VpcIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '会话保持类型', - 'description' => '调度算法。取值:'."\n" - ."\n" - .'- **5TCH**:五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', - 'type' => 'string', + 'title' => '专有网络唯一标识', + 'description' => '专有网络ID列表。一次最多支持查询20个VPC ID。', + 'type' => 'array', + 'items' => ['description' => '专用网络ID。', 'type' => 'string', 'required' => false, 'example' => 'vpc-bp1xuejaht4o7yhh2****'], 'required' => false, - 'example' => '5TCH', - 'enum' => [ - '5TCH', - '3TCH', - '2TCH', - ], + 'maxItems' => 20, ], ], [ - 'name' => 'ServerFailoverMode', + 'name' => 'AddressIpVersion', 'in' => 'formData', 'schema' => [ - 'description' => '服务器异常时,存量流量的处理方式。取值:'."\n" + 'title' => '协议类型', + 'description' => '协议版本。取值:'."\n" ."\n" - .'- **NoRebalance**:不重新平衡现有流量。'."\n" - .'- **Rebalance**:重新平衡现有流量。', + .'- **Ipv4**:Ipv4类型。', 'type' => 'string', 'required' => false, - 'example' => 'NoRebalance', - 'enum' => [ - 'NoRebalance', - 'Rebalance', - ], + 'enumValueTitles' => ['IPv4' => 'IPv4', 'DualStack' => 'DualStack'], + 'example' => 'Ipv4', + 'enum' => [], ], ], [ - 'name' => 'ConnectionDrainConfig', + 'name' => 'LoadBalancerStatus', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '连接优雅中断配置', - 'description' => '连接优雅中断相关配置。', - 'type' => 'object', - 'properties' => [ - 'ConnectionDrainEnabled' => [ - 'title' => '是否开启连接优雅中断', - 'description' => '是否开启连接优雅中断。取值:'."\n" - ."\n" - .'- **true**:开启。'."\n" - ."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - 'ConnectionDrainTimeout' => [ - 'title' => '连接优雅中断超时时间', - 'description' => '连接优雅中断超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**3600**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '300', - ], - ], - 'required' => false, - ], + 'schema' => ['title' => '实例状态', 'description' => '网关型负载均衡的实例状态。取值:'."\n" + .'- **Active**:运行中。'."\n" + .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" + .'- **Provisioning**:创建中。'."\n" + .'- **Configuring**:变配中。', 'type' => 'string', 'required' => false, 'example' => 'Active'], ], [ - 'name' => 'HealthCheckConfig', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'title' => '健康检查配置', - 'description' => '健康检查相关配置。', - 'type' => 'object', - 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => '健康检查使用的后端服务器的端口。'."\n" - ."\n" - .'取值范围: **1**~**65535**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => '健康检查响应的最大超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**300**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => '用于健康检查的域名。取值:'."\n" - ."\n" - .'- **$SERVER_IP**:使用后端服务器内网IP。'."\n" - ."\n" - .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => '是否开启健康检查,取值:'."\n" - ."\n" - .'- **true**:开启。'."\n" - ."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - 'HealthCheckHttpCode' => [ - 'title' => '状态码,多个状态码用逗号分隔', - 'description' => '健康状态返回码列表。', - 'type' => 'array', - 'items' => [ - 'description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" - .'取值:'."\n" - .'- **http\\_2xx**:返回HttpCode为2xx视为健康状态。'."\n" - .'- **http\\_3xx**:返回HttpCode为3xx视为健康状态。'."\n" - .'- **http\\_4xx**:返回HttpCode为4xx视为健康状态。'."\n" - .'- **http\\_5xx**:返回HttpCode为5xx视为健康状态。'."\n" - ."\n" - .'默认值:**http\\_2xx** 。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => 'http_2xx', - 'enum' => [ - 'http_2xx', - 'http_3xx', - 'http_4xx', - 'http_5xx', - ], - ], - 'required' => false, - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => '健康检查的时间间隔。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**50**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => '健康检查路径。'."\n" - ."\n" - .'长度为1~80个字符,只能使用大小写英文字母、数字、字符`-/.%?#&`。 必须以正斜线(/)开头。'."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'required' => false, - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => '健康检查协议,取值:'."\n" - ."\n" - .'- **TCP**:通过发送SYN握手报文来检测服务器端口是否存活。'."\n" - ."\n" - .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', - 'type' => 'string', - 'required' => false, - 'example' => 'TCP', - 'enum' => [ - 'TCP', - 'HTTP', - ], - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" - ."\n" - .'取值范围:**2**~**10**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" - ."\n" - .'取值范围:**2**~**10**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], - ], - 'required' => false, - ], - ], - [ - 'name' => 'DryRun', + 'name' => 'LoadBalancerBusinessStatus', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会更新服务器组信息。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => '实例业务状态', 'description' => '网关型负载均衡的业务状态。取值:'."\n" + .'- **Normal**:正常状态。'."\n" + .'- **FinancialLocked**:欠费锁定状态。', 'type' => 'string', 'required' => false, 'example' => 'Normal'], ], [ - 'name' => 'ClientToken', + 'name' => 'LoadBalancerNames', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', + 'title' => '负载均衡实例名称', + 'description' => '网关型负载均衡实例名称列表。一次最多支持查询20个实例名称。', + 'type' => 'array', + 'items' => ['description' => '网络型负载均衡实例名称。', 'type' => 'string', 'required' => false, 'example' => 'testGwlbName'], 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => '返回数据结构体。', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'."\n", - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IllegalParam.HealthCheckProtocol', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'OperationDenied.SchedulerNotConfigurable', - 'errorMessage' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroups', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\\\n\\"\\n}","type":"json"}]', - 'title' => '更新服务器组属性', - 'description' => '**UpdateServerGroupAttribute**接口属于异步接口,即系统返回一个请求ID,但该服务器组的配置尚未更新成功,系统后台的更新任务仍在进行。您可以调用 ListServerGroups 查询服务器组的配置的更新状态:'."\n" - .'- 当服务器组的配置处于**Configuring**状态时,表示服务器组的配置正在更新中。'."\n" - .'- 当服务器组的配置处于**Available**状态时,表示服务器组的配置更新成功。', - ], - 'DeleteServerGroup' => [ - 'summary' => '删除负载均衡服务器组。', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225038', - 'abilityTreeNodes' => [ - 'FEATUREslb5QFSS9', - ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', - ], - 'parameters' => [ - [ - 'name' => 'ServerGroupId', - 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组ID', - 'description' => '服务器组ID', - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', + 'maxItems' => 20, ], ], [ - 'name' => 'DryRun', + 'name' => 'ResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求,取值:'."\n" - .'- **true**:发送检查请求,不会删除服务器组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2XX状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => '企业资源组标识', 'description' => '资源组ID。', 'type' => 'string', 'required' => false, 'example' => 'rg-aek2htf5qsyrn****'], ], [ - 'name' => 'ClientToken', + 'name' => 'LoadBalancerIds', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', + 'title' => '实例列表', + 'description' => '网关型负载均衡实例的ID列表。一次最多支持查询20个实例。', + 'type' => 'array', + 'items' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'required' => false, 'example' => 'gwlb-cp6prgqy40hols****'], 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => '返回数据结构体。', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IncorrectStatus.BackendServer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'ResourceInUse.ServerGroup', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + 'maxItems' => 20, ], ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - 'title' => '删除服务器组', - 'description' => '服务器组未被任何监听使用时支持删除。', - ], - 'AddServersToServerGroup' => [ - 'summary' => '向负载均衡服务器组中添加后端服务器。', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225056', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', - ], - 'parameters' => [ [ - 'name' => 'ServerGroupId', + 'name' => 'TrafficMode', 'in' => 'formData', - 'schema' => [ - 'description' => '服务器组ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'schema' => ['description' => '流量模式。取值:'."\n" + ."\n" + .'- **LoadBalance**:负载均衡。'."\n" + .'- **ByPass**:绕行模式。', 'type' => 'string', 'required' => false, 'example' => 'LoadBalance'], ], [ - 'name' => 'Servers', + 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '后端服务器列表。'."\n" - ."\n" - .'> 单次调用最多支持传入200个服务器。', + 'title' => '标签', + 'description' => '标签列表。一次调用最多支持20个标签。', 'type' => 'array', 'items' => [ - 'description' => '后端服务器。', + 'description' => '标签信息对象。', 'type' => 'object', 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => '后端服务器使用的端口,取值:'."\n" - ."\n" - .'- **6081**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '6081', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => '后端服务器ID。'."\n" - ."\n" - .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" - ."\n" - .'- 当服务器组为**Ip**类型时,该参数为IP地址。', - 'type' => 'string', - 'required' => true, - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => '后端服务器IP地址。', - 'type' => 'string', - 'required' => false, - 'example' => '192.168.XX.XX', - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => '后端服务器类型,取值:'."\n" - ."\n" - .'- **Ecs**:ECS实例。'."\n" - .'- **Eni**:ENI弹性网卡实例。'."\n" - .'- **Eci**:ECI弹性容器。'."\n" - .'- **Ip**:Ip地址。', - 'type' => 'string', - 'required' => true, - 'example' => 'Ecs', - 'enum' => [ - 'Ecs', - 'Eni', - 'Eci', - 'Ip', - ], - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" + ."\n" + .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagValue'], ], 'required' => false, ], - 'required' => true, - 'maxItems' => 200, + 'required' => false, + 'maxItems' => 20, ], ], [ - 'name' => 'DryRun', + 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求,取值:'."\n" - .'- **true**:发送检查请求,不会向服务器组中添加后端服务器。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => 'WyJyb290IiwibiIsIm4iLDEsMCwxNjg1MDY1NTgyNzYwLCI2NDcwMGY2ZTc2Zjc0MWFiZGEyZjQyNzc4ZDk2MmJkOTk3ZGZmM2Nm****'], ], [ - 'name' => 'ClientToken', + 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '分页大小', 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值:20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], + ], + [ + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => '查询时跳过指定的条目数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '返回数据结构体。', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + 'LoadBalancers' => [ + 'description' => '网关型负载均衡实例列表。', + 'type' => 'array', + 'items' => [ + 'description' => '网关型负载均衡实例对象。', + 'type' => 'object', + 'properties' => [ + 'AddressIpVersion' => ['description' => '协议版本。取值:'."\n" + ."\n" + .'- **IPv4**:IPv4类型。', 'type' => 'string', 'example' => 'IPv4'], + 'CreateTime' => ['description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', 'type' => 'string', 'example' => '2024-08-05T18:24:07Z'], + 'LoadBalancerBusinessStatus' => ['description' => '网关型负载均衡的业务状态。取值:'."\n" + .'- **Normal**:正常状态。'."\n" + .'- **FinancialLocked**:欠费锁定状态。', 'type' => 'string', 'example' => 'Normal'], + 'LoadBalancerId' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'example' => 'gwlb-9njtjmqt7zfcqm****'], + 'LoadBalancerName' => ['description' => '网关型负载均衡实例名称。'."\n" + ."\n" + .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'example' => 'testGwlbName'], + 'LoadBalancerStatus' => ['description' => '网关型负载均衡的实例状态。取值:'."\n" + .'- **Active**:运行中。'."\n" + .'- **Inactive**:已停止,表示实例监听不会再转发流量。'."\n" + .'- **Provisioning**:创建中。'."\n" + .'- **Configuring**:变配中。', 'type' => 'string', 'example' => 'Active'], + 'ResourceGroupId' => ['description' => '资源组ID。', 'type' => 'string', 'example' => 'rg-aek26jasguy****'], + 'Tags' => [ + 'description' => '标签列表。', + 'type' => 'array', + 'items' => [ + 'description' => '标签对象。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" + ."\n" + .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持输入20个标签值。一旦传入该值,可以为空字符串。'."\n" + ."\n" + .'一个标签值最多支持128个字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-),不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'example' => 'testTagValue'], + ], + ], + ], + 'VpcId' => ['description' => '专用网络ID。', 'type' => 'string', 'example' => 'vpc-uf6eg0vndlsa84n7r****'], + 'ZoneMappings' => [ + 'description' => '可用区及交换机映射列表。至少需要添加一个可用区,最多支持添加20个可用区。若当前地域支持2个及以上的可用区,建议添加2个及以上可用区。', + 'type' => 'array', + 'items' => [ + 'description' => '可用区及交换机映射对象。', + 'type' => 'object', + 'properties' => [ + 'LoadBalancerAddresses' => [ + 'description' => '网关型负载均衡实例地址列表。', + 'type' => 'array', + 'items' => [ + 'description' => '网关型负载均衡实例地址对象。', + 'type' => 'object', + 'properties' => [ + 'EniId' => ['description' => '弹性网卡ENI ID。', 'type' => 'string', 'example' => 'eni-bp17qv9zbzyqy629****'], + 'PrivateIpv4Address' => ['description' => 'IPv4 私网地址。', 'type' => 'string', 'example' => '192.168.XX.XX'], + ], + ], + ], + 'VSwitchId' => ['description' => '可用区对应的交换机,每个可用区默认使用一台交换机和一个子网。', 'type' => 'string', 'example' => 'vsw-2zemule5dz7okwqfv****'], + 'ZoneId' => ['description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', 'type' => 'string', 'example' => 'cn-hangzhou-g'], + ], + ], + ], + ], + ], ], + 'MaxResults' => ['description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值:20。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 第一次查询和没有下一次查询时,均无需填写。'."\n" + .'- 如果有下一次查询,取值为上一次API调用返回的NextToken值。', 'type' => 'string', 'example' => 'CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '378A80E9-4262-5D8E-8D62-0969E52D7358'], + 'TotalCount' => ['description' => '列表条目总数。', 'type' => 'integer', 'format' => 'int32', 'example' => '100'], ], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Conflict.Server', - 'errorMessage' => 'The %s [%s] is conflict.', - ], - [ - 'errorCode' => 'Mismatch.ServerType', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IllegalParam.ServerIp', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.EcsNetworkType', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'DuplicatedParam.Server', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'ResourceInUse.Eni', - 'errorMessage' => 'The specified resource of %s is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.Eni', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IllegalParam.IP', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'Mismatch.IP', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupServersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'QuotaExceeded.ServerGroupAzServersNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Eni', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Eci', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Ecs', - 'errorMessage' => 'The specified resource of %s is not found.', + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LoadBalancers\\": [\\n {\\n \\"AddressIpVersion\\": \\"IPv4\\",\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"LoadBalancerBusinessStatus\\": \\"Normal\\",\\n \\"LoadBalancerId\\": \\"gwlb-9njtjmqt7zfcqm****\\",\\n \\"LoadBalancerName\\": \\"testGwlbName\\",\\n \\"LoadBalancerStatus\\": \\"Active\\",\\n \\"ResourceGroupId\\": \\"rg-aek26jasguy****\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-uf6eg0vndlsa84n7r****\\",\\n \\"ZoneMappings\\": [\\n {\\n \\"LoadBalancerAddresses\\": [\\n {\\n \\"EniId\\": \\"eni-bp17qv9zbzyqy629****\\",\\n \\"PrivateIpv4Address\\": \\"192.168.XX.XX\\"\\n }\\n ],\\n \\"VSwitchId\\": \\"vsw-2zemule5dz7okwqfv****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"CAESGgoSChAKDGNvbXBsZXRlVGltZRABCgQiAggAGAAiQAoJAIldD2UAAAAACjMDLgAAADFTNzMyZDMwMzAzMDY5NzQzNDM0NmI3NzM2NjUzNzc4NzM2YTc0NjYzOTYz****\\",\\n \\"RequestId\\": \\"378A80E9-4262-5D8E-8D62-0969E52D7358\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]', + 'title' => '查询负载均衡实例列表', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListLoadBalancers'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListLoadBalancers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - 'title' => '服务器组中添加后端服务器', - 'description' => '**AddServersToServerGroup**接口属于异步接口,即系统返回一个请求ID,但该后端服务器尚未添加成功,系统后台的添加任务仍在进行。'."\n" - ."\n" - .'1. 您可以调用 ListServerGroups 查询服务器组的状态:'."\n" - ."\n" - .'- 当服务器组处于**Configuring**状态时,表示服务器组正在变配中。'."\n" - .'- 当服务器组处于**Available**状态时,表示服务器组运行中。'."\n" - ."\n" - .'2. 您可以调用 ListServerGroupServers 查询后端服务器的状态:'."\n" - ."\n" - .'- 当后端服务器处于**Adding**状态时,表示后端服务器正在加入服务器组。'."\n" - .'- 当后端服务器处于**Available**状态时,表示后端服务器运行中。', ], - 'RemoveServersFromServerGroup' => [ - 'summary' => '从负载均衡服务器组中移除后端服务器。', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'ListServerGroupServers' => [ + 'summary' => '查询负载均衡服务器组中的服务器列表。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225065', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '225066', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -2723,106 +2112,60 @@ [ 'name' => 'ServerGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => '服务器组ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'schema' => ['description' => '服务器组ID。', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****'], ], [ - 'name' => 'Servers', + 'name' => 'ServerIds', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '后端服务器列表。'."\n" + 'description' => '服务器ID列表。'."\n" ."\n" - .'> 单次调用最多支持传入200个服务器。', + .'单次调用最多支持展示200个服务器。', 'type' => 'array', - 'items' => [ - 'description' => '后端服务器。', - 'type' => 'object', - 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => '后端服务器使用的端口,取值:'."\n" - ."\n" - .'- **6081**。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '6081', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => '后端服务器ID。'."\n" - ."\n" - .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" - ."\n" - .'- 当服务器组为**Ip**类型时,该参数为IP地址。', - 'type' => 'string', - 'required' => true, - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => '后端服务器IP地址。', - 'type' => 'string', - 'required' => false, - 'example' => '192.168.xxx.xxx'."\n", - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => '后端服务器类型,取值:'."\n" - ."\n" - .'- **Ecs**:ECS实例。'."\n" - .'- **Eni**:ENI弹性网卡实例。'."\n" - .'- **Eci**:ECI弹性容器。'."\n" - .'- **Ip**:Ip地址。', - 'type' => 'string', - 'required' => true, - 'example' => 'Ecs', - 'enum' => [ - 'Ecs', - 'Eni', - 'Eci', - 'Ip', - ], - ], - ], - 'required' => false, - ], - 'required' => true, + 'items' => ['description' => '服务器ID。'."\n" + ."\n" + .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" + ."\n" + .'- 当服务器组为**Ip**类型时,该参数为IP地址。', 'type' => 'string', 'required' => false, 'example' => 'i-bp67acfmxazb4p****'], + 'required' => false, 'maxItems' => 200, ], ], [ - 'name' => 'DryRun', + 'name' => 'ServerIps', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求,取值:'."\n" - .'- **true**:发送检查请求,不会从服务器组中移除后端服务器。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', + 'description' => '服务器IP地址列表。'."\n" + ."\n" + .'单次调用最多支持展示200个服务器。', + 'type' => 'array', + 'items' => ['description' => '服务器IP地址。', 'type' => 'string', 'required' => false, 'example' => '192.168.xxx.xxx'], 'required' => false, - 'example' => 'false', + 'maxItems' => 200, ], ], [ - 'name' => 'ClientToken', + 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], + ], + [ + 'name' => 'MaxResults', + 'in' => 'formData', + 'schema' => ['title' => '分页大小', 'description' => '分批次查询时每次显示的条目数。'."\n" + ."\n" + .'取值范围:1~1000。'."\n" + ."\n" + .'默认值:20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], + ], + [ + 'name' => 'Skip', + 'in' => 'formData', + 'schema' => ['description' => '查询时跳过指定的条目数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], ], 'responses' => [ @@ -2832,66 +2175,74 @@ 'description' => '返回数据结构体。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', + 'MaxResults' => ['description' => '分批次查询时每次显示的条目数。'."\n" + ."\n" + .'取值范围:1~1000。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 第一次查询和没有下一次查询时,均无需填写。'."\n" + .'- 如果有下一次查询,取值为上一次API调用返回的NextToken值。', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], + 'Servers' => [ + 'description' => '后端服务器列表。', + 'type' => 'array', + 'items' => [ + 'description' => '后端服务器。', + 'type' => 'object', + 'properties' => [ + 'Port' => ['title' => '服务器端口', 'description' => '后端服务器使用的端口,取值:'."\n" + ."\n" + .'- **6081**。', 'type' => 'integer', 'format' => 'int32', 'example' => '6081'], + 'ServerGroupId' => ['title' => '服务器所属的服务器组ID', 'description' => '服务器组ID。', 'type' => 'string', 'example' => 'sgp-atstuj3rtoptyui****'], + 'ServerId' => ['title' => '服务器id', 'description' => '后端服务器ID。', 'type' => 'string', 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['title' => '服务器ip', 'description' => '后端服务器IP地址。', 'type' => 'string', 'example' => '192.168.xxx.xxx'], + 'ServerType' => ['title' => '服务器类型', 'description' => '后端服务器类型,取值:'."\n" + ."\n" + .'- **Ecs**:ECS实例。'."\n" + .'- **Eni**:ENI弹性网卡实例。'."\n" + .'- **Eci**:ECI弹性容器。'."\n" + .'- **Ip**:Ip地址。', 'type' => 'string', 'example' => 'Ecs'], + 'Status' => ['title' => '资源状态', 'description' => '后端服务器的状态。取值:'."\n" + ."\n" + .'- **Adding**:添加中。'."\n" + .'- **Available**:正常可用状态。'."\n" + .'- **Draining**:连接优雅中断中。'."\n" + .'- **Removing**:移除中。'."\n" + .'- **Replacing**:替换中。', 'type' => 'string', 'example' => 'Available'], + ], + ], ], + 'TotalCount' => ['description' => '列表条目数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], ], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'IncorrectStatus.BackendServer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], + 'errorCodes' => [], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '查询服务器组中的服务器列表', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroupServers'], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.BackendServer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroupServers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', - 'title' => '服务器组中移除后端服务器', - 'description' => '**RemoveServersFromServerGroup**接口属于异步接口,即系统返回一个请求ID,但该后端服务器尚未移除成功,系统后台的移除任务仍在进行。'."\n" - .'1. 您可以调用 ListServerGroups 查询服务器组的状态:'."\n" - .' - 当服务器组处于**Configuring**状态时,表示服务器组正在变配中。'."\n" - .' - 当服务器组处于**Available**状态时,表示服务器组运行中。'."\n" - ."\n" - .'2. 您可以调用 ListServerGroupServers 查询后端服务器的状态:'."\n" - .' - 当后端服务器处于**Removing**状态时,表示后端服务器正在从服务器组中移除。'."\n" - .' - 当查询不到该后端服务器时,表示后端服务器移除成功。'."\n" - ."\n" - .'> - 若服务器所在的服务器组开启了连接优雅中断(**ConnectionDrainEnabled**为true),移除时后端服务器会先变为**Removing**状态,之后变为**Draining**状态。待连接优雅中断超时(**ConnectionDrainTimeout**)到期后,才会真正将服务器从服务器组移除。'."\n" - .'> - 期间可以再次将此服务器加入此服务器组,此时状态由**Draining**变为**Adding**,最终变为**Available**。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"ServerIp\\": \\"192.168.xxx.xxx\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', ], 'ListServerGroups' => [ - 'summary' => '查询负载均衡服务器组列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -2904,9 +2255,7 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '225041', - 'abilityTreeNodes' => [ - 'FEATUREslb5QFSS9', - ], + 'abilityTreeNodes' => ['FEATUREslb5QFSS9'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -2920,12 +2269,7 @@ ."\n" .'一次最多支持查询20个服务器组ID。', 'type' => 'array', - 'items' => [ - 'description' => '服务器组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'sgp-atstuj3rtoptyui****', - ], + 'items' => ['description' => '服务器组ID。', 'type' => 'string', 'required' => false, 'example' => 'sgp-atstuj3rtoptyui****'], 'required' => false, 'maxItems' => 20, ], @@ -2939,12 +2283,7 @@ ."\n" .'一次最多支持查询20个服务器组名称。', 'type' => 'array', - 'items' => [ - 'description' => '服务器组名称。', - 'type' => 'string', - 'required' => false, - 'example' => 'testServerGroupName', - ], + 'items' => ['description' => '服务器组名称。', 'type' => 'string', 'required' => false, 'example' => 'testServerGroupName'], 'required' => false, 'maxItems' => 20, ], @@ -2961,21 +2300,13 @@ 'type' => 'string', 'required' => false, 'example' => 'Instance', - 'enum' => [ - 'Instance', - 'Ip', - ], + 'enum' => ['Instance', 'Ip'], ], ], [ 'name' => 'ResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => '资源组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'rg-atstuj3rtop****', - ], + 'schema' => ['description' => '资源组ID。', 'type' => 'string', 'required' => false, 'example' => 'rg-atstuj3rtop****'], ], [ 'name' => 'Tag', @@ -2990,18 +2321,8 @@ 'description' => '标签。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testTagValue', - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => false, 'example' => 'testTagValue'], ], 'required' => false, ], @@ -3012,53 +2333,28 @@ [ 'name' => 'VpcId', 'in' => 'formData', - 'schema' => [ - 'title' => '服务器组所在vpc的id', - 'description' => '专有网络ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'vpc-bp15zckdt37pq72zv****', - ], + 'schema' => ['title' => '服务器组所在vpc的id', 'description' => '专有网络ID。', 'type' => 'string', 'required' => false, 'example' => 'vpc-bp15zckdt37pq72zv****'], ], [ 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'required' => false, - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], ], [ 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => '分批次查询时每次显示的条目数。'."\n" - ."\n" - .'取值范围:1~1000。'."\n" - ."\n" - .'默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['title' => '分页大小', 'description' => '分批次查询时每次显示的条目数。'."\n" + ."\n" + .'取值范围:1~1000。'."\n" + ."\n" + .'默认值:20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], ], [ 'name' => 'Skip', 'in' => 'formData', - 'schema' => [ - 'description' => '查询时跳过指定的条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => '查询时跳过指定的条目数。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1'], ], ], 'responses' => [ @@ -3068,26 +2364,13 @@ 'description' => '返回数据结构体。', 'type' => 'object', 'properties' => [ - 'MaxResults' => [ - 'description' => '分批次查询时每次显示的条目数。'."\n" - ."\n" - .'取值范围:1~1000。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], + 'MaxResults' => ['description' => '分批次查询时每次显示的条目数。'."\n" + ."\n" + .'取值范围:1~1000。', 'type' => 'integer', 'format' => 'int32', 'example' => '20'], + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], 'ServerGroups' => [ 'description' => '后端服务器组列表。', 'type' => 'array', @@ -3099,231 +2382,118 @@ 'description' => '连接优雅中断相关配置。', 'type' => 'object', 'properties' => [ - 'ConnectionDrainEnabled' => [ - 'description' => '是否开启连接优雅中断。取值:'."\n" - ."\n" - .'- **true**:开启。'."\n" - ."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'example' => 'false', - ], - 'ConnectionDrainTimeout' => [ - 'description' => '连接优雅中断超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**3600**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '300', - ], + 'ConnectionDrainEnabled' => ['description' => '是否开启连接优雅中断。取值:'."\n" + ."\n" + .'- **true**:开启。'."\n" + ."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'example' => 'false'], + 'ConnectionDrainTimeout' => ['description' => '连接优雅中断超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**3600**。', 'type' => 'integer', 'format' => 'int32', 'example' => '300'], ], ], - 'CreateTime' => [ - 'description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', - 'type' => 'string', - 'example' => '2024-08-05T18:24:07Z', - ], + 'CreateTime' => ['description' => '资源创建时间,使用格林威治时间,格式为**yyyy-MM-ddTHH:mm:ssZ**。', 'type' => 'string', 'example' => '2024-08-05T18:24:07Z'], 'HealthCheckConfig' => [ 'title' => '健康检查配置', 'description' => '健康检查相关配置。', 'type' => 'object', 'properties' => [ - 'HealthCheckConnectPort' => [ - 'title' => '健康检查使用的端口', - 'description' => '健康检查使用的后端服务器的端口。'."\n" - ."\n" - .'取值范围: **1**~**65535**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '80', - ], - 'HealthCheckConnectTimeout' => [ - 'title' => '健康检查响应的最大超时时间', - 'description' => '健康检查响应的最大超时时间。'."\n" - ."\n" - .'单位:秒。'."\n" - ."\n" - .'取值范围:**1**~**300**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'HealthCheckDomain' => [ - 'title' => '健康检查的域名', - 'description' => '用于健康检查的域名。取值:'."\n" - ."\n" - .'- **$SERVER_IP**:使用后端服务器内网IP。'."\n" - ."\n" - .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'example' => '$SERVER_IP', - ], - 'HealthCheckEnabled' => [ - 'title' => '是否开启健康检查', - 'description' => '是否开启健康检查,取值:'."\n" - ."\n" - .'- **true**:开启。'."\n" - ."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'example' => 'true', - ], + 'HealthCheckConnectPort' => ['title' => '健康检查使用的端口', 'description' => '健康检查使用的后端服务器的端口。'."\n" + ."\n" + .'取值范围: **1**~**65535**。', 'type' => 'integer', 'format' => 'int32', 'example' => '80'], + 'HealthCheckConnectTimeout' => ['title' => '健康检查响应的最大超时时间', 'description' => '健康检查响应的最大超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**300**。', 'type' => 'integer', 'format' => 'int32', 'example' => '5'], + 'HealthCheckDomain' => ['title' => '健康检查的域名', 'description' => '用于健康检查的域名。取值:'."\n" + ."\n" + .'- **$SERVER_IP**:使用后端服务器内网IP。'."\n" + ."\n" + .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" + ."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['title' => '是否开启健康检查', 'description' => '是否开启健康检查,取值:'."\n" + ."\n" + .'- **true**:开启。'."\n" + ."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'example' => 'true'], 'HealthCheckHttpCode' => [ 'title' => '状态码,多个状态码用逗号分隔', 'description' => '健康状态返回码列表。', 'type' => 'array', - 'items' => [ - 'description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" - .'取值:'."\n" - .'- **http\\_2xx**'."\n" - .'- **http\\_3xx**'."\n" - .'- **http\\_4xx**'."\n" - .'- **http\\_5xx**'."\n" - ."\n" - .'默认值:**http\\_2xx** 。'."\n" - ."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'example' => 'http_2xx', - ], - ], - 'HealthCheckInterval' => [ - 'title' => '健康检查时间间隔', - 'description' => '健康检查的时间间隔。'."\n" + 'items' => ['description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" + .'取值:'."\n" + .'- **http\\_2xx**'."\n" + .'- **http\\_3xx**'."\n" + .'- **http\\_4xx**'."\n" + .'- **http\\_5xx**'."\n" ."\n" - .'单位:秒。'."\n" + .'默认值:**http\\_2xx** 。'."\n" ."\n" - .'取值范围:**1**~**50**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'HealthCheckPath' => [ - 'title' => '健康检查的path', - 'description' => '健康检查路径。'."\n" - ."\n" - .'长度为1~80个字符,只能使用大小写英文字母、数字、字符`-/.%?#&`。 必须以正斜线(/)开头。'."\n" - .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', - 'type' => 'string', - 'example' => '/test/index.html', - ], - 'HealthCheckProtocol' => [ - 'title' => '健康检查协议类型', - 'description' => '健康检查协议,取值:'."\n" - ."\n" - .'- **TCP**:通过发送SYN握手报文来检测服务器端口是否存活。'."\n" - ."\n" - .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', - 'type' => 'string', - 'example' => 'TCP', - ], - 'HealthyThreshold' => [ - 'title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', - 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" - ."\n" - .'取值范围:**2**~**10**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'UnhealthyThreshold' => [ - 'title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', - 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" - ."\n" - .'取值范围:**2**~**10**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'example' => 'http_2xx'], ], + 'HealthCheckInterval' => ['title' => '健康检查时间间隔', 'description' => '健康检查的时间间隔。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**50**。', 'type' => 'integer', 'format' => 'int32', 'example' => '10'], + 'HealthCheckPath' => ['title' => '健康检查的path', 'description' => '健康检查路径。'."\n" + ."\n" + .'长度为1~80个字符,只能使用大小写英文字母、数字、字符`-/.%?#&`。 必须以正斜线(/)开头。'."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'example' => '/test/index.html'], + 'HealthCheckProtocol' => ['title' => '健康检查协议类型', 'description' => '健康检查协议,取值:'."\n" + ."\n" + .'- **TCP**:通过发送SYN握手报文来检测服务器端口是否存活。'."\n" + ."\n" + .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', 'type' => 'string', 'example' => 'TCP'], + 'HealthyThreshold' => ['title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" + ."\n" + .'取值范围:**2**~**10**。', 'type' => 'integer', 'format' => 'int32', 'example' => '2'], + 'UnhealthyThreshold' => ['title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" + ."\n" + .'取值范围:**2**~**10**。', 'type' => 'integer', 'format' => 'int32', 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string'], + 'HealthCheckExp' => ['type' => 'string'], ], ], - 'Protocol' => [ - 'title' => '后端协议', - 'description' => '后端转发协议。取值:'."\n" - ."\n" - .'- **GENEVE**。', - 'type' => 'string', - 'example' => 'GENEVE', - ], + 'Protocol' => ['title' => '后端协议', 'description' => '后端转发协议。取值:'."\n" + ."\n" + .'- **GENEVE**。', 'type' => 'string', 'example' => 'GENEVE'], 'RelatedLoadBalancerIds' => [ 'description' => '关联的负载均衡实例ID列表。', 'type' => 'array', - 'items' => [ - 'description' => '关联的负载均衡实例ID。', - 'type' => 'string', - 'example' => 'gwlb-cp6prgqy40hols****', - ], - ], - 'ResourceGroupId' => [ - 'title' => '资源组id', - 'description' => '资源组ID。', - 'type' => 'string', - 'example' => 'rg-atstuj3rtop****', - ], - 'Scheduler' => [ - 'title' => '流量调度算法', - 'description' => '调度算法。取值:'."\n" - ."\n" - .'- **5TCH**:五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" - ."\n" - .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', - 'type' => 'string', - 'example' => '5TCH', - ], - 'ServerCount' => [ - 'description' => '后端服务器数量。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'ServerGroupId' => [ - 'title' => '服务器组id', - 'description' => '服务器组ID。', - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', - ], - 'ServerGroupName' => [ - 'title' => '服务器组名称', - 'description' => '服务器组名称。', - 'type' => 'string', - 'example' => 'testServerGroupName', - ], - 'ServerGroupStatus' => [ - 'title' => '服务器组状态', - 'description' => '服务器组状态。取值:'."\n" - ."\n" - .'- **Creating**:创建中。'."\n" - ."\n" - .'- **Available**:可用。'."\n" - ."\n" - .'- **Configuring**:变配中。', - 'type' => 'string', - 'example' => 'Available', - ], - 'ServerGroupType' => [ - 'title' => '服务器组类型', - 'description' => '服务器组类型。取值:'."\n" - ."\n" - .'- **Instance**:服务器类型,该类型服务器组支持添加**Ecs**、**Eni**、**Eci**类型实例。'."\n" - ."\n" - .'- **Ip**:IP地址类型,该类型服务器组支持直接添加IP地址类型的后端服务器。', - 'type' => 'string', - 'example' => 'Instance', - ], - 'ServerFailoverMode' => [ - 'description' => '服务器异常时,存量流量的处理方式。取值:'."\n" - ."\n" - .'- **NoRebalance**:不重新平衡现有流量。'."\n" - .'- **Rebalance**:重新平衡现有流量。', - 'type' => 'string', - 'example' => 'NoRebalance', + 'items' => ['description' => '关联的负载均衡实例ID。', 'type' => 'string', 'example' => 'gwlb-cp6prgqy40hols****'], ], + 'ResourceGroupId' => ['title' => '资源组id', 'description' => '资源组ID。', 'type' => 'string', 'example' => 'rg-atstuj3rtop****'], + 'Scheduler' => ['title' => '流量调度算法', 'description' => '调度算法。取值:'."\n" + ."\n" + .'- **5TCH**:五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', 'type' => 'string', 'example' => '5TCH'], + 'ServerCount' => ['description' => '后端服务器数量。', 'type' => 'integer', 'format' => 'int32', 'example' => '2'], + 'ServerGroupId' => ['title' => '服务器组id', 'description' => '服务器组ID。', 'type' => 'string', 'example' => 'sgp-atstuj3rtoptyui****'], + 'ServerGroupName' => ['title' => '服务器组名称', 'description' => '服务器组名称。', 'type' => 'string', 'example' => 'testServerGroupName'], + 'ServerGroupStatus' => ['title' => '服务器组状态', 'description' => '服务器组状态。取值:'."\n" + ."\n" + .'- **Creating**:创建中。'."\n" + ."\n" + .'- **Available**:可用。'."\n" + ."\n" + .'- **Configuring**:变配中。', 'type' => 'string', 'example' => 'Available'], + 'ServerGroupType' => ['title' => '服务器组类型', 'description' => '服务器组类型。取值:'."\n" + ."\n" + .'- **Instance**:服务器类型,该类型服务器组支持添加**Ecs**、**Eni**、**Eci**类型实例。'."\n" + ."\n" + .'- **Ip**:IP地址类型,该类型服务器组支持直接添加IP地址类型的后端服务器。', 'type' => 'string', 'example' => 'Instance'], + 'ServerFailoverMode' => ['description' => '服务器异常时,存量流量的处理方式。取值:'."\n" + ."\n" + .'- **NoRebalance**:不重新平衡现有流量。'."\n" + .'- **Rebalance**:重新平衡现有流量。', 'type' => 'string', 'example' => 'NoRebalance'], 'Tags' => [ 'title' => '标签', 'description' => '标签列表。', @@ -3332,54 +2502,50 @@ 'description' => '标签。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'example' => 'testTagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'example' => 'testTagValue', - ], + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'example' => 'testTagKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'example' => 'testTagValue'], ], ], ], - 'VpcId' => [ - 'title' => '服务器组的vpcid', - 'description' => '专用网络ID。', - 'type' => 'string', - 'example' => 'vpc-bp15zckdt37pq72zv****', - ], + 'VpcId' => ['title' => '服务器组的vpcid', 'description' => '专用网络ID。', 'type' => 'string', 'example' => 'vpc-bp15zckdt37pq72zv****'], ], ], ], - 'TotalCount' => [ - 'description' => '列表条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'TotalCount' => ['description' => '列表条目数。', 'type' => 'integer', 'format' => 'int32', 'example' => '1'], ], ], ], ], 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroups\\": [\\n {\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckConnectTimeout\\": 5,\\n \\"HealthCheckDomain\\": \\"$SERVER_IP\\",\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHttpCode\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckInterval\\": 10,\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"TCP\\",\\n \\"HealthyThreshold\\": 2,\\n \\"UnhealthyThreshold\\": 2\\n },\\n \\"Protocol\\": \\"GENEVE\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"gwlb-cp6prgqy40hols****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"5TCH\\",\\n \\"ServerCount\\": 2,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerGroupName\\": \\"testServerGroupName\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"ServerFailoverMode\\": \\"NoRebalance\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', + 'staticInfo' => ['returnType' => 'synchronous'], 'title' => '查询服务器组列表', - ], - 'ListServerGroupServers' => [ - 'summary' => '查询负载均衡服务器组中的服务器列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + 'summary' => '查询负载均衡服务器组列表。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroups'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"ServerGroups\\": [\\n {\\n \\"ConnectionDrainConfig\\": {\\n \\"ConnectionDrainEnabled\\": false,\\n \\"ConnectionDrainTimeout\\": 300\\n },\\n \\"CreateTime\\": \\"2024-08-05T18:24:07Z\\",\\n \\"HealthCheckConfig\\": {\\n \\"HealthCheckConnectPort\\": 80,\\n \\"HealthCheckConnectTimeout\\": 5,\\n \\"HealthCheckDomain\\": \\"$SERVER_IP\\",\\n \\"HealthCheckEnabled\\": true,\\n \\"HealthCheckHttpCode\\": [\\n \\"http_2xx\\"\\n ],\\n \\"HealthCheckInterval\\": 10,\\n \\"HealthCheckPath\\": \\"/test/index.html\\",\\n \\"HealthCheckProtocol\\": \\"TCP\\",\\n \\"HealthyThreshold\\": 2,\\n \\"UnhealthyThreshold\\": 2,\\n \\"HealthCheckReq\\": \\"\\",\\n \\"HealthCheckExp\\": \\"\\"\\n },\\n \\"Protocol\\": \\"GENEVE\\",\\n \\"RelatedLoadBalancerIds\\": [\\n \\"gwlb-cp6prgqy40hols****\\"\\n ],\\n \\"ResourceGroupId\\": \\"rg-atstuj3rtop****\\",\\n \\"Scheduler\\": \\"5TCH\\",\\n \\"ServerCount\\": 2,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerGroupName\\": \\"testServerGroupName\\",\\n \\"ServerGroupStatus\\": \\"Available\\",\\n \\"ServerGroupType\\": \\"Instance\\",\\n \\"ServerFailoverMode\\": \\"NoRebalance\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testTagKey\\",\\n \\"Value\\": \\"testTagValue\\"\\n }\\n ],\\n \\"VpcId\\": \\"vpc-bp15zckdt37pq72zv****\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', + ], + 'ListTagResources' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3388,223 +2554,145 @@ 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225066', - 'abilityTreeNodes' => [ - 'FEATUREslb3GOGI0', - ], + 'abilityTreeCode' => '225143', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ServerGroupId', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'description' => '服务器组ID。', + 'description' => '资源类型,取值:'."\n" + ."\n" + .'- **loadbalancer**:网关型负载均衡实例。'."\n" + .'- **listener**:监听。'."\n" + .'- **servergroup**:服务器组。', 'type' => 'string', - 'required' => false, - 'example' => 'sgp-atstuj3rtoptyui****', + 'required' => true, + 'example' => 'loadbalancer', + 'enum' => [], ], ], [ - 'name' => 'ServerIds', + 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '服务器ID列表。'."\n" - ."\n" - .'单次调用最多支持展示200个服务器。', + 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', 'type' => 'array', - 'items' => [ - 'description' => '服务器ID。'."\n" - ."\n" - .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" - ."\n" - .'- 当服务器组为**Ip**类型时,该参数为IP地址。', - 'type' => 'string', - 'required' => false, - 'example' => 'i-bp67acfmxazb4p****', - ], + 'items' => ['description' => '资源ID。', 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****'], 'required' => false, - 'maxItems' => 200, + 'maxItems' => 50, + 'minItems' => 1, ], ], [ - 'name' => 'ServerIps', + 'name' => 'Tag', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '服务器IP地址列表。'."\n" - ."\n" - .'单次调用最多支持展示200个服务器。', + 'description' => '标签列表。一次调用最多支持 20 个标签。', 'type' => 'array', 'items' => [ - 'description' => '服务器IP地址。', - 'type' => 'string', + 'description' => '标签。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。', 'type' => 'string', 'required' => false, 'example' => 'testKey'], + 'Value' => ['description' => '标签值。', 'type' => 'string', 'required' => false, 'example' => 'testValue'], + ], 'required' => false, - 'example' => '192.168.xxx.xxx', ], 'required' => false, - 'maxItems' => 200, + 'maxItems' => 20, + 'minItems' => 1, ], ], [ 'name' => 'NextToken', 'in' => 'formData', - 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'required' => false, - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], + 'schema' => ['title' => '分页游标', 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'required' => false, 'example' => 'WyI2NDQ3MWUxM2EzOWNhMmY0Y2M2YTRiNzZhOWQwNmU1Y2RlNTYzMGEzIiwibiIsIm4iLDEsLTEsMTY5ODcxMzI2NjU0MywiNjU0MDRlYjI2MmI3MDhjY2JiMjM0ZmU0ODNkNTVmMGRhZDllOTBi****'], ], [ 'name' => 'MaxResults', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => '分批次查询时每次显示的条目数。'."\n" - ."\n" - .'取值范围:1~1000。'."\n" - ."\n" - .'默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], - ], - [ - 'name' => 'Skip', - 'in' => 'formData', - 'schema' => [ - 'description' => '查询时跳过指定的条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '返回数据结构体。', + 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'MaxResults' => [ - 'description' => '分批次查询时每次显示的条目数。'."\n" - ."\n" - .'取值范围:1~1000。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 第一次查询和没有下一次查询时,均无需填写。'."\n" - .'- 如果有下一次查询,取值为上一次API调用返回的NextToken值。', - 'type' => 'string', - 'example' => 'FFmyTO70tTpLG6I3FmYAXGKPd****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45', - ], - 'Servers' => [ - 'description' => '后端服务器列表。', + 'NextToken' => ['description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" + .'- 如果**NextToken**为空表示没有下一次查询。'."\n" + .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', 'type' => 'string', 'example' => 'd209f4e63ec942c967c50c888a13****'], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'A95325A2-E421-58A6-88AD-7A26CE610F45'], + 'TagResources' => [ + 'description' => '标签资源列表。', 'type' => 'array', 'items' => [ - 'description' => '后端服务器。', + 'description' => '资源绑定的标签信息。', 'type' => 'object', 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => '后端服务器使用的端口,取值:'."\n" - ."\n" - .'- **6081**。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6081', - ], - 'ServerGroupId' => [ - 'title' => '服务器所属的服务器组ID', - 'description' => '服务器组ID。', - 'type' => 'string', - 'example' => 'sgp-atstuj3rtoptyui****', - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => '后端服务器ID。', - 'type' => 'string', - 'example' => 'i-bp67acfmxazb4p****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => '后端服务器IP地址。', - 'type' => 'string', - 'example' => '192.168.xxx.xxx', - ], - 'ServerType' => [ - 'title' => '服务器类型', - 'description' => '后端服务器类型,取值:'."\n" - ."\n" - .'- **Ecs**:ECS实例。'."\n" - .'- **Eni**:ENI弹性网卡实例。'."\n" - .'- **Eci**:ECI弹性容器。'."\n" - .'- **Ip**:Ip地址。', - 'type' => 'string', - 'example' => 'Ecs', - ], - 'Status' => [ - 'title' => '资源状态', - 'description' => '后端服务器的状态。取值:'."\n" - ."\n" - .'- **Adding**:添加中。'."\n" - .'- **Available**:正常可用状态。'."\n" - .'- **Draining**:连接优雅中断中。'."\n" - .'- **Removing**:移除中。'."\n" - .'- **Replacing**:替换中。', - 'type' => 'string', - 'example' => 'Available', - ], + 'ResourceId' => ['description' => '资源ID。', 'type' => 'string', 'example' => 'gwlb-nrnrxwd15en27r****'."\n"], + 'ResourceType' => ['description' => '资源类型,取值:'."\n" + ."\n" + .'- **loadbalancer**:网关型负载均衡实例。'."\n" + .'- **listener**:监听。'."\n" + .'- **servergroup**:服务器组。', 'type' => 'string', 'example' => 'loadbalancer'], + 'TagKey' => ['description' => '标签键。', 'type' => 'string', 'example' => 'testKey'], + 'TagValue' => ['description' => '标签值。', 'type' => 'string', 'example' => 'testValue'], ], ], ], - 'TotalCount' => [ - 'description' => '列表条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], ], ], ], ], - 'errorCodes' => [], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam.TagsOrResourceIds', 'errorMessage' => 'The param of TagsOrResourceIds is missing.', 'description' => '标签列表与资源ID列表全部未设置或为空列表'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => '标签键参数缺失'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '参数%s重复'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"FFmyTO70tTpLG6I3FmYAXGKPd****\\",\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"ServerGroupId\\": \\"sgp-atstuj3rtoptyui****\\",\\n \\"ServerId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"ServerIp\\": \\"192.168.xxx.xxx\\",\\n \\"ServerType\\": \\"Ecs\\",\\n \\"Status\\": \\"Available\\"\\n }\\n ],\\n \\"TotalCount\\": 1\\n}","type":"json"}]', - 'title' => '查询服务器组中的服务器列表', - ], - 'CreateListener' => [ - 'summary' => '创建负载均衡监听器。', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '查询资源标签', + 'summary' => '查询指定资源绑定的标签。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListTagResources'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"d209f4e63ec942c967c50c888a13****\\",\\n \\"RequestId\\": \\"A95325A2-E421-58A6-88AD-7A26CE610F45\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"gwlb-nrnrxwd15en27r****\\\\n\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"testKey\\",\\n \\"TagValue\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'MoveResourceGroup' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3613,125 +2701,54 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '220131', - 'abilityTreeNodes' => [ - 'FEATUREslbPNW4R2', - ], + 'abilityTreeCode' => '225546', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'LoadBalancerId', + 'name' => 'ResourceId', 'in' => 'formData', - 'schema' => [ - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-te609d6696632f7*****', - ], + 'schema' => ['description' => '资源ID。', 'type' => 'string', 'required' => true, 'example' => 'gwlb-nrnrxwd15en27r****'], ], [ - 'name' => 'ListenerDescription', + 'name' => 'NewResourceGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => '自定义监听描述。'."\n" - ."\n" - .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'required' => false, - 'example' => 'listener-description', - ], + 'schema' => ['description' => '目标资源组ID。', 'type' => 'string', 'required' => true, 'example' => 'rg-aek253e4oit****'], ], [ - 'name' => 'ServerGroupId', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'description' => '服务器组 ID。', + 'description' => '资源类型,取值:'."\n" + ."\n" + .'- **loadbalancer**:网关型负载均衡实例。'."\n" + .'- **servergroup**:服务器组。', 'type' => 'string', 'required' => true, - 'example' => 'sgp-ckh01px70dszof****', - ], - ], - [ - 'name' => 'TcpIdleTimeout', - 'in' => 'formData', - 'schema' => [ - 'title' => 'TCP连接空闲超时时间。默认值:**350**秒。'."\n" - ."\n" - .'取值范围:**60**-**6000**秒。', - 'description' => 'TCP连接空闲超时时间。'."\n" - ."\n" - .'取值范围:**60**-**6000** 秒。'."\n" - ."\n" - .'默认值:**350** 秒。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '350', - 'default' => '350', + 'example' => 'loadbalancer', + 'enum' => ['loadbalancer', 'servergroup'], ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会创建监听。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会迁移资源组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], - ], - [ - 'name' => 'Tag', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '标签列表。一次调用最多支持添加20个标签。', - 'type' => 'array', - 'items' => [ - 'description' => '标签。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'testValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**可能不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -3741,106 +2758,50 @@ 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'ListenerId' => [ - 'title' => '', - 'description' => '监听ID。', - 'type' => 'string', - 'example' => 'lsn-wi3c0v30ivysrg****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'A045E652-D298-5E70-A978-7247135336FB', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '78828B5C-521E-50F3-84D4-7019691D1382'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagValue', - 'errorMessage' => 'The param of TagValue is missing.', - ], - [ - 'errorCode' => 'OperationDenied.TooManyListeners', - 'errorMessage' => 'The operation is not allowed because of TooManyListener.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of IP is in use.', - ], - [ - 'errorCode' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.TagValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', - 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', - ], + ['errorCode' => 'OperationDenied.NotExist.ResourceGroup', 'errorMessage' => 'The operation is not allowed because of NotExist.ResourceGroup.', 'description' => '操作被拒绝,资源组不存在'], + ['errorCode' => 'OperationDenied.StatusCheckFail.ResourceGroup', 'errorMessage' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', 'description' => '操作被拒绝,资源组状态异常'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '迁移资源组', + 'summary' => '修改资源所属的资源组。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'MoveResourceGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:MoveResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerId\\": \\"lsn-wi3c0v30ivysrg****\\",\\n \\"RequestId\\": \\"A045E652-D298-5E70-A978-7247135336FB\\"\\n}","type":"json"}]', - 'title' => '创建监听', - 'description' => '**CreateListener** 接口属于异步接口,即系统返回一个请求 ID,但该监听尚未创建成功,系统后台的创建任务仍在进行。您可以调用[GetListenerAttribute](~~2853569~~)查询监听的创建状态:'."\n" - ."\n" - .'- 当监听处于 **Provisioning** 状态时,表示监听正在创建中。'."\n" - ."\n" - .'- 当监听处于 **Running** 状态时,表示监听创建成功。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"78828B5C-521E-50F3-84D4-7019691D1382\\"\\n}","type":"json"}]', ], - 'UpdateListenerAttribute' => [ - 'summary' => '更新负载均衡监听的属性。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'RemoveServersFromServerGroup' => [ + 'summary' => '从负载均衡服务器组中移除后端服务器。', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -3849,177 +2810,141 @@ 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221402', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - 'FEATUREslbPNW4R2', - ], + 'abilityTreeCode' => '225065', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', - 'in' => 'formData', - 'schema' => [ - 'description' => '监听ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-lxce8iqbof2vl0****', - ], - ], - [ - 'name' => 'ListenerDescription', - 'in' => 'formData', - 'schema' => [ - 'description' => '自定义监听描述。'."\n" - ."\n" - .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'required' => false, - 'example' => 'listener_description', - ], - ], - [ 'name' => 'ServerGroupId', 'in' => 'formData', - 'schema' => [ - 'description' => '服务器组ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'sgp-sp8d2r6y7t0xtl****', - ], + 'schema' => ['description' => '服务器组ID。', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****'], ], [ - 'name' => 'TcpIdleTimeout', + 'name' => 'Servers', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', - 'description' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '350', + 'description' => '后端服务器列表。'."\n" + ."\n" + .'> 单次调用最多支持传入200个服务器。', + 'type' => 'array', + 'items' => [ + 'description' => '后端服务器。', + 'type' => 'object', + 'properties' => [ + 'Port' => ['title' => '服务器端口', 'description' => '后端服务器使用的端口,取值:'."\n" + ."\n" + .'- **6081**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '6081'], + 'ServerId' => ['title' => '服务器id', 'description' => '后端服务器ID。'."\n" + ."\n" + .'- 当服务器组为**Instance**类型时,该参数为**Ecs**、**Eni**、**Eci**的资源ID。'."\n" + ."\n" + .'- 当服务器组为**Ip**类型时,该参数为IP地址。', 'type' => 'string', 'required' => true, 'example' => 'i-bp67acfmxazb4p****'], + 'ServerIp' => ['title' => '服务器ip', 'description' => '后端服务器IP地址。', 'type' => 'string', 'required' => false, 'example' => '192.168.xxx.xxx'."\n"], + 'ServerType' => [ + 'title' => '服务器类型', + 'description' => '后端服务器类型,取值:'."\n" + ."\n" + .'- **Ecs**:ECS实例。'."\n" + .'- **Eni**:ENI弹性网卡实例。'."\n" + .'- **Eci**:ECI弹性容器。'."\n" + .'- **Ip**:Ip地址。', + 'type' => 'string', + 'required' => true, + 'example' => 'Ecs', + 'enum' => ['Ecs', 'Eni', 'Eci', 'Ip'], + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 200, ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会更新监听属性。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求,取值:'."\n" + .'- **true**:发送检查请求,不会从服务器组中移除后端服务器。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '请求的返回值。', + 'description' => '返回数据结构体。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求 ID。', - 'type' => 'string', - 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.Listener', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'Mismatch.VpcId', - 'errorMessage' => 'The %s is mismatched for %s and %s.', - ], - [ - 'errorCode' => 'ResourceInUse.IP', - 'errorMessage' => 'The specified resource of IP is in use.', - ], - [ - 'errorCode' => 'IncorrectStatus.ServerGroup', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', - 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', - ], - [ - 'errorCode' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', - 'errorMessage' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', - ], + ['errorCode' => 'IncorrectStatus.BackendServer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '服务器的状态无法进行当前操作,请检查服务器当前是否处于其他操作下。'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.BackendServer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的后端服务器资源不存在。'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\"\\n}","type":"json"}]', - 'title' => '更新监听属性', - 'description' => '**UpdateListenerAttribute** 接口属于异步接口,即系统返回一个请求 ID,但该监听的配置尚未更新成功,系统后台的更新任务仍在进行。您可以调用 **GetListenerAttribute** 查询监听的配置的更新状态:'."\n" + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroupServers', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '服务器组中移除后端服务器', + 'description' => '**RemoveServersFromServerGroup**接口属于异步接口,即系统返回一个请求ID,但该后端服务器尚未移除成功,系统后台的移除任务仍在进行。'."\n" + .'1. 您可以调用 ListServerGroups 查询服务器组的状态:'."\n" + .' - 当服务器组处于**Configuring**状态时,表示服务器组正在变配中。'."\n" + .' - 当服务器组处于**Available**状态时,表示服务器组运行中。'."\n" ."\n" - .'- 当监听器处于 **Configuring** 状态时,表示监听的配置正在更新中。'."\n" - .'- 当监听器处于 **Running** 状态时,表示监听的配置更新成功。', - ], - 'DeleteListener' => [ - 'summary' => '删除负载均衡监听器。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + .'2. 您可以调用 ListServerGroupServers 查询后端服务器的状态:'."\n" + .' - 当后端服务器处于**Removing**状态时,表示后端服务器正在从服务器组中移除。'."\n" + .' - 当查询不到该后端服务器时,表示后端服务器移除成功。'."\n" + ."\n" + .'> - 若服务器所在的服务器组开启了连接优雅中断(**ConnectionDrainEnabled**为true),移除时后端服务器会先变为**Removing**状态,之后变为**Draining**状态。待连接优雅中断超时(**ConnectionDrainTimeout**)到期后,才会真正将服务器从服务器组移除。'."\n" + .'> - 期间可以再次将此服务器加入此服务器组,此时状态由**Draining**变为**Adding**,最终变为**Available**。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'RemoveServersFromServerGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:RemoveServersFromServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\"\\n}","type":"json"}]', + ], + 'TagResources' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -4028,55 +2953,78 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221398', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '225141', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', + 'name' => 'ResourceType', 'in' => 'formData', 'schema' => [ - 'description' => '监听ID。', + 'description' => '资源类型,取值:'."\n" + ."\n" + .'- **loadbalancer**:网关型负载均衡实例。'."\n" + .'- **listener**:监听。'."\n" + .'- **servergroup**:服务器组。', 'type' => 'string', 'required' => true, - 'example' => 'lsn-brx2y3hqdincizg***', + 'example' => 'loadbalancer', + 'enum' => [], ], ], [ - 'name' => 'DryRun', + 'name' => 'ResourceId', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会删除监听。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', + 'type' => 'array', + 'items' => ['description' => '资源ID。', 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****'], + 'required' => true, + 'maxItems' => 50, + 'minItems' => 1, ], ], [ - 'name' => 'ClientToken', + 'name' => 'Tag', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', + 'description' => '标签列表。一次调用最多支持 20 个标签。', + 'type' => 'array', + 'items' => [ + 'description' => '标签。', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', 'type' => 'string', 'required' => true, 'example' => 'testKey'], + 'Value' => ['description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', 'type' => 'string', 'required' => true, 'example' => 'testValue'], + ], + 'required' => true, + ], + 'required' => true, + 'maxItems' => 20, + 'minItems' => 1, ], ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会添加标签。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], + ], ], 'responses' => [ 200 => [ @@ -4085,186 +3033,136 @@ 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '5C6E3548-086F-5FF6-A2B3-B1871B3AB488', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54F6E60A-1777-5C17-A6A9-BCC1A7FE945B'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectBusinessStatus.LoadBalancer', - 'errorMessage' => 'The business status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.Listener', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], - [ - 'errorCode' => 'IncorrectStatus.LoadBalancer', - 'errorMessage' => 'The status of %s [%s] is incorrect.', - ], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => '标签键参数缺失'], + ['errorCode' => 'MissingParam.TagValue', 'errorMessage' => 'The param of TagValue is missing.', 'description' => '标签值参数缺失'], + ['errorCode' => 'ResourceQuotaExceeded.TagNum', 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'description' => '资源绑定的标签数量超限'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ['errorCode' => 'IllegalParam.TagValue', 'errorMessage' => 'The param of %s is illegal.', 'description' => '标签值参数不合法'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '参数%s重复'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'asynchronous', - 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', - 'callbackInterval' => 3000, - 'maxCallbackTimes' => 100, + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '添加资源标签', + 'summary' => '为指定的资源列表创建并绑定标签。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'TagResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:TagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5C6E3548-086F-5FF6-A2B3-B1871B3AB488\\"\\n}","type":"json"}]', - 'title' => '删除监听', - 'description' => '**DeleteListener** 接口属于异步接口,即系统返回一个请求 ID,但该监听尚未删除成功,系统后台的删除任务仍在进行。您可以调用 **GetListenerAttribute** 查询监听的删除状态:'."\n" - ."\n" - .'- 当监听器处于 **Deleting** 状态时,表示监听正在删除中。'."\n" - .'- 当查询不到该监听时,表示监听删除成功。', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54F6E60A-1777-5C17-A6A9-BCC1A7FE945B\\"\\n}","type":"json"}]', ], - 'ListListeners' => [ - 'summary' => '查询负载均衡监听列表。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UntagResources' => [ + 'summary' => '为指定的资源列表解绑标签。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221401', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '225142', + 'abilityTreeNodes' => ['FEATUREslbRXTOWD'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerIds', + 'name' => 'ResourceType', 'in' => 'formData', - 'style' => 'flat', 'schema' => [ - 'description' => '监听ID列表,最多支持20个监听ID。', - 'type' => 'array', - 'items' => [ - 'description' => '监听ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'lsn-w3t3vpgjj12b2i****', - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, + 'description' => '资源类型,取值:'."\n" + ."\n" + .'- **loadbalancer**:网关型负载均衡实例。'."\n" + .'- **listener**:监听。'."\n" + .'- **servergroup**:服务器组。', + 'type' => 'string', + 'required' => true, + 'example' => 'loadbalancer', + 'enum' => [], ], ], [ - 'name' => 'LoadBalancerIds', + 'name' => 'ResourceId', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '网关型负载均衡实例ID。最多支持20个实例ID。', + 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', 'type' => 'array', - 'items' => [ - 'description' => '网关型负载均衡实例ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-rbtjolkkbudmrr****', - ], - 'required' => false, - 'maxItems' => 20, + 'items' => ['description' => '资源ID。', 'type' => 'string', 'required' => false, 'example' => 'gwlb-nrnrxwd15en27r****'], + 'required' => true, + 'maxItems' => 50, 'minItems' => 1, ], ], [ - 'name' => 'NextToken', + 'name' => 'TagKey', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', + 'description' => '要删除标签的标签键列表。一次调用最多支持删除 20 个标签', + 'type' => 'array', + 'items' => ['description' => '要删除标签的标签键。', 'type' => 'string', 'required' => false, 'example' => 'testKey'], 'required' => false, - 'example' => 'd209f4e63ec942c967c50c888a13****', + 'maxItems' => 20, + 'minItems' => 1, ], ], [ - 'name' => 'MaxResults', + 'name' => 'All', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => '是否解绑资源的所有标签。当填写了TagKey参数时,本参数将被忽略。取值:'."\n" + ."\n" + .'- **true**:解绑资源的所有标签。'."\n" + .'- **false**(默认值):不解绑资源的所有标签。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], ], [ - 'name' => 'Tag', + 'name' => 'DryRun', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '标签列表。一次调用最多支持 20 个标签。', - 'type' => 'array', - 'items' => [ - 'description' => '标签。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。'."\n" - ."\n" - .'一个标签健最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'tagKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => false, - 'example' => 'tagValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会删除标签。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ - 'name' => 'Skip', + 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'description' => '分页查询时,跳过的条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -4274,148 +3172,66 @@ 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'Listeners' => [ - 'description' => '网关型负载均衡监听列表。', - 'type' => 'array', - 'items' => [ - 'description' => '监听信息。', - 'type' => 'object', - 'properties' => [ - 'ListenerDescription' => [ - 'title' => '监听描述', - 'description' => '监听描述。', - 'type' => 'string', - 'example' => 'listener-description', - ], - 'ListenerId' => [ - 'title' => '自己生成后赋值', - 'description' => '监听ID。', - 'type' => 'string', - 'example' => 'lsn-vu7folhh5ntm8u****', - ], - 'ListenerStatus' => [ - 'title' => '监听状态', - 'description' => '当前监听的状态,取值:'."\n" - ."\n" - .'- **Provisioning**:创建中。'."\n" - .'- **Running**:运行中。'."\n" - .'- **Configuring**:配置中。'."\n" - .'- **Deleting**:删除中。', - 'type' => 'string', - 'example' => 'Running', - ], - 'LoadBalancerId' => [ - 'title' => '负载均衡实例ID', - 'description' => '网关型负载均衡实例的ID。', - 'type' => 'string', - 'example' => 'gwlb-uf6hbeh795xlqln7g****', - ], - 'ServerGroupId' => [ - 'title' => '服务器组ID', - 'description' => '服务器组ID。', - 'type' => 'string', - 'example' => 'sgp-5yapcb422i51ru****', - ], - 'TcpIdleTimeout' => [ - 'title' => 'TCP连接空闲超时时间。', - 'description' => 'TCP连接空闲超时时间。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '350', - ], - 'Tags' => [ - 'description' => '标签列表。', - 'type' => 'array', - 'items' => [ - 'description' => '标签列表。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。', - 'type' => 'string', - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => '标签值。', - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], - ], - ], - ], - 'MaxResults' => [ - 'description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'example' => '5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9', - ], - 'TotalCount' => [ - 'description' => '列表条目总数。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '8', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], + ['errorCode' => 'ExclusiveParam.TagKeyAndAll', 'errorMessage' => 'The param of %s and %s are mutually exclusive.', 'description' => '标签键参数值与是否解绑资源的所有标签选项的参数值互斥'], + ['errorCode' => 'MissingParam.TagKey', 'errorMessage' => 'The param of TagKey is missing.', 'description' => '标签键参数缺失'], + ['errorCode' => 'DuplicatedParam.ResourceId', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '参数%s重复'], + ['errorCode' => 'DuplicatedParam.TagKey', 'errorMessage' => 'The param of %s is duplicated.', 'description' => '标签键参数重复'], + ['errorCode' => 'IllegalParam.TagKey', 'errorMessage' => 'The param of %s is illegal.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => '删除资源标签', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UntagResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UntagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Listeners\\": [\\n {\\n \\"ListenerDescription\\": \\"listener-description\\",\\n \\"ListenerId\\": \\"lsn-vu7folhh5ntm8u****\\",\\n \\"ListenerStatus\\": \\"Running\\",\\n \\"LoadBalancerId\\": \\"gwlb-uf6hbeh795xlqln7g****\\",\\n \\"ServerGroupId\\": \\"sgp-5yapcb422i51ru****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"5c281c0a0d6bfb6355ed088c2108aca8e0b5e8707e68****\\",\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\",\\n \\"TotalCount\\": 8\\n}","type":"json"}]', - 'title' => '查询监听列表', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21\\"\\n}","type":"json"}]', ], - 'GetListenerAttribute' => [ - 'summary' => '查询负载均衡实例的监听器详情。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateListenerAttribute' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221399', - 'abilityTreeNodes' => [ - 'FEATUREslbC68LB1', - ], + 'abilityTreeCode' => '221402', + 'abilityTreeNodes' => ['FEATUREslbC68LB1', 'FEATUREslbPNW4R2'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], @@ -4423,12 +3239,38 @@ [ 'name' => 'ListenerId', 'in' => 'formData', - 'schema' => [ - 'description' => '监听ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-brx2y3hqdinciz****', - ], + 'schema' => ['description' => '监听ID。', 'type' => 'string', 'required' => true, 'example' => 'lsn-lxce8iqbof2vl0****'], + ], + [ + 'name' => 'ListenerDescription', + 'in' => 'formData', + 'schema' => ['description' => '自定义监听描述。'."\n" + ."\n" + .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'listener_description'], + ], + [ + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['description' => '服务器组ID。', 'type' => 'string', 'required' => false, 'example' => 'sgp-sp8d2r6y7t0xtl****'], + ], + [ + 'name' => 'TcpIdleTimeout', + 'in' => 'formData', + 'schema' => ['title' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', 'description' => 'TCP连接空闲超时时间。取值范围:**60**-**6000**秒。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '350'], + ], + [ + 'name' => 'DryRun', + 'in' => 'formData', + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会更新监听属性。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'ClientToken', + 'in' => 'formData', + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ @@ -4438,1119 +3280,977 @@ 'description' => '请求的返回值。', 'type' => 'object', 'properties' => [ - 'ListenerDescription' => [ - 'title' => '监听描述', - 'description' => '自定义监听描述。'."\n" - ."\n" - .'长度限制为2~256个字符,支持中文和英文字母,可包含数字、半角逗号(,)、半角句号(.)、半角分号(;)、正斜线(/)、at(@)、下划线(_)和短划线(-)。', - 'type' => 'string', - 'example' => 'listener_description', - ], - 'ListenerId' => [ - 'title' => '', - 'description' => '监听ID。', - 'type' => 'string', - 'example' => 'lsn-3kbj3587mqhm3p****', - ], - 'ListenerStatus' => [ - 'title' => '监听状态', - 'description' => '当前监听的状态。取值:'."\n" - ."\n" - .'- **Provisioning**:创建中。'."\n" - .'- **Running**:运行中。'."\n" - .'- **Configuring**:配置中。'."\n" - .'- **Deleting**:删除中。', - 'type' => 'string', - 'example' => 'Provisioning', - ], - 'LoadBalancerId' => [ - 'title' => '负载均衡实例ID', - 'description' => '网关型负载均衡实例ID。', - 'type' => 'string', - 'example' => 'gwlb-te609d6696632f76****', - ], - 'RegionId' => [ - 'title' => '', - 'description' => '网关型负载均衡实例所在的地域 ID。', - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '75CC3312-7757-5EE1-90D8-49CEA66608AE', - ], - 'ServerGroupId' => [ - 'title' => '服务器组ID', - 'description' => '服务器组ID。', - 'type' => 'string', - 'example' => 'sgp-sp8d2r6y7t0xtl****', - ], - 'TcpIdleTimeout' => [ - 'title' => 'TCP连接空闲超时时间。', - 'description' => 'TCP连接空闲超时时间。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '350', - ], - 'Tags' => [ - 'description' => '标签列表。', - 'type' => 'array', - 'items' => [ - 'description' => '标签。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], + 'RequestId' => ['description' => '请求 ID。', 'type' => 'string', 'example' => '7DBFC67C-A272-5952-8287-6C3EBE4E04D9'], ], ], ], ], 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'IncorrectStatus.Listener', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作。'], + ['errorCode' => 'Mismatch.VpcId', 'errorMessage' => 'The %s is mismatched for %s and %s.', 'description' => '两个资源的VPC ID不匹配'], + ['errorCode' => 'ResourceInUse.IP', 'errorMessage' => 'The specified resource of IP is in use.', 'description' => ''], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'errorMessage' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'description' => '配置冲突,自定义配置了的TCP连接空闲超时时间,服务器组的调度算法需要使用五元组哈希。'], + ['errorCode' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', 'errorMessage' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', 'description' => '当服务器组调度算法为五元组哈希时,可以自定义配置TCP连接空闲超时时间。其他调度算法,无法修改。'], + ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的负载均衡资源不存在'], + ['errorCode' => 'ResourceNotFound.Listener', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的监听资源不存在'], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetListenerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '更新监听属性', + 'summary' => '更新负载均衡监听的属性。', + 'description' => '**UpdateListenerAttribute** 接口属于异步接口,即系统返回一个请求 ID,但该监听的配置尚未更新成功,系统后台的更新任务仍在进行。您可以调用 **GetListenerAttribute** 查询监听的配置的更新状态:'."\n" + ."\n" + .'- 当监听器处于 **Configuring** 状态时,表示监听的配置正在更新中。'."\n" + .'- 当监听器处于 **Running** 状态时,表示监听的配置更新成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateListenerAttribute'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerDescription\\": \\"listener_description\\",\\n \\"ListenerId\\": \\"lsn-3kbj3587mqhm3p****\\",\\n \\"ListenerStatus\\": \\"Provisioning\\",\\n \\"LoadBalancerId\\": \\"gwlb-te609d6696632f76****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"75CC3312-7757-5EE1-90D8-49CEA66608AE\\",\\n \\"ServerGroupId\\": \\"sgp-sp8d2r6y7t0xtl****\\",\\n \\"TcpIdleTimeout\\": 350,\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"testKey\\",\\n \\"Value\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => '查询监听详细信息', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7DBFC67C-A272-5952-8287-6C3EBE4E04D9\\"\\n}","type":"json"}]', ], - 'GetListenerHealthStatus' => [ - 'summary' => '查询负载均衡实例监听的健康检查状态。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateLoadBalancerAttribute' => [ + 'summary' => '更新负载均衡实例属性。', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '221400', - 'abilityTreeNodes' => [ - 'FEATUREslbL239O5', - ], + 'abilityTreeCode' => '221916', + 'abilityTreeNodes' => ['FEATUREslbHRNRPI'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ListenerId', + 'name' => 'LoadBalancerId', 'in' => 'formData', - 'schema' => [ - 'description' => '监听ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'lsn-7sixpvm5fc3v0b****', - ], + 'schema' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****'], ], [ - 'name' => 'NextToken', + 'name' => 'LoadBalancerName', 'in' => 'formData', - 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'required' => false, - 'example' => '4f1d7cc9f51e18904e8a063603a6b0c3d03bc69f78734254e0b5e8707e68****', - ], + 'schema' => ['description' => '网关型负载均衡实例名称。'."\n" + ."\n" + .'长度为2~128个英文或中文字符,必须以字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'testGwlbName'], ], [ - 'name' => 'MaxResults', + 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => '分页大小', - 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值为 20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '1000', - 'minimum' => '1', - 'example' => '20', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会更新实例属性。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ - 'name' => 'Skip', + 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'description' => '分页查询时,跳过的条目数。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'由客户端生成该参数值,要保证在不同请求间唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-426655440000'], ], [ - 'name' => 'Filter', + 'name' => 'TrafficMode', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '动态查询条件列表。一次最多添加20个动态查询条件。', - 'type' => 'array', - 'items' => [ - 'description' => '动态查询条件。', - 'type' => 'object', - 'properties' => [ - 'Name' => [ - 'description' => '动态查询条件名称,可选择一个或者多个名称进行查询。取值范围:'."\n" - .'- **Status**:健康检查状态。'."\n" - .'- **ReasonCode**:Status 为异常状态时的详细原因。'."\n" - .'- **ServerId**:后端服务器ID。'."\n" - .'- **ServerIp**:后端服务器IP地址。', - 'type' => 'string', - 'required' => false, - 'example' => 'Status', - 'enum' => [ - 'Status', - 'ReasonCode', - 'ServerId', - 'ServerIp', - ], - ], - 'Values' => [ - 'description' => '动态查询条件的值列表。一次最多添加20个值。', - 'type' => 'array', - 'items' => [ - 'description' => '动态查询条件的值。取值范围参考返回参数中相应字段的取值。', - 'type' => 'string', - 'required' => false, - 'example' => 'Unhealthy', - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, - ], + 'schema' => ['description' => '流量模式。取值:'."\n" + ."\n" + .'- **LoadBalance**:负载均衡。'."\n" + .'- **ByPass**:绕行模式。', 'type' => 'string', 'required' => false, 'example' => 'LoadBalance'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '请求的返回值。', + 'description' => '', 'type' => 'object', 'properties' => [ - 'ListenerHealthStatus' => [ - 'description' => '监听的服务器组健康检查状态列表。', - 'type' => 'array', - 'items' => [ - 'description' => '监听的服务器组健康检查状态结构。', - 'type' => 'object', - 'properties' => [ - 'ListenerId' => [ - 'description' => '监听ID。', - 'type' => 'string', - 'example' => 'lsn-sg8aha6pzjavvo****', - ], - 'ServerGroupInfos' => [ - 'description' => '服务器组信息列表。', - 'type' => 'array', - 'items' => [ - 'description' => '服务器组信息。', - 'type' => 'object', - 'properties' => [ - 'HealthCheckEnabled' => [ - 'description' => '是否开启健康检查。取值:'."\n" - .'- **true**:开启。'."\n" - .'- **false**:关闭。', - 'type' => 'boolean', - 'example' => 'true', - ], - 'ServerGroupId' => [ - 'description' => '服务器组 ID。', - 'type' => 'string', - 'example' => 'sgp-0vdsbyszro3nr6****', - ], - 'Servers' => [ - 'description' => '后端服务器列表。', - 'type' => 'array', - 'items' => [ - 'description' => '后端服务器。', - 'type' => 'object', - 'properties' => [ - 'Port' => [ - 'title' => '服务器端口', - 'description' => '后端服务器端口。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6081', - ], - 'Reason' => [ - 'description' => '**Status**为异常状态时的详细原因。', - 'type' => 'object', - 'properties' => [ - 'ReasonCode' => [ - 'description' => '**Status**为异常状态时的详细原因,取值:'."\n" - ."\n" - .'- **CONNECT_TIMEOUT**:负载均衡健康检查时向后端服务器建立连接超时。'."\n" - .'- **CONNECT_FAIL**:负载均衡健康检查时向后端服务器建立连接失败。'."\n" - .'- **RECV_TIMEOUT**:负载均衡健康检查时从后端服务器接收响应超时。'."\n" - .'- **CONNECT_INTERRUPT**:负载均衡健康检查与后端服务器连接中断。'."\n" - .'- **HTTP_CODE_NOT_MATCH**:负载均衡健康 HTTP 检查时从后端服务器接收的响应码与预期配置返回码不一致。'."\n" - .'- **HTTP_INVALID_HEADER**:负载均衡健康 HTTP 检查时从后端服务器接收响应格式错误。', - 'type' => 'string', - 'example' => 'CONNECT_TIMEOUT', - ], - ], - ], - 'ServerId' => [ - 'title' => '服务器id', - 'description' => '后端服务器ID。', - 'type' => 'string', - 'example' => 'i-2ze4rnh8yj9kif3z****', - ], - 'ServerIp' => [ - 'title' => '服务器ip', - 'description' => '后端服务器IP。', - 'type' => 'string', - 'example' => '192.168.0.XXX', - ], - 'Status' => [ - 'description' => '后端服务器健康检查状态。取值:'."\n" - ."\n" - .'- **Initial**:初始化中,表示负载均衡实例配置了健康检查,但查不到数据。'."\n" - .'- **Unhealthy**:异常,表示连续上报不健康的状态。'."\n" - .'- **Unused**:未使用;'."\n" - .'- **Unavailable**:未开启,表示未开启健康检查;'."\n" - .'- **Healthy**:健康检查正常;', - 'type' => 'string', - 'example' => 'Healthy', - ], - ], - ], - ], - ], - ], - ], - ], - ], - ], - 'MaxResults' => [ - 'description' => '分批次查询时每次显示的条目数。取值范围:1~1000,默认值为 20。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'example' => 'U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A', - ], - 'TotalCount' => [ - 'description' => '本次请求条件下的数据总量。', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '31', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IllegalParam.FilterValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.FilterName', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '更新负载均衡实例属性', + 'description' => '- UpdateLoadBalancerAttribute 属于异步接口,即系统返回一个请求 ID,但该实例属性尚未修改成功,系统后台的变更任务仍在进行。您可以调用 GetLoadBalancerAttribute 查询网关型负载均衡实例的更新状态:'."\n" + .' - 当网关型负载均衡实例处于 Configuring 状态时,表示网关型负载均衡实例正在更新中。'."\n" + .' - 当网关型负载均衡实例处于 Active 状态时,表示网关型负载均衡实例更新成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerAttribute'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ListenerHealthStatus\\": [\\n {\\n \\"ListenerId\\": \\"lsn-sg8aha6pzjavvo****\\",\\n \\"ServerGroupInfos\\": [\\n {\\n \\"HealthCheckEnabled\\": true,\\n \\"ServerGroupId\\": \\"sgp-0vdsbyszro3nr6****\\",\\n \\"Servers\\": [\\n {\\n \\"Port\\": 6081,\\n \\"Reason\\": {\\n \\"ReasonCode\\": \\"CONNECT_TIMEOUT\\"\\n },\\n \\"ServerId\\": \\"i-2ze4rnh8yj9kif3z****\\",\\n \\"ServerIp\\": \\"192.168.0.XXX\\",\\n \\"Status\\": \\"Healthy\\"\\n }\\n ]\\n }\\n ]\\n }\\n ],\\n \\"MaxResults\\": 20,\\n \\"NextToken\\": \\"U12WEI6Ro2ol3wA54rBNSwdC5+lYy6q5SjIQEvc1wz5mjZxV+YjsHRdXV8XauY1BpOQIvwX63E0en54H3D****\\",\\n \\"RequestId\\": \\"0ED4F222-36A0-5470-8A9A-AAB4E96BAC1A\\",\\n \\"TotalCount\\": 31\\n}","type":"json"}]', - 'title' => '查询监听健康检查状态', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B956C629-0E8C-5EFF-BAC1-B0E3A8C5CBDD\\"\\n}","type":"json"}]', ], - 'TagResources' => [ - 'summary' => '为指定的资源列表创建并绑定标签。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateLoadBalancerZones' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225141', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', - ], + 'abilityTreeCode' => '221912', + 'abilityTreeNodes' => ['FEATUREslb23BWZ4'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => '资源类型,取值:'."\n" - ."\n" - .'- **loadbalancer**:网关型负载均衡实例。'."\n" - .'- **listener**:监听。'."\n" - .'- **servergroup**:服务器组。', - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], - ], - ], - [ - 'name' => 'ResourceId', + 'name' => 'LoadBalancerId', 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', - 'type' => 'array', - 'items' => [ - 'description' => '资源ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => true, - 'maxItems' => 50, - 'minItems' => 1, - ], + 'schema' => ['description' => '网关型负载均衡实例的ID。', 'type' => 'string', 'required' => true, 'example' => 'gwlb-9njtjmqt7zfcqm****'], ], [ - 'name' => 'Tag', + 'name' => 'ZoneMappings', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '标签列表。一次调用最多支持 20 个标签。', + 'description' => '可用区及交换机映射列表。至少需要添加一个可用区,最多支持添加20个可用区。若当前地域支持2个及以上的可用区,建议添加2个及以上可用区。', 'type' => 'array', 'items' => [ - 'description' => '标签。', + 'description' => '可用区及交换机映射对象。', 'type' => 'object', 'properties' => [ - 'Key' => [ - 'description' => '标签键。一旦传入该值,则不允许为空字符串。最多支持128个字符,不能以`aliyun`和`acs:`开头,不能包含`http://`或者`https://`。', - 'type' => 'string', - 'required' => true, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => '标签值。最多支持256个字符,不能包含`http://`或`https://`。', - 'type' => 'string', - 'required' => true, - 'example' => 'testValue', - ], + 'VSwitchId' => ['description' => '可用区对应的交换机,每个可用区只能使用一台交换机和一个子网。', 'type' => 'string', 'required' => true, 'example' => 'vsw-bp1n75pbs77v5q6p3****'], + 'ZoneId' => ['description' => '可用区ID,通过调用网关型负载均衡DescribeZones接口获得。', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou-h'], ], - 'required' => true, + 'required' => false, ], 'required' => true, 'maxItems' => 20, - 'minItems' => 1, ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会添加标签。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会更新实例可用区。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'由客户端生成该参数值,要保证在不同请求间唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '请求的返回值。', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '54F6E60A-1777-5C17-A6A9-BCC1A7FE945B', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => 'ED8905C2-A4F6-5E43-87B7-6A5DC8757146'], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagValue', - 'errorMessage' => 'The param of TagValue is missing.', - ], - [ - 'errorCode' => 'ResourceQuotaExceeded.TagNum', - 'errorMessage' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'IllegalParam.TagValue', - 'errorMessage' => 'The param of %s is illegal.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ['errorCode' => 'OperationDenied.VSwitchChangeNotSupport', 'errorMessage' => 'The operation is not allowed because of VSwitchChangeNotSupport.', 'description' => '修改交换机vSwitch操作不支持'], + ['errorCode' => 'DuplicatedParam.VSwitchId', 'errorMessage' => 'The param of VSwitchId is duplicated.', 'description' => '列表中的vSwitchId参数重复'], + ['errorCode' => 'DuplicatedParam.ZoneId', 'errorMessage' => 'The param of ZoneId is duplicated.', 'description' => '列表中的ZoneId参数重复'], + ['errorCode' => 'IllegalParamSize.ZoneMappings', 'errorMessage' => 'The param size of ZoneMappings is illegal.', 'description' => 'ZoneMappings列表数量不合法'], + ['errorCode' => 'IncorrectBusinessStatus.LoadBalancer', 'errorMessage' => 'The business status of %s [%s] is incorrect.', 'description' => '资源%s业务状态%s不支持当前操作'], + ['errorCode' => 'IncorrectStatus.LoadBalancer', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'Mismatch.ZoneIdAndVSwitchId', 'errorMessage' => 'The ZoneId and VSwitchId are mismatched.', 'description' => '参数ZoneId和vSwitchId的值不匹配'], + ['errorCode' => 'MissingParam.LoadBalancerId', 'errorMessage' => 'The param of LoadBalancerId is missing.', 'description' => '负载均衡ID参数缺失'], + ['errorCode' => 'OperationDenied.VSwitchNotSupportIpv6', 'errorMessage' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'description' => '交换机vSwitch没有开启IPv6,操作不支持'], + ['errorCode' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'errorMessage' => 'The specified resource of %s is already associated.', 'description' => '指定资源%s已被关联'], + ['errorCode' => 'ResourceNotEnough.VSwitchIp', 'errorMessage' => 'The specified resource of VSwitchIp is not enough.', 'description' => 'vSwitch IP资源不足'], + ['errorCode' => 'ResourceNotFound.LoadBalancer', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::GetLoadBalancerAttribute', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '更新负载均衡可用区', + 'summary' => '更新负载均衡实例可用区。', + 'description' => '**请确保在使用该接口前,已充分了解网关型负载均衡产品的收费方式和[价格](~~2806160~~)。**'."\n" + ."\n" + .'**UpdateLoadBalancerZones**属于异步接口,即系统返回一个请求ID,但该实例可用区及可用区属性尚未修改成功,系统后台的变更任务仍在进行。您可以调用[GetLoadBalancerAttribute](~~2853555~~)查询网关型负载均衡实例的更新状态:'."\n" + ."\n" + .'- 当网关型负载均衡实例处于**Configuring**状态时,表示网关型负载均衡实例正在更新中。'."\n" + .'- 当网关型负载均衡实例处于**Active**状态时,表示网关型负载均衡实例更新成功。'."\n" + ."\n" + .'><notice>每次调用该接口时,请确保您传入该网关型负载均衡实例的所有可用区参数,包括当前和新增的可用区。如您未传入当前的可用区参数,表示需要将当前可用区删除。您可以通过 GetLoadBalancerAttribute 接口查询该实例的当前可用区。></notice>', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerZones'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerZones', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54F6E60A-1777-5C17-A6A9-BCC1A7FE945B\\"\\n}","type":"json"}]', - 'title' => '添加资源标签', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"ED8905C2-A4F6-5E43-87B7-6A5DC8757146\\"\\n}","type":"json"}]', ], - 'UntagResources' => [ - 'summary' => '为指定的资源列表解绑标签。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateServerGroupAttribute' => [ + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '225142', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', - ], + 'abilityTreeCode' => '225039', + 'abilityTreeNodes' => ['FEATUREslb3GOGI0'], 'autoTest' => true, 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'ResourceType', + 'name' => 'ServerGroupId', + 'in' => 'formData', + 'schema' => ['title' => '服务器组ID', 'description' => '服务器组ID。', 'type' => 'string', 'required' => true, 'example' => 'sgp-atstuj3rtoptyui****'], + ], + [ + 'name' => 'ServerGroupName', + 'in' => 'formData', + 'schema' => ['title' => '服务器组名称', 'description' => '服务器组名称。'."\n" + ."\n" + .'长度为2~128个字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。', 'type' => 'string', 'required' => false, 'example' => 'testServerGroupName'], + ], + [ + 'name' => 'Scheduler', 'in' => 'formData', 'schema' => [ - 'description' => '资源类型,取值:'."\n" + 'title' => '会话保持类型', + 'description' => '调度算法。取值:'."\n" ."\n" - .'- **loadbalancer**:网关型负载均衡实例。'."\n" - .'- **listener**:监听。'."\n" - .'- **servergroup**:服务器组。', + .'- **5TCH**:五元组哈希,基于五元组(源IP、目的IP、源端口、目的端口和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **3TCH**:三元组哈希,基于三元组(源IP、目的IP和协议)的一致性哈希,相同的流会调度到相同的后端服务器。'."\n" + ."\n" + .'- **2TCH**:二元组哈希,基于二元组(源IP和目的IP)的一致性哈希,相同的流会调度到相同的后端服务器。', 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], + 'required' => false, + 'example' => '5TCH', + 'enum' => ['5TCH', '3TCH', '2TCH'], ], ], [ - 'name' => 'ResourceId', + 'name' => 'ServerFailoverMode', 'in' => 'formData', - 'style' => 'flat', 'schema' => [ - 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', - 'type' => 'array', - 'items' => [ - 'description' => '资源ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => true, - 'maxItems' => 50, - 'minItems' => 1, + 'description' => '服务器异常时,存量流量的处理方式。取值:'."\n" + ."\n" + .'- **NoRebalance**:不重新平衡现有流量。'."\n" + .'- **Rebalance**:重新平衡现有流量。', + 'type' => 'string', + 'required' => false, + 'example' => 'NoRebalance', + 'enum' => ['NoRebalance', 'Rebalance'], ], ], [ - 'name' => 'TagKey', + 'name' => 'ConnectionDrainConfig', 'in' => 'formData', 'style' => 'flat', 'schema' => [ - 'description' => '要删除标签的标签键列表。一次调用最多支持删除 20 个标签', - 'type' => 'array', - 'items' => [ - 'description' => '要删除标签的标签键。', - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', + 'title' => '连接优雅中断配置', + 'description' => '连接优雅中断相关配置。', + 'type' => 'object', + 'properties' => [ + 'ConnectionDrainEnabled' => ['title' => '是否开启连接优雅中断', 'description' => '是否开启连接优雅中断。取值:'."\n" + ."\n" + .'- **true**:开启。'."\n" + ."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + 'ConnectionDrainTimeout' => ['title' => '连接优雅中断超时时间', 'description' => '连接优雅中断超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**3600**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '300'], ], 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, ], ], [ - 'name' => 'All', + 'name' => 'HealthCheckConfig', 'in' => 'formData', + 'style' => 'flat', 'schema' => [ - 'description' => '是否解绑资源的所有标签。当填写了TagKey参数时,本参数将被忽略。取值:'."\n" - ."\n" - .'- **true**:解绑资源的所有标签。'."\n" - .'- **false**(默认值):不解绑资源的所有标签。', - 'type' => 'boolean', + 'title' => '健康检查配置', + 'description' => '健康检查相关配置。', + 'type' => 'object', + 'properties' => [ + 'HealthCheckConnectPort' => ['title' => '健康检查使用的端口', 'description' => '健康检查使用的后端服务器的端口。'."\n" + ."\n" + .'取值范围: **1**~**65535**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '80'], + 'HealthCheckConnectTimeout' => ['title' => '健康检查响应的最大超时时间', 'description' => '健康检查响应的最大超时时间。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**300**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5'], + 'HealthCheckDomain' => ['title' => '健康检查的域名', 'description' => '用于健康检查的域名。取值:'."\n" + ."\n" + .'- **$SERVER_IP**:使用后端服务器内网IP。'."\n" + ."\n" + .'- **domain**:指定特定域名。长度限制1~80个字符,只能使用大小写字母、数字、短划线(-)、半角句号(.)。'."\n" + ."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'required' => false, 'example' => '$SERVER_IP'], + 'HealthCheckEnabled' => ['title' => '是否开启健康检查', 'description' => '是否开启健康检查,取值:'."\n" + ."\n" + .'- **true**:开启。'."\n" + ."\n" + .'- **false**:关闭。', 'type' => 'boolean', 'required' => false, 'example' => 'true'], + 'HealthCheckHttpCode' => [ + 'title' => '状态码,多个状态码用逗号分隔', + 'description' => '健康状态返回码列表。', + 'type' => 'array', + 'items' => [ + 'description' => '健康状态返回码,多个状态码用半角逗号(,)分隔。'."\n" + .'取值:'."\n" + .'- **http\\_2xx**:返回HttpCode为2xx视为健康状态。'."\n" + .'- **http\\_3xx**:返回HttpCode为3xx视为健康状态。'."\n" + .'- **http\\_4xx**:返回HttpCode为4xx视为健康状态。'."\n" + .'- **http\\_5xx**:返回HttpCode为5xx视为健康状态。'."\n" + ."\n" + .'默认值:**http\\_2xx** 。'."\n" + ."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', + 'type' => 'string', + 'required' => false, + 'example' => 'http_2xx', + 'enum' => ['http_2xx', 'http_3xx', 'http_4xx', 'http_5xx'], + ], + 'required' => false, + ], + 'HealthCheckInterval' => ['title' => '健康检查时间间隔', 'description' => '健康检查的时间间隔。'."\n" + ."\n" + .'单位:秒。'."\n" + ."\n" + .'取值范围:**1**~**50**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10'], + 'HealthCheckPath' => ['title' => '健康检查的path', 'description' => '健康检查路径。'."\n" + ."\n" + .'长度为1~80个字符,只能使用大小写英文字母、数字、字符`-/.%?#&`。 必须以正斜线(/)开头。'."\n" + .'> 仅**HealthCheckProtocol**为**HTTP**时,该参数生效。', 'type' => 'string', 'required' => false, 'example' => '/test/index.html'], + 'HealthCheckProtocol' => [ + 'title' => '健康检查协议类型', + 'description' => '健康检查协议,取值:'."\n" + ."\n" + .'- **TCP**:通过发送SYN握手报文来检测服务器端口是否存活。'."\n" + ."\n" + .'- **HTTP**:通过发送GET请求模拟浏览器的访问行为来检查服务器应用是否健康。', + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + 'enum' => ['TCP', 'HTTP'], + ], + 'HealthyThreshold' => ['title' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success', 'description' => '健康检查连续成功多少次后,将后端服务器的健康检查状态由**失败**判定为**成功**。'."\n" + ."\n" + .'取值范围:**2**~**10**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], + 'UnhealthyThreshold' => ['title' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail', 'description' => '健康检查连续失败多少次后,将后端服务器的健康检查状态由**成功**判定为**失败**。'."\n" + ."\n" + .'取值范围:**2**~**10**。', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], + 'HealthCheckReq' => ['type' => 'string'], + 'HealthCheckExp' => ['type' => 'string'], + ], 'required' => false, - 'example' => 'true', ], ], [ 'name' => 'DryRun', 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会删除标签。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['title' => 'dryRun标记', 'description' => '是否只预检此次请求。取值:'."\n" + .'- **true**:发送检查请求,不会更新服务器组信息。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" + .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'ClientToken', 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', - ], + 'schema' => ['title' => '幂等token', 'description' => '客户端Token,用于保证请求的幂等性。'."\n" + ."\n" + .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" + ."\n" + .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**不一样。', 'type' => 'string', 'required' => false, 'example' => '123e4567-e89b-12d3-a456-42665544****'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', - 'description' => '请求的返回值。', + 'description' => '返回数据结构体。', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21', - ], + 'RequestId' => ['description' => '请求ID。', 'type' => 'string', 'example' => '54B48E3D-DF70-471B-AA93-08E683A1B45'."\n"], ], ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ExclusiveParam.TagKeyAndAll', - 'errorMessage' => 'The param of %s and %s are mutually exclusive.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'IllegalParam.TagKey', - 'errorMessage' => 'The param of %s is illegal.', - ], + ['errorCode' => 'IllegalParam.HealthCheckProtocol', 'errorMessage' => 'The param of %s is illegal.', 'description' => '健康检查协议非法,请检查输入参数。'], + ['errorCode' => 'IncorrectStatus.ServerGroup', 'errorMessage' => 'The status of %s [%s] is incorrect.', 'description' => '资源%s当前状态%s不支持操作'], + ['errorCode' => 'OperationDenied.SchedulerNotConfigurable', 'errorMessage' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', 'description' => 'TCP连接空闲超时时间为非默认值时,服务器组调度算法仅支持五元组哈希。'], ], 404 => [ - [ - 'errorCode' => 'ResourceNotFound.Listener', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', - ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', - ], + ['errorCode' => 'ResourceNotFound.ServerGroup', 'errorMessage' => 'The specified resource of %s is not found.', 'description' => '指定的服务器组资源不存在。'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3DC0064C-C09E-5C99-8FD4-9CDB2DA7FA21\\"\\n}","type":"json"}]', - 'title' => '删除资源标签', - ], - 'ListTagResources' => [ - 'summary' => '查询指定资源绑定的标签。', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', + 'staticInfo' => ['returnType' => 'asynchronous', 'callback' => 'Gwlb::2024-04-15::ListServerGroups', 'callbackInterval' => 3000, 'maxCallbackTimes' => 100], + 'title' => '更新服务器组属性', + 'summary' => '更新负载均衡服务器组属性。', + 'description' => '**UpdateServerGroupAttribute**接口属于异步接口,即系统返回一个请求ID,但该服务器组的配置尚未更新成功,系统后台的更新任务仍在进行。您可以调用 ListServerGroups 查询服务器组的配置的更新状态:'."\n" + .'- 当服务器组的配置处于**Configuring**状态时,表示服务器组的配置正在更新中。'."\n" + .'- 当服务器组的配置处于**Available**状态时,表示服务器组的配置更新成功。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateServerGroupAttribute'], + ], ], - 'security' => [ + 'ramActions' => [ [ - 'AK' => [], + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateServerGroupAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], + ], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225143', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"54B48E3D-DF70-471B-AA93-08E683A1B45\\\\n\\"\\n}","type":"json"}]', + ], + ], + 'endpoints' => [ + ['regionId' => 'cn-shenzhen', 'regionName' => '华南1(深圳)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-shenzhen.aliyuncs.com', 'endpoint' => 'gwlb.cn-shenzhen.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-shenzhen.aliyuncs.com'], + ['regionId' => 'cn-wulanchabu', 'regionName' => '华北6(乌兰察布)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-wulanchabu.aliyuncs.com', 'endpoint' => 'gwlb.cn-wulanchabu.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-wulanchabu.aliyuncs.com'], + ['regionId' => 'cn-beijing', 'regionName' => '华北2(北京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-beijing.aliyuncs.com', 'endpoint' => 'gwlb.cn-beijing.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-beijing.aliyuncs.com'], + ['regionId' => 'ap-northeast-1', 'regionName' => '日本(东京)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.ap-northeast-1.aliyuncs.com', 'endpoint' => 'gwlb.ap-northeast-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-northeast-1.aliyuncs.com'], + ['regionId' => 'cn-shanghai', 'regionName' => '华东2(上海)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-shanghai.aliyuncs.com', 'endpoint' => 'gwlb.cn-shanghai.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-shanghai.aliyuncs.com'], + ['regionId' => 'cn-hongkong', 'regionName' => '中国香港', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-hongkong.aliyuncs.com', 'endpoint' => 'gwlb.cn-hongkong.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-hongkong.aliyuncs.com'], + ['regionId' => 'ap-southeast-1', 'regionName' => '新加坡', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.ap-southeast-1.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-1.aliyuncs.com'], + ['regionId' => 'ap-southeast-3', 'regionName' => '马来西亚(吉隆坡)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.ap-southeast-3.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-3.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-3.aliyuncs.com'], + ['regionId' => 'ap-southeast-7', 'regionName' => '泰国(曼谷)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.ap-southeast-7.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-7.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-7.aliyuncs.com'], + ['regionId' => 'cn-hangzhou', 'regionName' => '华东1(杭州)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.cn-hangzhou.aliyuncs.com', 'endpoint' => 'gwlb.cn-hangzhou.aliyuncs.com', 'vpc' => 'gwlb-vpc.cn-hangzhou.aliyuncs.com'], + ['regionId' => 'ap-southeast-8', 'regionName' => '马来西亚(柔佛州)', 'areaId' => 'asiaPacific', 'areaName' => '亚太', 'public' => 'gwlb.ap-southeast-8.aliyuncs.com', 'endpoint' => 'gwlb.ap-southeast-8.aliyuncs.com', 'vpc' => 'gwlb-vpc.ap-southeast-8.aliyuncs.com'], + ['regionId' => 'me-east-1', 'regionName' => '阿联酋(迪拜)', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'gwlb.me-east-1.aliyuncs.com', 'endpoint' => 'gwlb.me-east-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.me-east-1.aliyuncs.com'], + ['regionId' => 'me-central-1', 'regionName' => '沙特(利雅得)', 'areaId' => 'middleEast', 'areaName' => '中东', 'public' => 'gwlb.me-central-1.aliyuncs.com', 'endpoint' => 'gwlb.me-central-1.aliyuncs.com', 'vpc' => 'gwlb-vpc.me-central-1.aliyuncs.com'], + ], + 'errorCodes' => [ + ['code' => 'Conflict.Server', 'message' => 'The %s [%s] is conflict.', 'http_code' => 400, 'description' => '%s冲突,已经存在同配置的%s。'], + ['code' => 'DryRunOperation', 'message' => 'Request validation has been passed with DryRun flag set.', 'http_code' => 400, 'description' => 'DryRun请求校验通过'], + ['code' => 'DuplicatedParam.ResourceId', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => '参数%s重复'], + ['code' => 'DuplicatedParam.Server', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => '参数中存在重复的server。'], + ['code' => 'DuplicatedParam.TagKey', 'message' => 'The param of %s is duplicated.', 'http_code' => 400, 'description' => '标签键参数重复'], + ['code' => 'DuplicatedParam.VSwitchId', 'message' => 'The param of VSwitchId is duplicated.', 'http_code' => 400, 'description' => '列表中的vSwitchId参数重复'], + ['code' => 'DuplicatedParam.ZoneId', 'message' => 'The param of ZoneId is duplicated.', 'http_code' => 400, 'description' => '列表中的ZoneId参数重复'], + ['code' => 'ExclusiveParam.TagKeyAndAll', 'message' => 'The param of %s and %s are mutually exclusive.', 'http_code' => 400, 'description' => '标签键参数值与是否解绑资源的所有标签选项的参数值互斥'], + ['code' => 'Forbidden.NoPermission', 'message' => 'Authentication is failed for %s.', 'http_code' => 403, 'description' => '资源%s鉴权失败'], + ['code' => 'IllegalParam.%s', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '参数%s不合法'], + ['code' => 'IllegalParam.FilterName', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '动态查询条件名称非法'], + ['code' => 'IllegalParam.FilterValue', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '动态查询条件的值非法'], + ['code' => 'IllegalParam.HealthCheckProtocol', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '健康检查协议非法,请检查输入参数。'], + ['code' => 'IllegalParam.IP', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '参数IP非法。请检查参数IP的输入值。'], + ['code' => 'IllegalParam.ServerIp', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '参数ServerIp非法,请检查输入参数。'], + ['code' => 'IllegalParam.TagValue', 'message' => 'The param of %s is illegal.', 'http_code' => 400, 'description' => '标签值参数不合法'], + ['code' => 'IllegalParamSize.ZoneMappings', 'message' => 'The param size of ZoneMappings is illegal.', 'http_code' => 400, 'description' => 'ZoneMappings列表数量不合法'], + ['code' => 'IncorrectBusinessStatus.LoadBalancer', 'message' => 'The business status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => '资源%s业务状态%s不支持当前操作'], + ['code' => 'IncorrectStatus.BackendServer', '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' => '资源%s当前状态%s不支持操作'], + ['code' => 'IncorrectStatus.Listener', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => '资源%s当前状态%s不支持操作。'], + ['code' => 'IncorrectStatus.LoadBalancer', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => '资源%s当前状态%s不支持操作'], + ['code' => 'IncorrectStatus.ServerGroup', 'message' => 'The status of %s [%s] is incorrect.', 'http_code' => 400, 'description' => '资源%s当前状态%s不支持操作'], + ['code' => 'Mismatch.IP', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => '输入的IP类型服务器的ID和IP不匹配。'], + ['code' => 'Mismatch.ServerType', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => 'ServerType不匹配。'], + ['code' => 'Mismatch.VpcId', 'message' => 'The %s is mismatched for %s and %s.', 'http_code' => 400, 'description' => '两个资源的VPC ID不匹配'], + ['code' => 'Mismatch.ZoneIdAndVSwitchId', 'message' => 'The ZoneId and VSwitchId are mismatched.', 'http_code' => 400, 'description' => '参数ZoneId和vSwitchId的值不匹配'], + ['code' => 'MissingParam.%s', 'message' => 'The param of %s is missing.', 'http_code' => 400, 'description' => '参数%s缺失'], + ['code' => 'MissingParam.LoadBalancerId', 'message' => 'The param of LoadBalancerId is missing.', 'http_code' => 400, 'description' => '负载均衡ID参数缺失'], + ['code' => 'MissingParam.TagKey', 'message' => 'The param of TagKey is missing.', 'http_code' => 400, 'description' => '标签键参数缺失'], + ['code' => 'MissingParam.TagsOrResourceIds', 'message' => 'The param of TagsOrResourceIds is missing.', 'http_code' => 400, 'description' => '标签列表与资源ID列表全部未设置或为空列表'], + ['code' => 'MissingParam.TagValue', 'message' => 'The param of TagValue is missing.', 'http_code' => 400, 'description' => '标签值参数缺失'], + ['code' => 'OperationDenied.NotExist.ResourceGroup', 'message' => 'The operation is not allowed because of NotExist.ResourceGroup.', 'http_code' => 400, 'description' => '操作被拒绝,资源组不存在'], + ['code' => 'OperationDenied.SchedulerNotConfigurable', 'message' => 'The scheduling algorithm of server group is configurable only when TCP idle timeout of listener is default value.', 'http_code' => 400, 'description' => 'TCP连接空闲超时时间为非默认值时,服务器组调度算法仅支持五元组哈希。'], + ['code' => 'OperationDenied.StatusCheckFail.ResourceGroup', 'message' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', 'http_code' => 400, 'description' => '操作被拒绝,资源组状态异常'], + ['code' => 'OperationDenied.TcpIdleTimeoutConflictWithScheduler', 'message' => 'The TCP idle timeout of listener must be default value when the scheduling algorithm of server group is not 5TCH.', 'http_code' => 400, 'description' => '配置冲突,自定义配置了的TCP连接空闲超时时间,服务器组的调度算法需要使用五元组哈希。'], + ['code' => 'OperationDenied.TcpIdleTimeoutNotConfigurable', 'message' => 'The TCP idle timeout of listener is configurable only when the scheduling algorithm of server group is 5TCH.', 'http_code' => 400, 'description' => '当服务器组调度算法为五元组哈希时,可以自定义配置TCP连接空闲超时时间。其他调度算法,无法修改。'], + ['code' => 'OperationDenied.TooManyListeners', 'message' => 'The operation is not allowed because of TooManyListener.', 'http_code' => 400, 'description' => '负载均衡实例下的监听数量超过限制,操作不支持'], + ['code' => 'OperationDenied.VSwitchChangeNotSupport', 'message' => 'The operation is not allowed because of VSwitchChangeNotSupport.', 'http_code' => 400, 'description' => '修改交换机vSwitch操作不支持'], + ['code' => 'OperationDenied.VSwitchNotSupportIpv6', 'message' => 'The operation is not allowed because of VSwitchNotSupportIpv6.', 'http_code' => 400, 'description' => '交换机vSwitch没有开启IPv6,操作不支持'], + ['code' => 'QuotaExceeded.LoadBalancersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => '配额gwlb_quota_loadbalancers_num已超额度限制。'], + ['code' => 'QuotaExceeded.ServerGroupAzServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => '配额gwlb_quota_servergroup_az_servers_num已超额度限制。'], + ['code' => 'QuotaExceeded.ServerGroupServersNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => '配额gwlb_quota_servergroup_servers_num已超额度限制。'], + ['code' => 'QuotaExceeded.ServerGroupsNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => '配额gwlb_quota_servergroups_num已超额度限制。'], + ['code' => 'ResourceAlreadyAssociated.GwlbeAssociated', 'message' => 'The specified resource of %s is already associated.', 'http_code' => 400, 'description' => '指定资源%s已被关联'], + ['code' => 'ResourceInUse.Eni', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => '传入的eni不能是网关型负载均衡实例使用的eni,请检查参数。'], + ['code' => 'ResourceInUse.IP', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => '指定的IP地址已被使用'], + ['code' => 'ResourceInUse.ServerGroup', 'message' => 'The specified resource of %s is in use.', 'http_code' => 400, 'description' => '指定的服务器组资源正在使用中,请稍后重试。'], + ['code' => 'ResourceNotEnough.VSwitchIp', 'message' => 'The specified resource of VSwitchIp is not enough.', 'http_code' => 400, 'description' => 'vSwitch IP资源不足'], + ['code' => 'ResourceNotFound.BackendServer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的后端服务器资源不存在。'], + ['code' => 'ResourceNotFound.Eci', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的弹性容器实例资源不存在。'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is in use.', 'http_code' => 404, 'description' => '指定的云服务器资源不存在。'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的云服务器资源不存在。'], + ['code' => 'ResourceNotFound.Ecs', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的云服务器资源不存在。'], + ['code' => 'ResourceNotFound.Eni', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的弹性网卡资源不存在。'], + ['code' => 'ResourceNotFound.Listener', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的监听资源不存在'], + ['code' => 'ResourceNotFound.LoadBalancer', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的负载均衡资源不存在'], + ['code' => 'ResourceNotFound.ServerGroup', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的服务器组资源不存在。'], + ['code' => 'ResourceNotFound.Vpc', 'message' => 'The specified resource of %s is not found.', 'http_code' => 404, 'description' => '指定的专有网络资源不存在。'], + ['code' => 'ResourceQuotaExceeded.TagNum', 'message' => 'The quota of %s is exceeded for resource %s, usage %s/%s.', 'http_code' => 400, 'description' => '资源绑定的标签数量超限'], + ['code' => 'UnauthorizedRegion', 'message' => 'The specified region of %s is not authorized.', 'http_code' => 400, 'description' => '指定地域%s没有授权'], + ], + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetLoadBalancerAttribute'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListTagResources'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UntagResources'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroupServers'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerZones'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListLoadBalancers'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListServerGroups'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'MoveResourceGroup'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'GetListenerHealthStatus'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateListenerAttribute'], + ['threshold' => '100', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateLoadBalancer'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateLoadBalancerAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'UpdateServerGroupAttribute'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'RemoveServersFromServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateServerGroup'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeRegions'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeZones'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddServersToServerGroup'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteLoadBalancer'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'CreateListener'], + ['threshold' => '600', 'countWindow' => 60, 'regionId' => '*', 'api' => 'ListListeners'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'TagResources'], + ['threshold' => '200', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DeleteListener'], + ], + ], + 'ram' => [ + 'productCode' => 'GWLB', + 'productName' => '负载均衡', + 'ramCodes' => ['gwlb'], + 'ramLevel' => '资源级', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'RemoveServersFromServerGroup', + 'description' => '服务器组中移除后端服务器', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:RemoveServersFromServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ], ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => '资源类型,取值:'."\n" - ."\n" - .'- **loadbalancer**:网关型负载均衡实例。'."\n" - .'- **listener**:监听。'."\n" - .'- **servergroup**:服务器组。', - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [], + [ + 'apiName' => 'UpdateLoadBalancerAttribute', + 'description' => '更新负载均衡实例属性', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '资源 ID列表。一次调用最多支持添加 50 个资源 ID。', - 'type' => 'array', - 'items' => [ - 'description' => '资源ID。', - 'type' => 'string', - 'required' => false, - 'example' => 'gwlb-nrnrxwd15en27r****', - ], - 'required' => false, - 'maxItems' => 50, - 'minItems' => 1, + ], + [ + 'apiName' => 'AddServersToServerGroup', + 'description' => '服务器组中添加后端服务器', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:AddServersToServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], ], ], - [ - 'name' => 'Tag', - 'in' => 'formData', - 'style' => 'flat', - 'schema' => [ - 'description' => '标签列表。一次调用最多支持 20 个标签。', - 'type' => 'array', - 'items' => [ - 'description' => '标签。', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '标签键。', - 'type' => 'string', - 'required' => false, - 'example' => 'testKey', - ], - 'Value' => [ - 'description' => '标签值。', - 'type' => 'string', - 'required' => false, - 'example' => 'testValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - 'minItems' => 1, + ], + [ + 'apiName' => 'GetLoadBalancerAttribute', + 'description' => '查询负载均衡实例详细信息', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetLoadBalancerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'NextToken', - 'in' => 'formData', - 'schema' => [ - 'title' => '分页游标', - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'required' => false, - 'example' => 'WyI2NDQ3MWUxM2EzOWNhMmY0Y2M2YTRiNzZhOWQwNmU1Y2RlNTYzMGEzIiwibiIsIm4iLDEsLTEsMTY5ODcxMzI2NjU0MywiNjU0MDRlYjI2MmI3MDhjY2JiMjM0ZmU0ODNkNTVmMGRhZDllOTBi****', + ], + [ + 'apiName' => 'UpdateListenerAttribute', + 'description' => '更新监听属性', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], ], ], - [ - 'name' => 'MaxResults', - 'in' => 'formData', - 'schema' => [ - 'description' => '使用NextToken方式查询时,每次最多返回的结果数。取值范围:1~1000。默认值:20。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', + ], + [ + 'apiName' => 'UpdateLoadBalancerZones', + 'description' => '更新负载均衡可用区', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateLoadBalancerZones', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => '请求的返回值。', - 'type' => 'object', - 'properties' => [ - 'NextToken' => [ - 'description' => '是否拥有下一次查询的令牌(Token)。取值:'."\n" - .'- 如果**NextToken**为空表示没有下一次查询。'."\n" - .'- 如果**NextToken**有返回值,该取值表示下一次查询开始的令牌。', - 'type' => 'string', - 'example' => 'd209f4e63ec942c967c50c888a13****', - ], - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => 'A95325A2-E421-58A6-88AD-7A26CE610F45', - ], - 'TagResources' => [ - 'description' => '标签资源列表。', - 'type' => 'array', - 'items' => [ - 'description' => '资源绑定的标签信息。', - 'type' => 'object', - 'properties' => [ - 'ResourceId' => [ - 'description' => '资源ID。', - 'type' => 'string', - 'example' => 'gwlb-nrnrxwd15en27r****'."\n", - ], - 'ResourceType' => [ - 'description' => '资源类型,取值:'."\n" - ."\n" - .'- **loadbalancer**:网关型负载均衡实例。'."\n" - .'- **listener**:监听。'."\n" - .'- **servergroup**:服务器组。', - 'type' => 'string', - 'example' => 'loadbalancer', - ], - 'TagKey' => [ - 'description' => '标签键。', - 'type' => 'string', - 'example' => 'testKey', - ], - 'TagValue' => [ - 'description' => '标签值。', - 'type' => 'string', - 'example' => 'testValue', - ], - ], - ], - ], - ], + [ + 'apiName' => 'ListTagResources', + 'description' => '查询资源标签', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParam.TagsOrResourceIds', - 'errorMessage' => 'The param of TagsOrResourceIds is missing.', - ], - [ - 'errorCode' => 'MissingParam.TagKey', - 'errorMessage' => 'The param of TagKey is missing.', - ], - [ - 'errorCode' => 'DuplicatedParam.ResourceId', - 'errorMessage' => 'The param of %s is duplicated.', - ], - [ - 'errorCode' => 'DuplicatedParam.TagKey', - 'errorMessage' => 'The param of %s is duplicated.', + [ + 'apiName' => 'CreateLoadBalancer', + 'description' => '创建负载均衡实例', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'GetListenerAttribute', + 'description' => '查询监听详细信息', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"d209f4e63ec942c967c50c888a13****\\",\\n \\"RequestId\\": \\"A95325A2-E421-58A6-88AD-7A26CE610F45\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"gwlb-nrnrxwd15en27r****\\\\n\\",\\n \\"ResourceType\\": \\"loadbalancer\\",\\n \\"TagKey\\": \\"testKey\\",\\n \\"TagValue\\": \\"testValue\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => '查询资源标签', - ], - 'MoveResourceGroup' => [ - 'summary' => '修改资源所属的资源组。', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'ListServerGroups', + 'description' => '查询服务器组列表', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'DeleteServerGroup', + 'description' => '删除服务器组', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'GetListenerHealthStatus', + 'description' => '查询监听健康检查状态', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:GetListenerHealthStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ], ], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'MoveResourceGroup', + 'description' => '迁移资源组', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225546', - 'abilityTreeNodes' => [ - 'FEATUREslbRXTOWD', + 'ramAction' => [ + 'action' => 'gwlb:MoveResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ], ], - 'autoTest' => true, - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'ResourceId', - 'in' => 'formData', - 'schema' => [ - 'description' => '资源ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'gwlb-nrnrxwd15en27r****', + [ + 'apiName' => 'UntagResources', + 'description' => '删除资源标签', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UntagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'NewResourceGroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => '目标资源组ID。', - 'type' => 'string', - 'required' => true, - 'example' => 'rg-aek253e4oit****', + ], + [ + 'apiName' => 'DeleteLoadBalancer', + 'description' => '删除负载均衡实例', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteLoadBalancer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'formData', - 'schema' => [ - 'description' => '资源类型,取值:'."\n" - ."\n" - .'- **loadbalancer**:网关型负载均衡实例。'."\n" - .'- **servergroup**:服务器组。', - 'type' => 'string', - 'required' => true, - 'example' => 'loadbalancer', - 'enum' => [ - 'loadbalancer', - 'servergroup', - ], + ], + [ + 'apiName' => 'TagResources', + 'description' => '添加资源标签', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:TagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], ], ], - [ - 'name' => 'DryRun', - 'in' => 'formData', - 'schema' => [ - 'title' => 'dryRun标记', - 'description' => '是否只预检此次请求。取值:'."\n" - .'- **true**:发送检查请求,不会迁移资源组。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码`DryRunOperation`。'."\n" - .'- **false**(默认值):发送正常请求,通过检查后返回HTTP 2xx状态码并直接进行操作。', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + ], + [ + 'apiName' => 'ListLoadBalancers', + 'description' => '查询负载均衡实例列表', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListLoadBalancers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#loadbalancerId}'], + ['validationType' => 'conditional', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], ], ], - [ - 'name' => 'ClientToken', - 'in' => 'formData', - 'schema' => [ - 'title' => '幂等token', - 'description' => '客户端Token,用于保证请求的幂等性。'."\n" - ."\n" - .'从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符。'."\n" - ."\n" - .'> 若您未指定,则系统自动使用API请求的**RequestId**作为**ClientToken**标识。每次API请求的**RequestId**可能不一样。', - 'type' => 'string', - 'required' => false, - 'example' => '123e4567-e89b-12d3-a456-42665544****', + ], + [ + 'apiName' => 'DeleteListener', + 'description' => '删除监听', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'gwlb:DeleteListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => '', - 'description' => '请求的返回值。', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '请求ID。', - 'type' => 'string', - 'example' => '78828B5C-521E-50F3-84D4-7019691D1382', - ], - ], + [ + 'apiName' => 'ListListeners', + 'description' => '查询监听列表', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'gwlb:ListListeners', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'OperationDenied.NotExist.ResourceGroup', - 'errorMessage' => 'The operation is not allowed because of NotExist.ResourceGroup.', - ], - [ - 'errorCode' => 'OperationDenied.StatusCheckFail.ResourceGroup', - 'errorMessage' => 'The operation is not allowed because of StatusCheckFail.ResourceGroup.', + [ + 'apiName' => 'CreateListener', + 'description' => '创建监听', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateListener', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadbalancerId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], ], ], - 404 => [ - [ - 'errorCode' => 'ResourceNotFound.LoadBalancer', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + [ + 'apiName' => 'UpdateServerGroupAttribute', + 'description' => '更新服务器组属性', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'gwlb:UpdateServerGroupAttribute', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], ], - [ - 'errorCode' => 'ResourceNotFound.ServerGroup', - 'errorMessage' => 'The specified resource of %s is not found.', + ], + ], + [ + 'apiName' => 'ListServerGroupServers', + 'description' => '查询服务器组中的服务器列表', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'gwlb:ListServerGroupServers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => '全部资源', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'CreateServerGroup', + 'description' => '创建服务器组', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'gwlb:CreateServerGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'always', 'product' => 'GWLB', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"78828B5C-521E-50F3-84D4-7019691D1382\\"\\n}","type":"json"}]', - 'title' => '迁移资源组', - ], - ], - 'endpoints' => [ - [ - 'regionId' => 'cn-wulanchabu', - 'endpoint' => 'gwlb.cn-wulanchabu.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-1', - 'endpoint' => 'gwlb.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing', - 'endpoint' => 'gwlb.cn-beijing.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai', - 'endpoint' => 'gwlb.cn-shanghai.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou', - 'endpoint' => 'gwlb.cn-hangzhou.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong', - 'endpoint' => 'gwlb.cn-hongkong.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-1', - 'endpoint' => 'gwlb.ap-northeast-1.aliyuncs.com', ], - [ - 'regionId' => 'cn-shenzhen', - 'endpoint' => 'gwlb.cn-shenzhen.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-3', - 'endpoint' => 'gwlb.ap-southeast-3.aliyuncs.com', + 'resourceTypes' => [ + ['validationType' => 'always', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId}'], + ['validationType' => 'conditional', 'resourceType' => 'Instance', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:instance/{#InstanceId}'], + ['validationType' => 'conditional', 'resourceType' => 'NetworkInterface', 'arn' => 'acs:ecs:{#regionId}:{#accountId}:eni/{#ServerId}'], + ['validationType' => 'conditional', 'resourceType' => 'ContainerGroup', 'arn' => 'acs:eci:{#regionId}:{#accountId}:containergroup/{#ServerId}'], + ['validationType' => 'always', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/{#LoadBalancerId}'], + ['validationType' => 'always', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/{#ListenerId}'], + ['validationType' => 'always', 'resourceType' => 'VSwitch', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vswitch/{#VSwitchId}'], + ['validationType' => 'conditional', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/*'], + ['validationType' => 'conditional', 'resourceType' => 'Listener', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:listener/*'], + ['validationType' => 'conditional', 'resourceType' => 'LoadBalancer', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:loadbalancer/*'], + ['validationType' => 'always', 'resourceType' => 'VPC', 'arn' => 'acs:vpc:{#regionId}:{#accountId}:vpc/{#VpcId}'], + ['validationType' => 'conditional', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:serverGroup/{#serverGroupId}'], + ['validationType' => 'always', 'resourceType' => 'ServerGroup', 'arn' => 'acs:gwlb:{#regionId}:{#accountId}:servergroup/{#ServerGroupId{#ServerGroupId}'], ], ], ]; |
