全部产品
Search
文档中心

弹性伸缩:ModifyScalingGroup

更新时间:Oct 17, 2024

如果您需要根据业务变动需求与策略自动增加或减少指定类型的实例数量,则可以通过配置伸缩组来自动调整您的业务计算能力(即实例数量)。如果当前伸缩组属性不再满足业务需求,则您可以调用API ModifyScalingGroup修改伸缩组属性(例如最大实例数、最小实例数或期望实例数等属性),避免重新创建伸缩组并重新配置相关属性,节省了时间和资源成本。

接口说明

  • 不支持修改以下参数:
  • 当伸缩组的状态为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时,弹性伸缩会自动创建ECS实例或ECI实例。

说明 MinSize的值必须小于或等于MaxSize的值。
MaxSize Integer 99

伸缩组内ECS实例或ECI实例台数的最大值,当伸缩组内ECS或ECI实例数大于MaxSize时,弹性伸缩会自动移出ECS实例或ECI实例。

MaxSize的取值范围和弹性伸缩使用情况有关,请前往配额中心查看单个伸缩组可以设置的组内最大实例数对应的配额值。

例如,如果单个伸缩组可以设置的组内最大实例数对应的配额值为2000,则MaxSize的取值范围为0~2000。

DefaultCooldown Integer 600

一次伸缩活动(添加或移出ECS实例或ECI实例)结束后的一段冷却时间。取值范围:0~86400,单位:秒。

冷却时间内,该伸缩组不执行其他的伸缩活动,仅针对云监控报警任务触发的伸缩活动有效。

RemovalPolicy.1 String OldestScalingConfiguration

指定移出ECS实例的第一段伸缩组策略。取值范围:

  • OldestInstance:移出最早加入伸缩组的ECS实例。
  • NewestInstance:移出最新加入伸缩组的ECS实例。
  • OldestScalingConfiguration:移出最早伸缩配置创建的ECS实例。
  • CustomPolicy:基于自定义缩容策略Function函数移除ECS实例。
说明 OldestScalingConfiguration中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。CustomPolicy仅支持设置为首位移除策略,当指定CustomPolicy需同时指定CustomPolicyARN参数。
RemovalPolicy.2 String NewestInstance

指定移出ECS实例的第二段伸缩组策略。取值范围:

  • OldestInstance:移出最早加入伸缩组的ECS实例。
  • NewestInstance:移出最新加入伸缩组的ECS实例。
  • OldestScalingConfiguration:移出最早伸缩配置创建的ECS实例。

    说明 OldestScalingConfiguration中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。

RemovalPolicy.3 String OldestInstance

指定移出ECS实例的第三段伸缩组策略。取值范围:

  • OldestInstance:移出最早加入伸缩组的ECS实例。
  • NewestInstance:移出最新加入伸缩组的ECS实例。
  • OldestScalingConfiguration:移出最早伸缩配置创建的ECS实例。
说明 OldestScalingConfiguration中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。
ActiveScalingConfigurationId String asc-bp17pelvl720x5ub****

伸缩组内生效的伸缩配置的ID。

HealthCheckType String ECS

伸缩组的健康检查方式。取值范围:

  • NONE:不做健康检查。
  • ECS:对伸缩组内的实例做健康检查(ECS类型和ECI类型的伸缩组均使用本取值开启实例健康检查)。
  • LOAD_BALANCER: 根据负载均衡(暂不支持CLB负载均衡类型)健康检查结果判断实例健康状态。

默认值:ECS。

说明 如果需要同时开启实例健康检查和负载均衡健康检查,请使用HealthCheckTypes参数。
LaunchTemplateId String lt-m5e3ofjr1zn1aw7****

实例启动模板ID,用于指定伸缩组从实例启动模板获取启动配置信息。

LaunchTemplateVersion String Default

实例启动模板的版本。取值范围:

  • 固定的模板版本号。
  • Default:始终使用模板默认版本。
  • Latest:始终使用模板最新版本。
