如果您需要根据业务变动需求与策略自动增加或减少指定类型的实例数量,则可以通过配置伸缩组来自动调整您的业务计算能力(即实例数量)。如果当前伸缩组属性不再满足业务需求,则您可以调用API ModifyScalingGroup修改伸缩组属性(例如最大实例数、最小实例数或期望实例数等属性),避免重新创建伸缩组并重新配置相关属性,节省了时间和资源成本。
接口说明
- 不支持修改以下参数:
- RegionId
-
LoadBalancerId
说明 如果需要修改负载均衡实例,请使用AttachLoadBalancers和DetachLoadBalancers接口。 -
DBInstanceId
说明 如果需要修改RDS实例,请使用AttachDBInstances和DetachDBInstances接口。
- 当伸缩组的状态为Active或Inactive时才能调用该接口。
- 启用新的伸缩配置不会影响通过早前伸缩配置创建并正在运行的ECS实例或ECI实例。
- 如果修改了MaxSize,导致当前伸缩组的ECS或ECI实例数超过MaxSize,则伸缩组会自动移出ECS实例或ECI实例,使得伸缩组的ECS或ECI实例数等于MaxSize。
- 如果伸缩组修改了MinSize,导致当前伸缩组的ECS或ECI实例数低于MinSize,则伸缩组会自动加入ECS实例或ECI实例,使得伸缩组的ECS或ECI实例数等于MinSize。
- 如果伸缩组设置了DesiredCapacity时,修改了DesiredCapacity,导致当前伸缩组的ECS或ECI实例数与DesiredCapacity不一致,则伸缩组会自动加入或移除ECS实例或ECI实例,使得伸缩组的ECS或ECI实例数等于DesiredCapacity。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 |
类型 |
是否必选 |
示例值 |
描述 |
Action | String | 是 | ModifyScalingGroup | 系统规定参数。取值:ModifyScalingGroup。 |
ScalingGroupId | String | 是 | asg-bp1ffogfdauy0jw0**** | 待修改伸缩组的ID。 |
ScalingGroupName | String | 否 | scalinggroup**** | 伸缩组的名称,同一地域下伸缩组名称唯一。长度为2~64个字符,以数字、大小英文字母或中文开头,可以包含数字、下划线(_)、短划线(-)和半角句号(.)。 |
MinSize | Integer | 否 | 1 | 伸缩组内ECS实例或ECI实例台数的最小值,当伸缩组内ECS或ECI实例数小于 说明 MinSize 的值必须小于或等于MaxSize 的值。 |
MaxSize | Integer | 否 | 99 | 伸缩组内ECS实例或ECI实例台数的最大值,当伸缩组内ECS或ECI实例数大于 MaxSize的取值范围和弹性伸缩使用情况有关,请前往配额中心查看单个伸缩组可以设置的组内最大实例数对应的配额值。 例如,如果单个伸缩组可以设置的组内最大实例数对应的配额值为2000,则 |
DefaultCooldown | Integer | 否 | 600 | 一次伸缩活动(添加或移出ECS实例或ECI实例)结束后的一段冷却时间。取值范围:0~86400,单位:秒。 冷却时间内,该伸缩组不执行其他的伸缩活动,仅针对云监控报警任务触发的伸缩活动有效。 |
RemovalPolicy.1 | String | 否 | OldestScalingConfiguration | 指定移出ECS实例的第一段伸缩组策略。取值范围:
说明 OldestScalingConfiguration中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。CustomPolicy仅支持设置为首位移除策略,当指定CustomPolicy需同时指定CustomPolicyARN参数。 |
RemovalPolicy.2 | String | 否 | NewestInstance | 指定移出ECS实例的第二段伸缩组策略。取值范围:
|
RemovalPolicy.3 | String | 否 | OldestInstance | 指定移出ECS实例的第三段伸缩组策略。取值范围:
说明 OldestScalingConfiguration中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。 |
ActiveScalingConfigurationId | String | 否 | asc-bp17pelvl720x5ub**** | 伸缩组内生效的伸缩配置的ID。 |
HealthCheckType | String | 否 | ECS | 伸缩组的健康检查方式。取值范围:
默认值:ECS。 说明 如果需要同时开启实例健康检查和负载均衡健康检查,请使用 HealthCheckTypes 参数。 |
LaunchTemplateId | String | 否 | lt-m5e3ofjr1zn1aw7**** | 实例启动模板ID,用于指定伸缩组从实例启动模板获取启动配置信息。 |
LaunchTemplateVersion | String | 否 | Default | 实例启动模板的版本。取值范围:
|
OnDemandBaseCapacity | Integer | 否 | 30 | 伸缩组所需要按量实例个数的最小值,取值范围:0~1000。当按量实例个数少于该值时,将优先创建按量实例。 当 |
OnDemandPercentageAboveBaseCapacity | Integer | 否 | 20 | 伸缩组满足最小按量实例数(OnDemandBaseCapacity)要求后,超出的实例中按量实例应占的比例,取值范围:0~100。 当 |
SpotInstanceRemedy | Boolean | 否 | true | 是否开启补齐抢占式实例。开启后,当收到抢占式实例将被回收的系统消息时,伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。 |
CompensateWithOnDemand | Boolean | 否 | true | 当
|
SpotInstancePools | Integer | 否 | 5 | 指定可用实例规格的个数,伸缩组将按成本最低的多个规格均衡创建抢占式实例。取值范围:0~10。 当 |
DesiredCapacity | Integer | 否 | 5 | 伸缩组内ECS实例或ECI实例的期望数量。设置该参数意味着开启了期望实例数功能,伸缩组会自动将ECS实例或ECI实例数量维持在期望实例数。取值范围:MaxSize≥期望实例数量≥MinSize。 说明 如果期望实例数功能关闭后又重新开启,则您需要重新设置 DesiredCapacity 值。 |
GroupDeletionProtection | Boolean | 否 | true | 是否开启伸缩组删除保护。取值范围:
|
MultiAZPolicy | String | 否 | PRIORITY | 多可用区伸缩组ECS实例扩缩容策略。取值范围:
|
VSwitchIds.N | String | 否 | vsw-bp1oo2a7isyrb8igf**** | 一台或多台虚拟交换机的ID,N的取值范围:1~5。 只有当伸缩组网络类型为VPC时,当前参数才生效。指定虚拟交换机所属的VPC必须和伸缩组所属的VPC相同。 虚拟交换机可以来自多个可用区。虚拟交换机的优先级按照数字升序排序,1表示最高优先级。当优先级较高的虚拟交换机所在可用区无法创建ECS实例时,自动选择下一优先级的虚拟交换机创建ECS实例。 |
LaunchTemplateOverride.N.InstanceType | String | 否 | ecs.c5.xlarge | 当您需要伸缩组按照实例规格容量进行伸缩时,请同时指定本参数和LaunchTemplateOverride.N.WeightedCapacity。 本参数用于指定实例规格,会覆盖启动模板中的实例规格。您可以指定N个本参数,扩展启动模板支持N个实例规格。N的取值范围:1~10。 说明 仅当LaunchTemplateId参数指定了启动模板时,本参数生效。 InstanceType的取值范围:在售的ECS实例规格,请参见实例规格族。 |
LaunchTemplateOverride.N.WeightedCapacity | Integer | 否 | 4 | 当您需要伸缩组按照实例规格容量进行伸缩时,在指定LaunchTemplateOverride.N.InstanceType后,再指定本参数。两个参数一一对应,N需要保持一致。 本参数用于指定实例规格的权重,即实例规格的单台实例在伸缩组中表示的容量大小。 权重越大,满足期望容量所需的本实例规格的实例数量越少。 由于每个实例规格的vCPU个数、内存大小等性能指标会有差异,您可以根据自身需求,给不同的实例规格配置不同的权重。 例如:
为满足期望容量,伸缩组将为用户扩容2台ecs.c5.xlarge实例。 说明 扩容时伸缩组的容量不得超过最大容量(MaxSize)与实例规格的最大权重之和。 WeightedCapacity的取值范围:1~500。 |
LaunchTemplateOverride.N.SpotPriceLimit | Float | 否 | 0.025 | 本参数用于指定实例启动模板覆盖规格(即 说明 仅当 LaunchTemplateId 参数指定了启动模板时,该参数才生效。 |
AzBalance | Boolean | 否 | false | 伸缩组的容量是否在多个可用区间均衡分布(仅当
默认值:false。 |
AllocationStrategy | String | 否 | priority | 容量分配策略,决定了伸缩组如何选择可用的实例规格类型满足容量。容量分布策略同时对按量和抢占式容量生效(仅当
默认值:priority。 |
SpotAllocationStrategy | String | 否 | lowestPrice | 抢占式容量分布策略。您可以通过该参数单独指定抢占式容量的分布策略(仅当
默认值:priority。 |
MaxInstanceLifetime | Integer | 否 | null | 实例在伸缩组中存活的最大时间。单位为秒。 取值范围:0或 默认值:null。 说明 ECI类型的伸缩组或停机不收费的伸缩组不支持设置该参数。 |
CustomPolicyARN | String | 否 | acs:fc:cn-zhangjiakou:16145688****:services/ess_custom_terminate_policy.LATEST/functions/ess_custom_terminate_policy_name | 自定义缩容策略Function函数ARN。仅当RemovalPolicies配置第一个移除策略为CustomPolicy时生效。 |
DisableDesiredCapacity | Boolean | 否 | false | 伸缩组是否关闭期望实例数功能。取值范围:
|
ScalingPolicy | String | 否 | recycle | 指定伸缩组的回收模式。取值范围:
ScalingPolicy指定伸缩组的回收模式,但实例被移出伸缩组时的具体动作,由RemoveInstances的RemovePolicy参数决定,更多信息,请参见RemoveInstances。 |
HealthCheckTypes.N | String | 否 | ECS | 伸缩组的健康检查方式列表。取值范围:
默认值:ECS。 |
StopInstanceTimeout | Integer | 否 | 60 | 缩容流程中等待ECS实例停机成功的超时时间,单位为秒。 取值范围:30~240。 说明
|
返回数据
名称 |
类型 |
示例值 |
描述 |
RequestId | String | 473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** | 请求ID。 |
示例
请求示例
http(s)://ess.aliyuncs.com/?Action=ModifyScalingGroup
&ScalingGroupId=asg-bp1ffogfdauy0jw0****
&ScalingGroupName=scalinggroup****
&MinSize=1
&MaxSize=99
&DefaultCooldown=600
&RemovalPolicy.1=OldestScalingConfiguration
&RemovalPolicy.2=NewestInstance
&RemovalPolicy.3=OldestInstance
&ActiveScalingConfigurationId=asc-bp17pelvl720x5ub****
&HealthCheckType=ECS
&LaunchTemplateId=lt-m5e3ofjr1zn1aw7****
&LaunchTemplateVersion=Default
&OnDemandBaseCapacity=30
&OnDemandPercentageAboveBaseCapacity=20
&SpotInstanceRemedy=true
&CompensateWithOnDemand=true
&SpotInstancePools=5
&DesiredCapacity=5
&GroupDeletionProtection=true
&MultiAZPolicy=PRIORITY
&VSwitchIds=["vsw-bp1oo2a7isyrb8igf****"]
&LaunchTemplateOverride=[{"InstanceType":"ecs.c5.xlarge","WeightedCapacity":4,"SpotPriceLimit":0.025}]
&AzBalance=false
&AllocationStrategy=priority
&SpotAllocationStrategy=lowestPrice
&CustomPolicyARN=acs:fc:cn-zhangjiakou:16145688****:services/ess_custom_terminate_policy.LATEST/functions/ess_custom_terminate_policy_name
&DisableDesiredCapacity=false
&ScalingPolicy=recycle
&HealthCheckTypes=["ECS"]
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<ModifyScalingGroupResponse>
<RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
</ModifyScalingGroupResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****"
}
错误码
访问错误中心查看更多错误码。
HttpCode |
错误码 |
错误信息 |
描述 |
404 |
InvalidScalingGroupId.NotFound |
The specified scaling group does not exist. |
账号下不存在指定的伸缩组。 |
400 |
InvalidScalingGroupName.Duplicate |
The specified value of parameter parameter name is duplicated. |
伸缩组名已存在。 |
404 |
InvalidScalingConfigurationId.NotFound |
The specified scaling configuration does not exist. |
伸缩组中不存在指定的伸缩配置。 |
400 |
InvalidScalingConfigurationId.InstanceTypeMismatch |
The specified scaling configuration and existing active scaling configuration have different instance type. |
指定的伸缩配置的实例规格与当前生效的伸缩配置的实例规格不匹配。 |
400 |
InvalidParameter.Conflict |
The value of parameter parameter name and parameter parameter name are confilict. |
指定的MinSize大于MaxSize。 |
400 |
LaunchTemplateVersionSet.NotFound |
The specific version of launch template is not exist. |
不存在指定的实例启动模板版本。 |
400 |
LaunchTemplateSet.NotFound |
The specified launch template set is not found. |
不存在指定的实例启动模板。 |
400 |
TemplateMissingParameter.ImageId |
The input parameter "ImageId" that is mandatory for processing this request is not supplied. |
实例启动模板指定版本缺少镜像信息。 |
400 |
TemplateMissingParameter.InstanceTypes |
The input parameter "InstanceTypes" that is mandatory for processing this request is not supplied. |
指定的实例启动模板版本缺少实例规格信息。 |
400 |
TemplateMissingParameter.SecurityGroup |
The input parameter "SecurityGroup" that is mandatory for processing this request is not supplied. |
指定的实例启动模板版本缺少安全组信息。 |
400 |
TemplateVersion.NotNumber |
The input parameter "LaunchTemplateVersion" is supposed to be a string representing the version number. |
指定的实例启动模板固定版本号应该是数字。 |