如果您需要根据业务变动需求与策略自动增加或减少指定类型的实例数量,则可以通过调用API CreateScalingGroup创建伸缩组来自动调整您的业务计算能力(即实例数量)。
接口说明
伸缩组是具有相同应用场景的 ECS 实例的集合。
一个地域下支持创建的伸缩组数量和弹性伸缩使用情况有关,请前往配额中心查看伸缩组总数对应的配额值。
伸缩组创建成功后不会立即生效。您需要先调用 EnableScalingGroup 接口启用伸缩组,伸缩组才能触发伸缩活动和执行伸缩规则。
伸缩组、关联的传统型负载均衡 CLB(原 SLB)实例和关联的 RDS 实例必须在同一个地域。更多信息,请参见地域与可用区。
如果您为伸缩组关联了 CLB 实例,伸缩组会自动将加入伸缩组的 ECS 实例添加到 CLB 实例的后端服务器组。您可以指定 ECS 实例需要加入的服务器组,支持以下两种服务器组:
-
默认服务器组:用来接收前端请求的 ECS 实例,如果监听没有设置虚拟服务器组或主备服务器组,默认将请求转发至默认服务器组中的 ECS 实例。
-
虚拟服务器组:当您需要将不同的请求转发到不同的后端服务器上,或着需要通过域名和 URL 进行请求转发时,可以选择使用虚拟服务器组。
实例在加入 CLB 实例的后端服务器组后,权重默认为 50。CLB 实例需要满足以下条件:
-
该 CLB 实例的状态必须是 active,您可以调用 DescribeLoadBalancers 接口查看指定 CLB 实例的状态。
-
该 CLB 实例配置的所有监听端口必须开启健康检查,否则伸缩组创建失败。
如果您为伸缩组关联了应用型负载均衡 ALB 服务器组或网络型负载均衡 NLB 服务器组,伸缩组会自动将加入伸缩组的 ECS 实例添加为 ALB 服务器组或 NLB 服务器组的后端服务器,处理 ALB 实例或 NLB 实例分发的访问请求。您可以指定多个 ALB 服务器组或 NLB 服务器组,但服务器组必须与伸缩组属于同一个 VPC。更多信息,请参见 AttachAlbServerGroups 或 AttachServerGroups 。
如果您为伸缩组关联了 RDS 实例,伸缩组会自动将加入伸缩组的 ECS 实例的内网 IP 添加到 RDS 实例的访问白名单。RDS 实例需要满足以下条件:
-
该 RDS 实例的状态必须是 Running,您可以调用 DescribeDBInstances 接口查看指定 RDS 实例的状态。
-
该 RDS 实例访问白名单的 IP 数不能超过上限值。更多信息,请参见 RDS 文档设置白名单。
如果伸缩组的 MultiAZPolicy 设置为 COST_OPTIMIZED:
-
当指定 OnDemandBaseCapacity、OnDemandPercentageAboveBaseCapacity 和 SpotInstancePools 参数时,即指定成本优化策略下的实例分配方式,在扩缩容时将优先满足该实例分配方式。
-
当不指定 OnDemandBaseCapacity、OnDemandPercentageAboveBaseCapacity 或 SpotInstancePools 参数时,成本优化策略下将仅按照成本最低的方式进行实例创建。
如果您为伸缩组设置了可传播标签,即Tags.Propagate
为 true 时:
-
伸缩组上的标签只会传播到新创建的实例上,而不会传播到已经在伸缩组中运行的实例上。
-
如果您在伸缩配置中指定了实例标签,并且选择将伸缩组的标签传播到该实例,则所有标签都会同时存在。
-
如果伸缩配置中的标签和伸缩组中的可传播标签指定了相同的标签键,则优先使用伸缩配置中的标签值。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
下表是API对应的授权信息,可以在RAM权限策略语句的Action
元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
- 操作:是指具体的权限点。
- 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
- 资源类型:是指操作中支持授权的资源类型。具体说明如下:
- 对于必选的资源类型,用背景高亮的方式表示。
- 对于不支持资源级授权的操作,用
全部资源
表示。
- 条件关键字:是指云产品自身定义的条件关键字。
- 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作 | 访问级别 | 资源类型 | 条件关键字 | 关联操作 |
---|---|---|---|---|
ess:CreateScalingGroup | create | *ScalingGroup acs:ess:{#regionId}:{#accountId}:scalinggroup/* |
| 无 |
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
ScalingGroupName | string | 否 | 伸缩组的名称,同一地域下伸缩组名称唯一。 长度为 2~64 个英文或中文字符,以数字、大小写英文字母或中文开头,可以包含数字、下划线(_)、短划线(-)和半角句号(.)。 默认值为 ScalingGroupId 的值。 | scalinggroup**** |
LaunchTemplateId | string | 否 | 实例启动模板 ID,用于指定伸缩组从实例启动模板获取启动配置信息。 | lt-m5e3ofjr1zn1aw7**** |
LaunchTemplateVersion | string | 否 | 实例启动模板的版本。取值范围:
| Default |
InstanceId | string | 否 | 实例的 ID。创建伸缩组时,将从指定的实例获取所需的配置信息,并自动创建伸缩配置。 | i-28wt4**** |
RegionId | string | 是 | 伸缩组所属的地域 ID。 | cn-qingdao |
MinSize | integer | 是 | 伸缩组内实例台数的最小值,当伸缩组内实例数小于 MinSize 的值时,弹性伸缩会自动创建实例。 说明
MinSize 的值必须小于或等于 MaxSize 的值。
| 2 |
MaxSize | integer | 是 | 伸缩组内实例台数的最大值,当伸缩组内实例数大于 MaxSize 的值时,弹性伸缩会自动移出实例。 MaxSize 的取值范围和弹性伸缩使用情况有关,请前往配额中心查看单个伸缩组可以设置的组内最大实例数对应的配额值。 如果单个伸缩组可以设置的组内最大实例数对应的配额值为 2000,则 MaxSize 的取值范围为 0~2000。 | 20 |
DefaultCooldown | integer | 否 | 一次伸缩活动(添加或移出实例)结束后的一段冷却时间。取值范围:0~86400,单位:秒。 冷却时间内,该伸缩组不执行其他的伸缩活动,仅针对云监控报警任务触发的伸缩活动有效。 默认值:300。 | 300 |
LoadBalancerIds | string | 否 | 传统型负载均衡 CLB(原 SLB)实例 ID。取值可以是由多台 CLB 实例 ID 组成一个 JSON 数组,ID 之间用半角逗号(,)隔开。 单个伸缩组可以关联的 CLB 总数和弹性伸缩使用情况有关,请前往配额中心查看单个伸缩组可以关联的负载均衡实例总数对应的配额值。 | ["lb-bp1u7etiogg38yvwz****", "lb-bp168cqrux9ai9l7f****", "lb-bp1jv3m9zvj22ufxp****"] |
DBInstanceIds | string | 否 | RDS 实例 ID。取值可以是由多台 RDS 实例 ID 组成一个 JSON 数组,ID 之间用半角逗号(,)隔开。 单个伸缩组可以关联的 RDS 实例总数和弹性伸缩使用情况有关,请前往配额中心查看单个伸缩组可以关联的 RDS 实例总数对应的配额值。 | ["rm-bp142f86de0t7****", "rm-bp18l1z42ar4o****", "rm-bp1lqr97h4aqk****"] |
RemovalPolicies | array | 否 | 指定实例移出策略的筛选策略。取值范围:
OldestScalingConfiguration 中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。CustomPolicy 仅支持设置为首位移除策略,当指定 CustomPolicy 需同时指定 CustomPolicyARN 参数。 说明
伸缩组移出 ECS 实例还受伸缩组的扩缩容策略(MultiAZPolicy)影响。更多信息,请参见设置移出实例的组合策略。
| |
string | 否 | 指定实例移出策略的筛选策略。取值范围:
OldestScalingConfiguration 中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。CustomPolicy 仅支持设置为首位移除策略,当指定 CustomPolicy 需同时指定 CustomPolicyARN 参数。 说明
伸缩组移出 ECS 实例还受伸缩组的扩缩容策略(MultiAZPolicy)影响。更多信息,请参见设置移出实例的组合策略。
| OldestScalingConfiguration | |
VSwitchId | string | 否 | 虚拟交换机的 ID。指定后,伸缩组的网络类型为专有网络。 说明
当伸缩组未指定 VSwitchId 或 VSwitchIds 参数时,伸缩组的网络类型默认为经典网络。
| vsw-bp14zolna43z266bq**** |
MultiAZPolicy | string | 否 | 多可用区伸缩组 ECS 实例扩缩容策略。取值范围:
默认值:PRIORITY。 | PRIORITY |
HealthCheckType | string | 否 | 伸缩组的健康检查方式。取值范围:
默认值:ECS。 说明
如果需要同时开启实例健康检查和负载均衡健康检查,请使用 HealthCheckTypes 参数。
| ECS |
ScalingPolicy | string | 否 | 指定伸缩组的回收模式。取值范围:
ScalingPolicy 指定伸缩组的回收模式,但实例被移出伸缩组时的具体动作,由 RemoveInstances 的 RemovePolicy 参数决定。更多信息,请参见 RemoveInstances 。 | recycle |
ClientToken | string | 否 | 保证请求幂等性。 从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持 ASCII 字符,且不能超过 64 个字符。更多信息,请参见如何保证幂等性。 | 123e4567-e89b-12d3-a456-42665544**** |
OnDemandBaseCapacity | integer | 否 | 伸缩组所需要按量实例个数的最小值,取值范围:0~1000。当按量实例个数少于该值时,将优先创建按量实例。 | 30 |
OnDemandPercentageAboveBaseCapacity | integer | 否 | 伸缩组满足最小按量实例数(OnDemandBaseCapacity)要求后,超出的实例中按量实例应占的比例,取值范围:0~100。 | 20 |
SpotInstanceRemedy | boolean | 否 | 是否开启补齐抢占式实例的弹性伸缩策略。开启后,当收到抢占式实例将被回收的系统消息时,伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。 | true |
CompensateWithOnDemand | boolean | 否 | 当 MultiAZPolicy 取值为 COST_OPTIMIZED 时,如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足 ECS 实例数量要求。取值范围:
默认值:true。 | true |
SpotInstancePools | integer | 否 | 指定可用实例规格的个数,伸缩组将按成本最低的多个规格均衡创建抢占式实例。取值范围:1~10。 | 5 |
DesiredCapacity | integer | 否 | 伸缩组内实例的期望数量,伸缩组会自动将实例数量维持在期望实例数。取值不得大于 MaxSize,且不得小于 MinSize。 | 5 |
GroupDeletionProtection | boolean | 否 | 是否开启伸缩组删除保护。取值范围:
默认值:false。 | true |
GroupType | string | 否 | 伸缩组管理的实例类型。取值范围:
默认值:ECS。 | ECS |
ContainerGroupId | string | 否 | ECI 实例 ID,即容器组 ID。 | eci-uf6fonnghi50u374**** |
VSwitchIds | array | 否 | 一台或多台虚拟交换机的 ID。如果您使用了 VSwitchIds 参数,VSwitchId 参数将被忽略。指定后,伸缩组的网络类型为专有网络。 指定多台虚拟交换机时:
说明
当伸缩组未指定 VSwitchId 或 VSwitchIds 参数时,伸缩组的网络类型默认为经典网络。
| |
string | 否 | 一台或多台虚拟交换机的 ID。如果您使用了 VSwitchIds 参数,VSwitchId 参数将被忽略。指定后,伸缩组的网络类型为专有网络。 指定多台虚拟交换机时:
说明
当伸缩组未指定 VSwitchId 或 VSwitchIds 参数时,伸缩组的网络类型默认为经典网络。
| vsw-bp14zolna43z266bq**** | |
LifecycleHooks | array<object> | 否 | 生命周期挂钩信息列表。 | |
object | 否 | 生命周期挂钩信息列表。 | ||
DefaultResult | string | 否 | 等待状态结束后的下一步动作。取值范围:
当伸缩组发生弹性收缩活动(SCALE_IN)并触发多个生命周期挂钩时,DefaultResult 取值为 ABANDON 的生命周期挂钩触发的等待状态结束时,会提前结束其它对应的等待状态。其他情况下,下一步动作均以最后一个结束等待状态的下一步动作为准。 默认值:CONTINUE。 | CONTINUE |
LifecycleHookName | string | 否 | 生命周期挂钩名称,指定后不支持修改,未指定时默认与生命周期挂钩 ID 相同。 | lifecyclehook**** |
LifecycleTransition | string | 否 | 生命周期挂钩适用的伸缩活动类型,取值范围:
说明
若伸缩组指定生命周期挂钩,此参数必选,其他相关参数可选。
| SCALE_OUT |
NotificationMetadata | string | 否 | 伸缩活动的等待状态的固定字符串信息。参数长度不超过 4096 个字符。弹性伸缩每次推送消息到通知对象时,会同时发送您预先指定的 notificationmetadata 参数值,便于管理和标记不同类别的通知信息。当您同时指定了 notificationarn 参数时,notificationmetadata 才有效。 | Test |
NotificationArn | string | 否 | 生命周期挂钩通知对象标识符,支持轻量消息队列(原 MNS)的队列或主题,参数取值格式:acs:ess:{region}:{account-id}:{resource-relative-id}。
例如:
| acs:ess:cn-hangzhou:1111111111:queue/queue2 |
HeartbeatTimeout | integer | 否 | 生命周期挂钩为伸缩组活动设置的等待时间,等待状态超时后会执行下一步动作。取值范围:30~21600,单位:秒。 创建了生命周期挂钩后,您可以调用 RecordLifecycleActionHeartbeat 延长实例的等待时间,也可以调用 CompleteLifecycleAction 提前结束伸缩活动的等待状态。 默认值:600。 | 600 |
VServerGroups | array<object> | 否 | 伸缩组关联虚拟服务器组的信息集合。 | |
object | 否 | 伸缩组关联虚拟服务器组的信息集合。 | ||
VServerGroupAttributes | array<object> | 否 | 后端服务器组属性。 | |
object | 否 | 后端服务器组属性。 | ||
VServerGroupId | string | 否 | 虚拟服务器组 ID。 | rsp-bp1443g77**** |
Weight | integer | 否 | 弹性伸缩将实例添加到虚拟服务器组后,实例作为后端服务器的权重。权重越高,实例将被分配到越多的访问请求。如果权重为 0,则实例不会收到访问请求。取值范围:0~100。 默认值:50。 | 100 |
Port | integer | 否 | 弹性伸缩将实例添加到虚拟服务器组后,实例使用的端口号,取值范围:1~65535。 | 22 |
LoadBalancerId | string | 否 | 虚拟服务器组所属传统型负载均衡 CLB(原 SLB)实例的 ID。 | lb-bp1u7etiogg38yvwz**** |
Tags | array<object> | 否 | 伸缩组的标签信息集合。 | |
object | 否 | 伸缩组的标签信息集合。 | ||
Key | string | 否 | 伸缩组的标签键。 | Department |
Value | string | 否 | 伸缩组的标签值。 | Finance |
Propagate | boolean | 否 | 标识该标签是否为可传播标签,取值范围:
默认值:false。 | false |
LaunchTemplateOverrides | array<object> | 否 | 扩展启动模板的实例规格信息。 | |
object | 否 | 扩展启动模板的实例规格信息。 | ||
InstanceType | string | 否 | 当您需要伸缩组按照实例规格容量进行伸缩时,请同时指定本参数和 LaunchTemplateOverrides.WeightedCapacity。 本参数用于指定实例规格,会覆盖启动模板中的实例规格。 说明
仅当 LaunchTemplateId 参数指定了启动模板时,本参数生效。
InstanceType 的取值范围:在售的 ECS 实例规格。 | ecs.c5.xlarge |
WeightedCapacity | integer | 否 | 当您需要伸缩组按照实例规格容量进行伸缩时,在指定 LaunchTemplateOverrides.InstanceType 后,再指定本参数。 本参数用于指定实例规格的权重,即实例规格的单台实例在伸缩组中表示的容量大小。权重越大,满足期望容量所需的本实例规格的实例数量越少。 由于每个实例规格的 vCPU 个数、内存大小等性能指标会有差异,您可以根据自身需求,给不同的实例规格配置不同的权重。 例如:
为满足期望容量,伸缩组将为用户扩容 2 台 ecs.c5.xlarge 实例。 说明
扩容时伸缩组的容量不得超过最大容量(MaxSize)与实例规格的最大权重之和。
WeightedCapacity 的取值范围:1~500。 | 4 |
SpotPriceLimit | float | 否 | 本参数用于指定实例启动模板覆盖规格(即 说明
仅当 LaunchTemplateId 参数指定了启动模板时,该参数才生效。
| 0.025 |
AlbServerGroups | array<object> | 否 | ALB 服务器组的相关信息集合。 | |
object | 否 | ALB 服务器组的相关信息集合。 | ||
AlbServerGroupId | string | 否 | ALB 服务器组的 ID。 一个伸缩组支持关联的 ALB 服务器组数量有限,如需查看或手动申请提升配额值,请前往配额中心。 | sgp-ddwb0y0g6y9bjm**** |
Weight | integer | 否 | 弹性伸缩将实例添加到 ALB 服务器组后,实例作为后端服务器的权重。权重越高,实例将被分配到越多的访问请求。如果权重为 0,则实例不会收到访问请求。取值范围:0~100。 | 100 |
Port | integer | 否 | 弹性伸缩将实例添加到 ALB 服务器组后,实例使用的端口号,取值范围:1~65535。 | 22 |
ServerGroups | array<object> | 否 | 负载均衡服务器组的相关信息集合。 说明
不支持同时在 AlbServerGroups 和 ServerGroups 中设置相同的服务器组信息。
| |
object | 否 | 负载均衡服务器组的相关信息集合。 | ||
ServerGroupId | string | 否 | 服务器组 ID。 | sgp-5yc3bd9lfyh***** |
Type | string | 否 | 服务器组类型。取值范围:
| ALB |
Weight | integer | 否 | 弹性伸缩将实例添加到服务器组后,实例作为后端服务器的权重。取值范围:0~100。 权重越高,实例将被分配到越多的访问请求。如果权重为 0,则实例不会收到访问请求。 | 100 |
Port | integer | 否 | 弹性伸缩将实例添加到服务器组后,实例使用的端口号,取值范围:1~65535。 | 22 |
AzBalance | boolean | 否 | 伸缩组的容量是否在多个可用区间均衡分布(仅当
说明
如果 MultiAZPolicy 参数取值为COMPOSABLE 策略,并且AzBalance 参数取值为true 时,其效果和MultiAZPolicy 参数取值为BALANCE 相同。
默认值:false。 | false |
AllocationStrategy | string | 否 | 容量分配策略,决定了伸缩组如何选择可用的实例规格类型满足容量。容量分布策略同时对按量和抢占式容量生效(仅当
默认值:priority。 | priority |
SpotAllocationStrategy | string | 否 | 抢占式容量分布策略。您可以通过该参数单独指定抢占式容量的分布策略(仅当
默认值:priority。 | lowestPrice |
SyncAlarmRuleToCms | boolean | 否 | 说明
该参数暂未开放使用。
| false |
MaxInstanceLifetime | integer | 否 | 实例在伸缩组中存活的最大时间。单位为秒。 取值范围:[86400, Integer.maxValue]。 默认值:null。 | null |
CustomPolicyARN | string | 否 | 自定义缩容策略 Function 函数 ARN。仅当 RemovalPolicies 配置第一个移除策略为 CustomPolicy 时生效。 | acs:fc:cn-zhangjiakou:16145688****:services/ess_custom_terminate_policy.LATEST/functions/ess_custom_terminate_policy_name |
ResourceGroupId | string | 否 | 新创建的伸缩组所属的资源组 ID。 说明
将新创建的伸缩组归属到指定的资源组中。如果不指定该参数,则归属为默认资源组。
| rg-123****** |
LoadBalancerConfigs | array<object> | 否 | 负载均衡配置列表。 | |
object | 否 | 负载均衡 CLB(原 SLB)配置列表。 | ||
LoadBalancerId | string | 否 | 负载均衡 CLB(原 SLB)实例的 ID。 | lb-2zen1olhfg9yw3f4q**** |
Weight | integer | 否 | 弹性伸缩将实例添加到 SLB 服务器组后,实例作为后端服务器的权重。权重越高,实例将被分配到越多的访问请求。如果权重为 0,则实例不会收到访问请求。取值范围:0~100。 | 10 |
HealthCheckTypes | array | 否 | 伸缩组的健康检查方式。 说明
使用此参数可以设置多个值,开启多个健康检查选项。如果设置了 HealthCheckType 参数,则本参数将被忽略。
| |
string | 否 | 伸缩组的健康检查方式列表。取值范围:
默认值:ECS。 | ECS | |
DBInstances | array<object> | 否 | 伸缩组关联的数据库列表。 | |
object | 否 | 伸缩组关联的数据库配置信息。 | ||
DBInstanceId | string | 否 | 数据库实例 ID。 | rm-m5eqju85s45mu0*** |
Type | string | 否 | 数据库类型。取值范围:
默认值:RDS。 | RDS |
AttachMode | string | 否 | 伸缩组与数据库关联方式。取值范围:
| SecurityIp |
StopInstanceTimeout | integer | 否 | 缩容流程中等待 ECS 实例停机成功的超时时间,单位为秒。 取值范围:30~240。 说明
| 60 |
CapacityOptions | object | 否 | ||
OnDemandBaseCapacity | integer | 否 | 伸缩组所需要按量实例个数的最小值,取值范围:0~1000。当按量实例个数少于该值时,将优先创建按量实例。 当 | 30 |
OnDemandPercentageAboveBaseCapacity | integer | 否 | 伸缩组满足最小按量实例数(OnDemandBaseCapacity)要求后,超出的实例中按量实例应占的比例,取值范围:0~100。 当 | 20 |
CompensateWithOnDemand | boolean | 否 | 当
默认值:true。 | true |
SpotAutoReplaceOnDemand | boolean | 否 | 当开启
默认值:false。 | false |
返回参数
示例
正常返回示例
JSON
格式
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"ScalingGroupId": "asg-bp14wlu85wrpchm0****"
}
错误码
HTTP status code | 错误码 | 错误信息 |
---|---|---|
404 | ResourceNotAvailable.VPCNetwork | The specified zone does not support vpc network or sold out. |
访问错误中心查看更多错误码。
变更历史
变更时间 | 变更内容概要 | 操作 |
---|---|---|
2024-12-03 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-10-16 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-04-23 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2024-02-01 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2023-11-14 | OpenAPI 错误码发生变更 | 查看变更详情 |
2023-03-30 | OpenAPI 错误码发生变更、OpenAPI 入参发生变更 | 查看变更详情 |
2022-12-22 | OpenAPI 错误码发生变更 | 查看变更详情 |