调用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 | 将已经存在的实例手动添加到伸缩组时,是否将该实例的生命周期托管给伸缩组。取值范围:
说明 包年包月实例、托管实例和伸缩组中节省停机实例均不支持设置该参数项。 默认值:false。 |
InstanceId.N | String | 否 | i-28wt4**** | InstanceId.N为待添加ECS实例、ECI实例、托管实例或者伸缩组中处于节省停机状态实例的ID。N的取值范围:1~20。 举例如下所示:
说明 一次调用请求中仅支持处理一种类型的实例。 |
LoadBalancerWeight.N | Integer | 否 | 50 | LoadBalancerWeight.N为ECS实例或ECI实例作为负载均衡实例后端服务器时的权重,N的取值范围:1~20,该参数的取值范围:1~100。 说明 托管实例和伸缩组中节省停机实例均不支持设置该参数项。 默认值:50。 |
LifecycleHook | Boolean | 否 | 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。 |