2023-07-17 09:56:51 +08:00

247 lines
21 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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)文档查看伸缩组停用状态的影响范围
* 接口会增加期望实例数,新的期望实例数需要小于等于最大实例数
* 扩容如果失败或者部分成功,最后期望实例数只会增加实际成功的实例数量
* 竞价混合模式中一次扩容可能触发多个伸缩活动,该接口仅返回第一个伸缩活动的 ActivityId
* @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;
}
}