OnDemandBaseCapacity Integer 30

伸缩组所需要按量实例个数的最小值,取值范围:0~1000。当按量实例个数少于该值时,将优先创建按量实例。

MultiAZPolicy参数取值为COMPOSABLE策略时,默认值为0。

OnDemandPercentageAboveBaseCapacity Integer 20

伸缩组满足最小按量实例数(OnDemandBaseCapacity)要求后,超出的实例中按量实例应占的比例,取值范围:0~100。

MultiAZPolicy参数取值为COMPOSABLE策略时,默认值为100。

SpotInstanceRemedy Boolean true

是否开启补齐抢占式实例。开启后,当收到抢占式实例将被回收的系统消息时,伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。

CompensateWithOnDemand Boolean true

CreateScalingGroup接口的MultiAZPolicy取值为COST_OPTIMIZED时,如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足ECS实例数量要求。取值范围:

  • true:允许。
  • false:不允许。
SpotInstancePools Integer 5

指定可用实例规格的个数,伸缩组将按成本最低的多个规格均衡创建抢占式实例。取值范围:0~10。

MultiAZPolicy参数取值为COMPOSABLE策略时,默认值为2。

DesiredCapacity Integer 5

伸缩组内ECS实例或ECI实例的期望数量。设置该参数意味着开启了期望实例数功能,伸缩组会自动将ECS实例或ECI实例数量维持在期望实例数。取值范围:MaxSize≥期望实例数量≥MinSize。

说明 如果期望实例数功能关闭后又重新开启,则您需要重新设置DesiredCapacity值。
GroupDeletionProtection Boolean true

是否开启伸缩组删除保护。取值范围:

  • true:开启伸缩组删除保护,此时不能删除该伸缩组。
  • false:关闭伸缩组删除保护。
MultiAZPolicy String PRIORITY

多可用区伸缩组ECS实例扩缩容策略。取值范围:

  • PRIORITY:根据虚拟交换机(VSwitchIds.N)的优先级进行扩缩容。弹性伸缩优先在优先级最高的交换机所在可用区尝试扩缩容,如果无法扩缩容,则自动在下一优先级的交换机所在可用区进行扩缩容。
  • COST_OPTIMIZED:扩容时弹性伸缩按vCPU单价从低到高尝试创建ECS实例,缩容时按vCPU单价从高到低尝试移出ECS实例。当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式实例。您可以继续通过CompensateWithOnDemand参数,指定弹性伸缩在无法创建抢占式实例时,是否自动尝试创建按量付费实例。

    说明 COST_OPTIMIZED仅在伸缩配置设置了多实例规格或者选用了抢占式实例的情况下生效。

  • BALANCE:在伸缩组指定的多可用区之间均匀分配ECS实例。如果由于库存不足等原因可用区之间变得不平衡,您可以通过API RebalanceInstance平衡资源。
  • COMPOSABLE:是一种组合策略,您可以根据需要自主组合上述多可用区伸缩组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个数、内存大小等性能指标会有差异,您可以根据自身需求,给不同的实例规格配置不同的权重。

例如:

  • 当前容量:0。
  • 期望容量:6。
  • ecs.c5.xlarge规格容量:4。

为满足期望容量,伸缩组将为用户扩容2台ecs.c5.xlarge实例。

说明 扩容时伸缩组的容量不得超过最大容量(MaxSize)与实例规格的最大权重之和。

WeightedCapacity的取值范围:1~500。

LaunchTemplateOverride.N.SpotPriceLimit Float 0.025

本参数用于指定实例启动模板覆盖规格(即LaunchTemplateOverride.N.InstanceType)的竞价价格上限。您可以指定N个该参数,扩展启动模板支持N个实例规格。N的取值范围:1~10。

说明 仅当LaunchTemplateId参数指定了启动模板时,该参数才生效。
AzBalance Boolean false

