全部产品
Search
文档中心

弹性伸缩:AttachInstances

更新时间:Mar 11, 2024

调用API AttachInstances将实例手动添加到伸缩组中,即您可以将伸缩组以外的ECS实例、ECI实例或托管实例添加到伸缩组中并提供服务,或者将伸缩组中处于节省停机状态的ECS实例重新启动变为服务状态(运行中状态)并在伸缩组中提供服务。

接口说明

  • 调用该接口前,请确保满足以下条件:
    • 伸缩组处于Active状态。
    • 伸缩组内没有执行中的伸缩活动。
  • 加入伸缩组的ECS实例或ECI实例的限制条件包括:
    • 必须与伸缩组在同一个地域。
    • 必须处于Running状态。
    • 不能已加入到其他伸缩组中。
    • 付费方式为包年包月、按量付费或抢占式实例。
    • 如果伸缩组指定VswitchID,则不支持Classic类型的ECS实例或ECI实例加入伸缩组,也不支持其他VPC的ECS实例或ECI实例加入伸缩组。
    • 如果伸缩组没有指定VswitchID,则不支持VPC类型的ECS实例或ECI实例加入伸缩组。
  • 加入伸缩组的托管实例的限制条件包括:
    • 必须与伸缩组在同一个地域。
    • 只能将未加入伸缩组的托管实例加入到ECS类型伸缩组中。
    • 托管实例不支持配置生命周期挂钩、关联到负载均衡和健康检查功能。
    • 托管实例加入ECS类型伸缩组后,该伸缩组不会管理托管实例的生命周期。
    • 托管实例仅支持手动添加到伸缩组或手动从伸缩组移出,移出后托管实例并不会被释放。
  • 使用该接口需注意以下事项:
    • 当伸缩组没有伸缩活动正在执行时,该接口可以绕过冷却时间(Cooldown)直接执行。
    • 调用该接口返回成功,只是表示弹性伸缩服务接受了该接口调用的请求,伸缩活动可以执行,但不代表伸缩活动能够执行成功。您需要通过返回的ScalingActivityId查看该伸缩活动的执行状态。
    • 如果该接口指定的实例数加上当前伸缩组的实例数(Total Capacity)大于最大值(MaxSize),则接口调用失败。
    • 通过该接口手动添加的ECS实例、ECI实例或托管实例不与伸缩组生效的伸缩配置进行关联。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String AttachInstances

系统规定参数。取值:AttachInstances

ScalingGroupId String asg-bp18p2yfxow2dloq****

伸缩组的ID。

Entrusted Boolean false

将已经存在的实例手动添加到伸缩组时,是否将该实例的生命周期托管给伸缩组。取值范围:

  • true:托管。该实例的生命周期由弹性伸缩管理,与伸缩组自动创建的实例一致。实例被移出伸缩组(不包括通过调用DetachInstances参数移出的实例)时会自动释放。
  • false:不托管。该实例在被移出伸缩组时不会被释放。
说明 包年包月实例、托管实例和伸缩组中节省停机实例均不支持设置该参数项。

默认值:false。

InstanceId.N String i-28wt4****

InstanceId.N为待添加ECS实例、ECI实例、托管实例或者伸缩组中处于节省停机状态实例的ID。N的取值范围:1~20。

举例如下所示:

  • 待添加的ECS实例ID为i-28wt4****
  • 待添加的ECI实例ID为eci-bp17gw49eu09yiwm****
  • 待添加的托管实例ID为mi-2cx*****
  • 待重新启动的伸缩组中节省停机状态实例ID为i-2cd2f****
说明 一次调用请求中仅支持处理一种类型的实例。
LoadBalancerWeight.N Integer 50

LoadBalancerWeight.N为ECS实例或ECI实例作为负载均衡实例后端服务器时的权重,N的取值范围:1~20,该参数的取值范围:1~100。

说明 托管实例和伸缩组中节省停机实例均不支持设置该参数项。

默认值:50。

LifecycleHook Boolean false

伸缩组添加实例时,是否触发扩容生命周期挂钩。取值范围:

  • true:触发。
  • false:不触发。
说明 托管实例和伸缩组中节省停机实例均不支持设置该参数项。

