如果当前伸缩组状态为启用状态,且伸缩组内不存在执行中的伸缩活动,您可以调用API DetachInstances从一个伸缩组移出一台或多台ECS实例、ECI实例或托管实例。
接口说明
- 调用该接口前,请确保满足以下条件:
- 目标伸缩组必须处于启用(Enable)状态。
-
目标伸缩组没有正在进行的伸缩活动。
说明 目标伸缩组没有正在进行的伸缩活动时,该接口可以绕过冷却时间(Cooldown)直接触发伸缩活动。
- 使用该接口需注意以下事项:
- 移出ECS实例、ECI实例或托管实例之后,该实例可以独立于伸缩组而单独存在,您可以调用AttachInstances接口将ECS实例、ECI实例或托管实例再次添加到其他伸缩组。
- 调用该接口移出一台ECS实例、ECI实例或托管实例并不会停止或释放该实例。
- 接口成功调用后,仅表示弹性伸缩服务接受了该接口调用的请求。可以正常触发伸缩活动,但不能保证伸缩活动执行成功,您需要通过返回的ScalingActivityId查看伸缩活动的状态。
- 目标伸缩组的ECS实例、ECI实例或托管实例数量减去当前移出的ECS实例、ECI实例或托管实例数量不能小于伸缩组最小实例数(MinSize),否则会报错。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 |
类型 |
是否必选 |
示例值 |
描述 |
Action | String | 是 | DetachInstances | 系统规定参数。取值:DetachInstances。 |
ScalingGroupId | String | 是 | asg-bp1igpak5ft1flyp**** | 伸缩组的ID。 |
DecreaseDesiredCapacity | Boolean | 否 | true | 是否修改期望实例数。取值范围:
默认值:true。 |
IgnoreInvalidInstance | Boolean | 否 | false | 从伸缩组移出一批实例时,是否忽略其中无效实例。取值范围:
默认值:false。 |
DetachOption | String | 否 | both | 指定是否停止使用ECS实例或ECI实例作为负载均衡实例的后端服务器(即将ECS实例或ECI实例移出负载均衡实例的默认服务器组和虚拟服务器组),以及是否将ECS实例或ECI实例移出RDS实例的访问白名单。 both:将ECS实例或ECI实例移出负载均衡实例的默认服务器组和虚拟服务器组,并将ECS实例或ECI实例移出RDS实例的访问白名单。 说明 伸缩组移出托管实例时不支持设置该参数项。 |
InstanceId.N | String | 否 | i-bp109k5j3dum1ce6**** | 待移出ECS实例、ECI实例或托管实例的ID。N的取值范围:1~20。 举例如下所示:
|
LifecycleHook | Boolean | 否 | false | 伸缩组移出ECS实例或ECI实例时,是否触发缩容生命周期挂钩。取值范围:
默认值:false。 |
ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** | 保证请求幂等性。 从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持ASCII字符,且不能超过64个字符。更多信息,请参见如何保证幂等性。 |
返回数据
名称 |
类型 |
示例值 |
描述 |
ScalingActivityId | String | asa-bp1gbswjhjrw8tko**** | 伸缩活动的ID。 |
RequestId | String | 473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** | 请求ID。 |
示例
请求示例
http(s)://ess.aliyuncs.com/?Action=DetachInstances
&ScalingGroupId=asg-bp1igpak5ft1flyp****
&DecreaseDesiredCapacity=true
&IgnoreInvalidInstance=false
&DetachOption=both
&InstanceId=["i-bp109k5j3dum1ce6****"]
&LifecycleHook=false
&ClientToken=123e4567-e89b-12d3-a456-42665544****
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<DetachInstancesResponse>
<ScalingActivityId>asa-bp1gbswjhjrw8tko****</ScalingActivityId>
<RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
</DetachInstancesResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"ScalingActivityId" : "asa-bp1gbswjhjrw8tko****",
"RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****"
}
错误码
访问错误中心查看更多错误码。
HttpCode |
错误码 |
错误信息 |
描述 |
400 |
IncorrectScalingGroupStatus |
The current status of the specified scaling group does not support this action. |
目标伸缩组必须处于启用(Enable)状态。 |
400 |
ScalingActivityInProgress |
You cannot delete a scaling group or launch a new scaling activity while there is a scaling activity in progress for the specified scaling group. |
目标伸缩组不能有正在进行的伸缩活动。 |
400 |
IncorrectLoadBalancerStatus |
The current status of the specified load balancer does not support this action. |
目标伸缩组内的负载均衡实例必须处于运行中(Active)状态。 |
400 |
IncorrectDBInstanceStatus |
The current status of DB instance "XXX" does not support this action. |
目标伸缩组内的RDS实例必须处于运行中(Running)状态。 |
400 |
IncorrectCapacity.MinSize |
To remove the instances, the total capacity will be lesser than the MinSize. |
目标伸缩组的ECS实例或ECI实例数量减去当前移出的ECS实例或ECI实例数量不能小于伸缩组最少实例数(MinSize)。 |
403 |
Forbidden.Unauthorized |
A required authorization for the specified action is not supplied. |
您暂未被授权使用DetachInstances接口。 |
404 |
InvalidScalingGroupId.NotFound |
The specified scaling group does not exist. |
指定的伸缩组不存在。 |
404 |
InvalidInstanceId.NotFound |
Instance "XXX" does not exist. |
指定的ECS实例或ECI实例不存在。 |