DetachInstances

如果当前伸缩组状态为启用状态,且伸缩组内不存在执行中的伸缩活动,您可以调用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:ECS实例、ECI实例或托管实例移出伸缩组后,期望实例数也减少相应数量。
  • false:ECS实例、ECI实例或托管移出伸缩组后,期望实例数不会变化。

默认值:true。

IgnoreInvalidInstance Boolean false

从伸缩组移出一批实例时,是否忽略其中无效实例。取值范围:

  • true:从伸缩组中移出一批实例时会忽略其中的无效实例。

    如果一批实例中存在无效实例(例如实例状态为加入中),并且有效的实例被成功移出时,则伸缩活动执行状态显示为警告状态,您可以从伸缩活动详情查看无效的实例。

  • 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。

举例如下所示:

  • 待移出的ECS实例ID为i-bp109k5j3dum1ce6****
  • 待移出的ECI实例ID为eci-bp17gw49eu09yiwm****
  • 待移出的托管实例ID为mi-d23fsd******

    说明 一次调用请求只支持移出一种类型实例。

LifecycleHook Boolean false

伸缩组移出ECS实例或ECI实例时,是否触发缩容生命周期挂钩。取值范围:

  • true:触发。
  • false:不触发。

    说明 伸缩组移出托管实例时不支持设置该参数项。

默认值: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实例不存在。