默认值:false。

RegionId String cn-qingdao

伸缩组所属的地域ID。

ClientToken String 123e4567-e89b-12d3-a456-42665544****

保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持ASCII字符,且不能超过64个字符。更多信息,请参见如何保证幂等性

返回数据

名称

类型

示例值

描述

ScalingActivityId String asa-bp1crxor24s28xf1****

伸缩活动的ID。

RequestId String 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

请求ID。

示例

请求示例

http(s)://ess.aliyuncs.com/?Action=AttachInstances
&ScalingGroupId=asg-bp18p2yfxow2dloq****
&Entrusted=false
&InstanceId=["i-28wt4****"]
&LoadBalancerWeight=[50]
&LifecycleHook=false
&RegionId=cn-qingdao
&ClientToken=123e4567-e89b-12d3-a456-42665544****
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<AttachInstancesResponse>
    <ScalingActivityId>asa-bp1crxor24s28xf1****</ScalingActivityId>
    <RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
</AttachInstancesResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "ScalingActivityId" : "asa-bp1crxor24s28xf1****",
  "RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****"
}

错误码

访问错误中心查看更多错误码。

HttpCode

错误码

错误信息

描述

404

InvalidScalingGroupId.NotFound

The specified scaling group does not exist.

指定的伸缩组在该账号下不存在。

403

Forbidden.Unauthorized

A required authorization for the specified action is not supplied.

您并未向弹性伸缩完整授权OpenAPI接口。

400

IncorrectScalingGroupStatus

The current status of the specified scaling group does not support this action.

指定的伸缩组未处于Active状态。

404

InvalidInstanceId.NotFound

Instance "XXX" does not exist.

指定的ECS实例或ECI实例在该账号下不存在。

400

InvalidInstanceId. RegionMismatch

Instance "XXX" and the specified scaling group are not in the same Region.

指定的ECS实例或ECI实例与伸缩组所属的地域不匹配。

400

InvalidInstanceId.InstanceTypeMismatch

Instance "XXX" and existing Active scaling configurations have different instance types.

指定的ECS实例或ECI实例与伸缩配置的实例规格不匹配。

400

IncorrectInstanceStatus

The current status of instance "XXX" does not support this action.

指定的ECS实例或ECI实例未处于Running状态。

400

InvalidInstanceId. NetworkTypeMismatch

The network type of instance "XXX" does not support this action.

ECS实例或ECI实例的网络类型与伸缩组的网络类型不匹配。

400

InvalidInstanceId.VPCMismatch

Instance "XXX" and the specified scaling group are not in the same VPC.

指定的伸缩组与添加的ECS实例或ECI实例不在同一个VPC当中。

400

InvalidInstanceId.InUse

Instance "XXX" is already attached to another scaling group.

指定的ECS实例或ECI实例已加入其它伸缩组。

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

IncorrectLoadBalancerHealthCheck

The current health check type of specified load balancer does not support this action.

指定的伸缩组关联的负载均衡实例未开启健康检查。

400

InvalidLoadBalancerId.IncorrectInstanceNetworkType

The network type of the instance in specified load balancer does not support this action.

指定的负载均衡实例含有的ECS实例或ECI实例的网络类型与伸缩组的网络类型不匹配。

400

InvalidLoadBalancerId.VPCMismatch

The specified virtual switch and the instance in specified load balancer are not in the same VPC.

指定的伸缩组的负载均衡实例含有的ECS实例或ECI实例与VSwitchId不在同一个VPC当中。

400

IncorrectDBInstanceStatus

The current status of DB instance "XXX" does not support this action.

指定的伸缩组的RDS实例未处于Running状态。

400

QuotaExceeded.DBInstanceSecurityIP

Security IP quota exceeded in DB instance "XXX".

指定的伸缩组的RDS实例访问白名单的IP个数达到上限。

400

QuotaExceeded.SecurityGroupInstance

Instance quota exceeded in the specified security group.

指定的安全组已添加的ECS实例或ECI实例个数达到上限。

400

IncorrectCapacity.MaxSize

To attach the instances, the total capacity will be greater than the MaxSize.

加入的ECS实例数或ECI实例数使得Total Capacity超过MaxSize。