247 lines
21 KiB
PHP
Raw Normal View History

2023-07-15 10:16:32 +08:00
<?php
/*
* Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace TencentCloud\As\V20180419;
use TencentCloud\Common\AbstractClient;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Credential;
use TencentCloud\As\V20180419\Models as Models;
/**
* @method Models\AttachInstancesResponse AttachInstances(Models\AttachInstancesRequest $req) 本接口AttachInstances用于将 CVM 实例添加到伸缩组。
* 仅支持添加处于`RUNNING`(运行中)或`STOPPED`(已关机)状态的 CVM 实例
* 添加的 CVM 实例需要和伸缩组 VPC 网络一致
* @method Models\AttachLoadBalancersResponse AttachLoadBalancers(Models\AttachLoadBalancersRequest $req) 此接口AttachLoadBalancers用于将负载均衡器添加到伸缩组。
* @method Models\ClearLaunchConfigurationAttributesResponse ClearLaunchConfigurationAttributes(Models\ClearLaunchConfigurationAttributesRequest $req) 本接口ClearLaunchConfigurationAttributes用于将启动配置内的特定属性完全清空。
* @method Models\CompleteLifecycleActionResponse CompleteLifecycleAction(Models\CompleteLifecycleActionRequest $req) 本接口CompleteLifecycleAction用于完成生命周期动作。
* 用户通过调用本接口指定一个具体的生命周期挂钩的结果“CONITNUE”或者“ABANDON”。如果一直不调用本接口则生命周期挂钩会在超时后按照“DefaultResult”进行处理。
* @method Models\CreateAutoScalingGroupResponse CreateAutoScalingGroup(Models\CreateAutoScalingGroupRequest $req) 本接口CreateAutoScalingGroup用于创建伸缩组
* @method Models\CreateAutoScalingGroupFromInstanceResponse CreateAutoScalingGroupFromInstance(Models\CreateAutoScalingGroupFromInstanceRequest $req) 本接口CreateAutoScalingGroupFromInstance用于根据实例创建启动配置及伸缩组。
说明:根据按包年包月计费的实例所创建的伸缩组,其扩容的实例为按量计费实例。
* @method Models\CreateLaunchConfigurationResponse CreateLaunchConfiguration(Models\CreateLaunchConfigurationRequest $req) 本接口CreateLaunchConfiguration用于创建新的启动配置。
* 启动配置,可以通过 `ModifyLaunchConfigurationAttributes` 修改少量字段。如需使用新的启动配置,建议重新创建启动配置。
* 每个项目最多只能创建20个启动配置详见[使用限制](https://cloud.tencent.com/document/product/377/3120)
* @method Models\CreateLifecycleHookResponse CreateLifecycleHook(Models\CreateLifecycleHookRequest $req) 本接口CreateLifecycleHook用于创建生命周期挂钩。
* 您可以为生命周期挂钩配置消息通知或执行自动化助手命令。
如果您配置了通知消息弹性伸缩会通知您的TDMQ消息队列通知内容形如
```
{
"Service": "Tencent Cloud Auto Scaling",
"Time": "2019-03-14T10:15:11Z",
"AppId": "1251783334",
"ActivityId": "asa-fznnvrja",
"AutoScalingGroupId": "asg-rrrrtttt",
"LifecycleHookId": "ash-xxxxyyyy",
"LifecycleHookName": "my-hook",
"LifecycleActionToken": "3080e1c9-0efe-4dd7-ad3b-90cd6618298f",
"InstanceId": "ins-aaaabbbb",
"LifecycleTransition": "INSTANCE_LAUNCHING",
"NotificationMetadata": ""
}
```
* @method Models\CreateNotificationConfigurationResponse CreateNotificationConfiguration(Models\CreateNotificationConfigurationRequest $req) 本接口CreateNotificationConfiguration用于创建通知。
通知到 CMQ 主题或队列时,消息内容如下:
```
{
"Service": "Tencent Cloud Auto Scaling",
"CreatedTime": "2021-10-11T10:15:11Z", // 活动创建时间
"AppId": "100000000",
"ActivityId": "asa-fznnvrja", // 伸缩活动ID
"AutoScalingGroupId": "asg-pc2oqu2z", // 伸缩组ID
"ActivityType": "SCALE_OUT", // 伸缩活动类型
"StatusCode": "SUCCESSFUL", // 伸缩活动结果
"Description": "Activity was launched in response to a difference between desired capacity and actual capacity,
scale out 1 instance(s).", // 伸缩活动描述
"StartTime": "2021-10-11T10:15:11Z", // 活动开始时间
"EndTime": "2021-10-11T10:15:32Z", // 活动结束时间
"DetailedStatusMessageSet": [ // 活动内部错误集合(非空不代表活动失败)
{
"Code": "InvalidInstanceType",
"Zone": "ap-guangzhou-2",
"InstanceId": "",
"InstanceChargeType": "POSTPAID_BY_HOUR",
"SubnetId": "subnet-4t5mgeuu",
"Message": "The specified instance type `S5.LARGE8` is invalid in `subnet-4t5mgeuu`, `ap-guangzhou-2`.",
"InstanceType": "S5.LARGE8"
}
]
}
```
* @method Models\CreateScalingPolicyResponse CreateScalingPolicy(Models\CreateScalingPolicyRequest $req) 本接口CreateScalingPolicy用于创建告警触发策略。
* @method Models\CreateScheduledActionResponse CreateScheduledAction(Models\CreateScheduledActionRequest $req) 本接口CreateScheduledAction用于创建定时任务。
* @method Models\DeleteAutoScalingGroupResponse DeleteAutoScalingGroup(Models\DeleteAutoScalingGroupRequest $req) 本接口DeleteAutoScalingGroup用于删除指定伸缩组删除前提是伸缩组内无运行中IN_SERVICE状态的实例且当前未在执行伸缩活动。删除伸缩组后创建失败CREATION_FAILED、中止失败TERMINATION_FAILED、解绑失败DETACH_FAILED等非运行中状态的实例不会被销毁。
* @method Models\DeleteLaunchConfigurationResponse DeleteLaunchConfiguration(Models\DeleteLaunchConfigurationRequest $req) 本接口DeleteLaunchConfiguration用于删除启动配置。
* 若启动配置在伸缩组中属于生效状态,则该启动配置不允许删除。
* @method Models\DeleteLifecycleHookResponse DeleteLifecycleHook(Models\DeleteLifecycleHookRequest $req) 本接口DeleteLifecycleHook用于删除生命周期挂钩。
* @method Models\DeleteNotificationConfigurationResponse DeleteNotificationConfiguration(Models\DeleteNotificationConfigurationRequest $req) 本接口DeleteNotificationConfiguration用于删除特定的通知。
* @method Models\DeleteScalingPolicyResponse DeleteScalingPolicy(Models\DeleteScalingPolicyRequest $req) 本接口DeleteScalingPolicy用于删除告警触发策略。
* @method Models\DeleteScheduledActionResponse DeleteScheduledAction(Models\DeleteScheduledActionRequest $req) 本接口DeleteScheduledAction用于删除特定的定时任务。
* @method Models\DescribeAccountLimitsResponse DescribeAccountLimits(Models\DescribeAccountLimitsRequest $req) 本接口DescribeAccountLimits用于查询用户账户在弹性伸缩中的资源限制。
* @method Models\DescribeAutoScalingActivitiesResponse DescribeAutoScalingActivities(Models\DescribeAutoScalingActivitiesRequest $req) 本接口DescribeAutoScalingActivities用于查询伸缩组的伸缩活动记录。
* @method Models\DescribeAutoScalingAdvicesResponse DescribeAutoScalingAdvices(Models\DescribeAutoScalingAdvicesRequest $req) 此接口用于查询伸缩组配置建议。
* @method Models\DescribeAutoScalingGroupLastActivitiesResponse DescribeAutoScalingGroupLastActivities(Models\DescribeAutoScalingGroupLastActivitiesRequest $req) 本接口DescribeAutoScalingGroupLastActivities用于查询伸缩组的最新一次伸缩活动记录。
* @method Models\DescribeAutoScalingGroupsResponse DescribeAutoScalingGroups(Models\DescribeAutoScalingGroupsRequest $req) 本接口DescribeAutoScalingGroups用于查询伸缩组信息。
* 可以根据伸缩组ID、伸缩组名称或者启动配置ID等信息来查询伸缩组的详细信息。过滤信息详细请见过滤器`Filter`
* 如果参数为空,返回当前用户一定数量(`Limit`所指定的数量默认为20的伸缩组。
* @method Models\DescribeAutoScalingInstancesResponse DescribeAutoScalingInstances(Models\DescribeAutoScalingInstancesRequest $req) 本接口DescribeAutoScalingInstances用于查询弹性伸缩关联实例的信息。
* 可以根据实例ID、伸缩组ID等信息来查询实例的详细信息。过滤信息详细请见过滤器`Filter`
* 如果参数为空,返回当前用户一定数量(`Limit`所指定的数量默认为20的实例。
* @method Models\DescribeLaunchConfigurationsResponse DescribeLaunchConfigurations(Models\DescribeLaunchConfigurationsRequest $req) 本接口DescribeLaunchConfigurations用于查询启动配置的信息。
* 可以根据启动配置ID、启动配置名称等信息来查询启动配置的详细信息。过滤信息详细请见过滤器`Filter`
* 如果参数为空,返回当前用户一定数量(`Limit`所指定的数量默认为20的启动配置。
* @method Models\DescribeLifecycleHooksResponse DescribeLifecycleHooks(Models\DescribeLifecycleHooksRequest $req) 本接口DescribeLifecycleHooks用于查询生命周期挂钩信息。
* 可以根据伸缩组ID、生命周期挂钩ID或者生命周期挂钩名称等信息来查询生命周期挂钩的详细信息。过滤信息详细请见过滤器`Filter`
* 如果参数为空,返回当前用户一定数量(`Limit`所指定的数量默认为20的生命周期挂钩。
* @method Models\DescribeNotificationConfigurationsResponse DescribeNotificationConfigurations(Models\DescribeNotificationConfigurationsRequest $req) 本接口 (DescribeNotificationConfigurations) 用于查询一个或多个通知的详细信息。
可以根据通知ID、伸缩组ID等信息来查询通知的详细信息。过滤信息详细请见过滤器`Filter`
如果参数为空返回当前用户一定数量Limit所指定的数量默认为20的通知。
* @method Models\DescribeScalingPoliciesResponse DescribeScalingPolicies(Models\DescribeScalingPoliciesRequest $req) 本接口DescribeScalingPolicies用于查询告警触发策略。
* @method Models\DescribeScheduledActionsResponse DescribeScheduledActions(Models\DescribeScheduledActionsRequest $req) 本接口 (DescribeScheduledActions) 用于查询一个或多个定时任务的详细信息。
* 可以根据定时任务ID、定时任务名称或者伸缩组ID等信息来查询定时任务的详细信息。过滤信息详细请见过滤器`Filter`
* 如果参数为空返回当前用户一定数量Limit所指定的数量默认为20的定时任务。
* @method Models\DetachInstancesResponse DetachInstances(Models\DetachInstancesRequest $req) 本接口DetachInstances用于从伸缩组移出 CVM 实例,本接口不会销毁实例。
* 如果移出指定实例后,伸缩组内处于`IN_SERVICE`状态的实例数量小于伸缩组最小值,接口将报错
* 如果伸缩组处于`DISABLED`状态,移出操作不校验`IN_SERVICE`实例数量和最小值的关系
* 对于伸缩组配置的 CLB实例在离开伸缩组时AS 会进行解挂载动作
* @method Models\DetachLoadBalancersResponse DetachLoadBalancers(Models\DetachLoadBalancersRequest $req) 本接口DetachLoadBalancers用于从伸缩组移出负载均衡器本接口不会销毁负载均衡器。
* @method Models\DisableAutoScalingGroupResponse DisableAutoScalingGroup(Models\DisableAutoScalingGroupRequest $req) 本接口DisableAutoScalingGroup用于停用指定伸缩组。
* 停用伸缩组后,自动触发的伸缩活动不再进行,包括:
- 告警策略触发的伸缩活动
- 匹配期望实例数的伸缩活动
- 不健康实例替换活动
- 定时任务
* 停用伸缩组后,手动触发的伸缩活动允许进行,包括:
- 指定数量扩容实例ScaleOutInstances
- 指定数量缩容实例ScaleInInstances
- 从伸缩组中移出 CVM 实例DetachInstances
- 从伸缩组中删除 CVM 实例RemoveInstances
- 添加 CVM 实例到伸缩组AttachInstances
- 关闭伸缩组内 CVM 实例StopAutoScalingInstances
- 开启伸缩组内 CVM 实例StartAutoScalingInstances
* @method Models\EnableAutoScalingGroupResponse EnableAutoScalingGroup(Models\EnableAutoScalingGroupRequest $req) 本接口EnableAutoScalingGroup用于启用指定伸缩组。
* @method Models\ExecuteScalingPolicyResponse ExecuteScalingPolicy(Models\ExecuteScalingPolicyRequest $req) 本接口ExecuteScalingPolicy用于执行伸缩策略。
* 可以根据伸缩策略ID执行伸缩策略。
* 伸缩策略所属伸缩组处于伸缩活动时,会拒绝执行伸缩策略。
* 本接口不支持执行目标追踪策略。
* @method Models\ModifyAutoScalingGroupResponse ModifyAutoScalingGroup(Models\ModifyAutoScalingGroupRequest $req) 本接口ModifyAutoScalingGroup用于修改伸缩组。
* @method Models\ModifyDesiredCapacityResponse ModifyDesiredCapacity(Models\ModifyDesiredCapacityRequest $req) 本接口ModifyDesiredCapacity用于修改指定伸缩组的期望实例数
* @method Models\ModifyLaunchConfigurationAttributesResponse ModifyLaunchConfigurationAttributes(Models\ModifyLaunchConfigurationAttributesRequest $req) 本接口ModifyLaunchConfigurationAttributes用于修改启动配置部分属性。
* 修改启动配置后,已经使用该启动配置扩容的存量实例不会发生变更,此后使用该启动配置的新增实例会按照新的配置进行扩容。
* 本接口支持修改部分简单类型。
* @method Models\ModifyLifecycleHookResponse ModifyLifecycleHook(Models\ModifyLifecycleHookRequest $req) 此接口用于修改生命周期挂钩。
* @method Models\ModifyLoadBalancerTargetAttributesResponse ModifyLoadBalancerTargetAttributes(Models\ModifyLoadBalancerTargetAttributesRequest $req) 本接口ModifyLoadBalancerTargetAttributes用于修改伸缩组内负载均衡器的目标规则属性。
* @method Models\ModifyLoadBalancersResponse ModifyLoadBalancers(Models\ModifyLoadBalancersRequest $req) 本接口ModifyLoadBalancers用于修改伸缩组的负载均衡器。
* 本接口用于为伸缩组指定新的负载均衡器配置,采用`完全覆盖`风格,无论之前配置如何,`统一按照接口参数配置为新的负载均衡器`
* 如果要为伸缩组清空负载均衡器则在调用本接口时仅指定伸缩组ID不指定具体负载均衡器。
* 本接口会立即修改伸缩组的负载均衡器,并生成一个伸缩活动,异步修改存量实例的负载均衡器。
* @method Models\ModifyNotificationConfigurationResponse ModifyNotificationConfiguration(Models\ModifyNotificationConfigurationRequest $req) 本接口ModifyNotificationConfiguration用于修改通知。
* 通知的接收端类型不支持修改。
* @method Models\ModifyScalingPolicyResponse ModifyScalingPolicy(Models\ModifyScalingPolicyRequest $req) 本接口ModifyScalingPolicy用于修改告警触发策略。
* @method Models\ModifyScheduledActionResponse ModifyScheduledAction(Models\ModifyScheduledActionRequest $req) 本接口ModifyScheduledAction用于修改定时任务。
* @method Models\RemoveInstancesResponse RemoveInstances(Models\RemoveInstancesRequest $req) 本接口RemoveInstances用于从伸缩组删除 CVM 实例。根据当前的产品逻辑,如果实例由弹性伸缩自动创建,则实例会被销毁;如果实例系创建后加入伸缩组的,则会从伸缩组中移除,保留实例。
* 如果删除指定实例后,伸缩组内处于`IN_SERVICE`状态的实例数量小于伸缩组最小值,接口将报错
* 如果伸缩组处于`DISABLED`状态,删除操作不校验`IN_SERVICE`实例数量和最小值的关系
* 对于伸缩组配置的 CLB实例在离开伸缩组时AS 会进行解挂载动作
* @method Models\ScaleInInstancesResponse ScaleInInstances(Models\ScaleInInstancesRequest $req) 为伸缩组指定数量缩容实例,返回缩容活动的 ActivityId。
* 伸缩组需要未处于活动中
* 伸缩组处于停用状态时,该接口也会生效,可参考[停用伸缩组](https://cloud.tencent.com/document/api/377/20435)文档查看伸缩组停用状态的影响范围
* 根据伸缩组的`TerminationPolicies`策略,选择被缩容的实例,可参考[缩容处理](https://cloud.tencent.com/document/product/377/8563)
* 接口只会选择`IN_SERVICE`实例缩容,如果需要缩容其他状态实例,可以使用 [DetachInstances](https://cloud.tencent.com/document/api/377/20436) [RemoveInstances](https://cloud.tencent.com/document/api/377/20431) 接口
* 接口会减少期望实例数,新的期望实例数需要大于等于最小实例数
* 缩容如果失败或者部分成功,最后期望实例数只会扣减实际缩容成功的实例数量
* @method Models\ScaleOutInstancesResponse ScaleOutInstances(Models\ScaleOutInstancesRequest $req) 为伸缩组指定数量扩容实例,返回扩容活动的 ActivityId。
* 伸缩组需要未处于活动中
* 伸缩组处于停用状态时,该接口也会生效,可参考[停用伸缩组](https://cloud.tencent.com/document/api/377/20435)文档查看伸缩组停用状态的影响范围
* 接口会增加期望实例数,新的期望实例数需要小于等于最大实例数
* 扩容如果失败或者部分成功,最后期望实例数只会增加实际成功的实例数量
2023-07-17 09:56:51 +08:00
* 竞价混合模式中一次扩容可能触发多个伸缩活动,该接口仅返回第一个伸缩活动的 ActivityId
2023-07-15 10:16:32 +08:00
* @method Models\SetInstancesProtectionResponse SetInstancesProtection(Models\SetInstancesProtectionRequest $req) 本接口SetInstancesProtection用于设置实例保护。
实例设置保护之后,当发生不健康替换、报警策略、期望值变更等触发缩容时,将不对此实例缩容操作。
* @method Models\StartAutoScalingInstancesResponse StartAutoScalingInstances(Models\StartAutoScalingInstancesRequest $req) 本接口StartAutoScalingInstances用于开启伸缩组内 CVM 实例。
* 开机成功,实例转为`IN_SERVICE`状态后,会增加期望实例数,期望实例数不可超过设置的最大值
* 本接口支持批量操作每次请求开机实例的上限为100
* @method Models\StopAutoScalingInstancesResponse StopAutoScalingInstances(Models\StopAutoScalingInstancesRequest $req) 本接口StopAutoScalingInstances用于关闭伸缩组内 CVM 实例。
* 关机方式采用`SOFT_FIRST`方式,表示在正常关闭失败后进行强制关闭
* 关闭`IN_SERVICE`状态的实例,会减少期望实例数,期望实例数不可低于设置的最小值
* 使用`STOP_CHARGING`选项关机,待关机的实例需要满足[关机不收费条件](https://cloud.tencent.com/document/product/213/19918)
* 本接口支持批量操作每次请求关机实例的上限为100
* @method Models\UpgradeLaunchConfigurationResponse UpgradeLaunchConfiguration(Models\UpgradeLaunchConfigurationRequest $req) 本接口UpgradeLaunchConfiguration用于升级启动配置。
* 本接口用于升级启动配置,采用“完全覆盖”风格,无论之前参数如何,统一按照接口参数设置为新的配置。对于非必填字段,不填写则按照默认值赋值。
* 升级修改启动配置后,已经使用该启动配置扩容的存量实例不会发生变更,此后使用该启动配置的新增实例会按照新的配置进行扩容。
* @method Models\UpgradeLifecycleHookResponse UpgradeLifecycleHook(Models\UpgradeLifecycleHookRequest $req) 本接口UpgradeLifecycleHook用于升级生命周期挂钩。
* 本接口用于升级生命周期挂钩,采用“完全覆盖”风格,无论之前参数如何,统一按照接口参数设置为新的配置。对于非必填字段,不填写则按照默认值赋值。
*/
class AsClient extends AbstractClient
{
/**
* @var string
*/
protected $endpoint = "as.tencentcloudapi.com";
/**
* @var string
*/
protected $service = "as";
/**
* @var string
*/
protected $version = "2018-04-19";
/**
* @param Credential $credential
* @param string $region
* @param ClientProfile|null $profile
* @throws TencentCloudSDKException
*/
function __construct($credential, $region, $profile=null)
{
parent::__construct($this->endpoint, $this->version, $credential, $region, $profile);
}
public function returnResponse($action, $response)
{
$respClass = "TencentCloud"."\\".ucfirst("as")."\\"."V20180419\\Models"."\\".ucfirst($action)."Response";
$obj = new $respClass();
$obj->deserialize($response);
return $obj;
}
}