伸缩组的容量是否在多个可用区间均衡分布(仅当MultiAZPolicy参数取值为COMPOSABLE策略时生效),取值范围:

  • true:伸缩组的容量在多个可用区间均衡分布。
  • false:伸缩组的容量不在多个可用区间均衡分布。

默认值:false。

AllocationStrategy String priority

容量分配策略,决定了伸缩组如何选择可用的实例规格类型满足容量。容量分布策略同时对按量和抢占式容量生效(仅当MultiAZPolicy参数取值为COMPOSABLE策略时生效)。取值范围:

  • priority:按照配置的实例规格的顺序创建实例。
  • lowestPrice:按照实例规格单位vCpu价格从低到高创建实例。

默认值:priority。

SpotAllocationStrategy String lowestPrice

抢占式容量分布策略。您可以通过该参数单独指定抢占式容量的分布策略(仅当MultiAZPolicy参数取值为COMPOSABLE策略时生效)。取值范围:

  • priority:按照配置的实例规格的顺序创建实例。
  • lowestPrice:按照实例规格单位vCpu价格从低到高创建实例。

默认值:priority。

MaxInstanceLifetime Integer null

实例在伸缩组中存活的最大时间。单位为秒。

取值范围:0或[86400, Integer.maxValue]。其中,0表示清空MaxInstanceLifetime设置过的值(即未设置MaxInstanceLifetime值)。

默认值: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

伸缩组是否关闭期望实例数功能。取值范围:

  • false:启用期望实例数功能。
  • true:关闭期望实例数功能。

    说明 只有伸缩组当前无伸缩活动时,才能将该参数设置为true(即伸缩组的期望实例数功能关闭),伸缩组当前的DesiredCapacity属性也会被清空,但伸缩组中当前的实例数量不发生变化。

ScalingPolicy String recycle

指定伸缩组的回收模式。取值范围:

  • recycle:伸缩组的回收模式为停机回收模式。
  • release:伸缩组的回收模式为释放模式。
  • forcerelease:伸缩组的回收模式为强制释放模式。

    说明 选择forcerelease后,在弹性收缩活动中系统会强制释放运行中(Running)的实例。强制释放实例相当于断电操作,会导致该实例内存以及存储中的临时数据被擦除,数据无法恢复,请您谨慎选择。

  • forcerecycle:伸缩组的回收模式为强制停机回收模式。

    说明 选择forcerecycle后,在弹性收缩活动中系统会强制关机运行中(Running)的实例。强制关机相当于断电操作,会导致该实例内存以及存储中的临时数据被擦除,数据无法恢复,请您谨慎选择。

ScalingPolicy指定伸缩组的回收模式,但实例被移出伸缩组时的具体动作,由RemoveInstances的RemovePolicy参数决定,更多信息,请参见RemoveInstances

HealthCheckTypes.N String ECS

伸缩组的健康检查方式列表。取值范围:

  • NONE:不做健康检查。
  • ECS:对伸缩组内的实例做健康检查(ECS类型和ECI类型的伸缩组均使用本取值开启实例健康检查)。
  • LOAD_BALANCER: 根据负载均衡(暂不支持负载均衡CLB类型)健康检查结果判断实例健康状态。

默认值:ECS。

StopInstanceTimeout Integer 60

缩容流程中等待ECS实例停机成功的超时时间,单位为秒。

取值范围:30~240。

说明
  • 该参数仅在 ScalingPolicy = release 模式下的缩容流程里生效。
  • 如果设置了该参数,系统会最长等待StopInstanceTimeout时间将实例停机成功,超时后无论实例是否成功停机都会继续缩容。
  • 如果没有设置该参数,系统会长时间等待实例停机成功,只有实例停机成功后才继续缩容,停机失败时,缩容流程会回滚,缩容失败。
  • 该参数设置为0时,表示取消该参数配置。

返回数据

名称

类型

示例值

描述

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.

指定的实例启动模板固定版本号应该是数字。