ALIYUN::ESS::ScalingConfiguration类型用于为伸缩组创建伸缩配置。
语法
{
"Type": "ALIYUN::ESS::ScalingConfiguration",
"Properties": {
"PasswordInherit": Boolean,
"DiskMappings": List,
"RamRoleName": String,
"IoOptimized": String,
"InternetChargeType": String,
"KeyPairName": String,
"InstanceId": String,
"InstanceTypes": List,
"ImageId": String,
"ResourceGroupId": String,
"SpotStrategy": String,
"InstanceType": String,
"SystemDiskCategory": String,
"SystemDiskSize": Integer,
"SystemDiskAutoSnapshotPolicyId": String,
"SystemDiskPerformanceLevel": String,
"InternetMaxBandwidthOut": Integer,
"InstanceName": String,
"InternetMaxBandwidthIn": Integer,
"ScalingConfigurationName": String,
"UserData": String,
"DeploymentSetId": String,
"SecurityGroupId": String,
"SpotPriceLimit": Number,
"HpcClusterId": String,
"ScalingGroupId": String,
"SpotPriceLimitForInstanceType": Map,
"TagList": List,
"Ipv6AddressCount": Integer,
"LoadBalancerWeight": Integer,
"CreditSpecification": String,
"ImageFamily": String,
"HostName": String,
"Password": String,
"SystemDiskBurstingEnabled": Boolean,
"ImageOptionsLoginAsNonRoot": Boolean,
"SystemDiskEncrypted": Boolean,
"SystemDiskEncryptAlgorithm": String,
"ZoneId": String,
"Cpu": Integer,
"SystemDiskProvisionedIops": Integer,
"SystemDiskKMSKeyId": String,
"InstancePatternInfos": List,
"SpotInterruptionBehavior": String,
"ImageName": String,
"SystemDiskDescription": String,
"SystemDiskDiskName": String,
"InstanceTypeOverrides": List,
"SystemDiskCategories": List,
"Memory": Integer,
"InstanceDescription": String,
"SecurityGroupIds": List,
"SpotDuration": Integer,
"SecurityEnhancementStrategy": String,
"Affinity": String,
"Tenancy": String,
"PrivatePoolOptions": Map,
"DedicatedHostId": String
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ResourceGroupId | String | 否 | 是 | 实例所在的资源组ID。 | 无 |
DeploymentSetId | String | 否 | 否 | 部署集ID。 | 无 |
HpcClusterId | String | 否 | 否 | 实例所属的EHPC集群ID。 | 无 |
ScalingGroupId | String | 是 | 否 | 伸缩配置所属的伸缩组ID。 | 无 |
DiskMappings | List | 否 | 是 | 需要挂载的磁盘。 | 最多支持16块磁盘。 更多信息,请参见DiskMappings属性。 |
InternetChargeType | String | 否 | 是 | 公网访问带宽计费方式。 | 取值:
|
InternetMaxBandwidthIn | Integer | 否 | 否 | 公网最大入网带宽。 | 单位:Mbps。 取值范围:1~200。 如果您没有指定该参数,则入带宽将自动被设置为200 Mbps。实例的入数据流量免费,该参数在任何情况下都不涉及计费。 |
InternetMaxBandwidthOut | Integer | 否 | 是 | 公网最大出网带宽。 | 取值范围:
单位:Mbps。 |
InstanceId | String | 否 | 否 | 伸缩配置的实例ID。 | 无 |
SystemDiskCategory | String | 否 | 是 | 系统盘类型。 | 取值:
当InstanceType为I系列的实例规格且实例属于非I/O优化实例时,默认值为cloud,否则,默认值为cloud_efficiency。 |
ImageId | String | 否 | 是 | 实例的镜像ID,包括公共镜像、自定义镜像和云市场镜像。 | 更多信息,请参见公共镜像概述。 |
InstanceType | String | 否 | 是 | 实例规格。 | 更多信息,请参见实例规格族。 |
SecurityGroupId | String | 否 | 是 | 实例所属的安全组。 | 无 |
IoOptimized | String | 否 | 是 | 是否创建I/O优化实例。 | 取值:
|
ScalingConfigurationName | String | 否 | 是 | 伸缩配置的名称。 | 长度为2~64个字符,以数字、英文字母或汉字开头,可包含数字、英文字母、汉字、下划线(_)、短划线(-)和半角句号(.)。 在同一地域下同一伸缩组内伸缩配置名称唯一。 如果您没有指定本参数,则默认使用伸缩配置的ID。 |
KeyPairName | String | 否 | 是 | 实例绑定的密钥对名称。 |
|
RamRoleName | String | 否 | 是 | 实例RAM角色名称。 | 您可以使用RAM API ListRoles查询实例RAM角色名称。更多信息,请参见CreateRole - 创建角色和ListRoles - 获取角色列表。 |
SystemDiskSize | Integer | 否 | 是 | 系统盘大小。 | 取值范围:20~500。 默认值:40。 单位:GiB。 如果使用自定义镜像创建系统盘,则系统盘大小必须大于等于自定义镜像大小。 |
SystemDiskPerformanceLevel | String | 否 | 是 | 创建ESSD云盘作为系统盘使用时,设置云盘的性能等级。 | 取值:
有关如何选择ESSD性能等级,请参见ESSD云盘。 |
UserData | String | 否 | 是 | 创建实例时传递的用户数据。 | 内容需要限制在16KB以内,无需Base64转码,特殊字符需要使用反斜线(\)转义。 |
InstanceTypes | List | 否 | 是 | 多实例规格参数。 | 如果指定了InstanceTypes,则InstanceType无效。 一个伸缩配置内最多可以设置10种实例规格,优先级按列表元素的顺序依次降低。当无法根据优先级较高的实例规格创建出实例时,弹性伸缩服务会自动选择下一优先级的实例规格来创建实例。 |
PasswordInherit | Boolean | 否 | 是 | 是否使用镜像预设的密码。 | 如果使用镜像预设的密码,您需要确保所用镜像已经预设了密码。 |
TagList | List | 否 | 是 | 实例标签。 | 标签以键值对方式传入,最多可以使用5组标签,格式为 更多信息,请参见TagList属性。 |
Ipv6AddressCount | Integer | 否 | 是 | 为弹性网卡指定随机生成的IPv6地址数量。 | 无 |
LoadBalancerWeight | Integer | 否 | 是 | ECS实例作为负载均衡后端服务器时的权重。 | 取值范围:1~100。 默认值:50。 |
CreditSpecification | String | 否 | 是 | 突发性能实例的运行模式。 | 取值:
关于实例性能的更多信息,请参见性能模式。 |
ImageFamily | String | 否 | 是 | 镜像族系名称。 | 通过设置该参数来获取当前镜像族系内最新可用镜像,用于创建实例。如果已经设置了参数ImageId,则不能设置该参数。 |
SpotStrategy | String | 否 | 是 | 后付费实例的抢占策略。 | 取值:
|
InstanceName | String | 否 | 是 | 基于当前伸缩配置创建的实例的名称。 | 无 |
SpotPriceLimit | Number | 否 | 是 | 实例每小时的最高价格。 | 支持最多3位小数。 当SpotStrategy取值为SpotWithPriceLimit时该参数生效,且取值会被SpotPriceLimitForInstanceType的取值所覆盖。 |
SpotPriceLimitForInstanceType | Map | 否 | 是 | 抢占式实例的实例规格和对应的出价。 | 格式: 当SpotStrategy取值为SpotWithPriceLimit时该参数生效。 最多可设置10组实例和价格。 |
SystemDiskAutoSnapshotPolicyId | String | 否 | 是 | 系统盘使用的自动快照策略ID。 | 无 |
HostName | String | 否 | 是 | 云服务器的主机名。 | 半角句号(.)或短划线(-)不能作为首尾字符,不能连续使用半角句号(.)或短划线(-)。 不同类型实例的命名要求如下:
|
Password | String | 否 | 是 | ECS实例的密码。 | 长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号中的三类字符。特殊符号可以是:
Windows实例不能以斜线号(/)为密码首字符。 说明 如果传入Password参数,建议您使用HTTPS协议发送请求,避免密码泄露。 |
SystemDiskBurstingEnabled | Boolean | 否 | 否 | 系统盘是否开启Burst(性能突发)。 | 取值:
|
ImageOptionsLoginAsNonRoot | Boolean | 否 | 否 | ECS 实例是否使用ecs-user用户登录。 | 取值:
|
SystemDiskEncrypted | Boolean | 否 | 是 | 系统盘是否加密。 | 取值:
|
SystemDiskEncryptAlgorithm | String | 否 | 是 | 系统盘采用的加密算法。 | 取值:
|
ZoneId | String | 否 | 是 | 实例所属的可用区ID。 | 无 |
Cpu | Integer | 否 | 是 | vCPU个数。 | 同时指定CPU和Memory可以定义实例规格范围,例如,CPU=2且Memory=16可以定义配置为2 vCPU和16 GiB的所有实例规格。弹性伸缩会结合IO优化、可用区等因素确定可用实例规格集合,并根据价格排序为您创建价格最低的实例。 |
SystemDiskProvisionedIops | Integer | 否 | 是 | 系统盘预配置的IOPS(Input/Output Operations Per Second)性能指标。 | 无 |
SystemDiskKMSKeyId | String | 否 | 是 | 系统盘使用的KMS密钥ID。 | 无 |
InstancePatternInfos | List | 否 | 是 | 智能配置的信息集合。 | 更多信息,请参见InstancePatternInfos属性。 |
SpotInterruptionBehavior | String | 否 | 是 | 抢占实例中断模式。 | 无 |
ImageName | String | 否 | 是 | 镜像文件名称。 | 无 |
SystemDiskDescription | String | 否 | 是 | 系统盘的描述。 | 无 |
SystemDiskDiskName | String | 否 | 是 | 系统盘的名称。 | 无 |
InstanceTypeOverrides | List | 否 | 是 | 用于指定的实例规格相关信息。 | 更多信息,请参见InstanceTypeOverrides属性 |
SystemDiskCategories | List | 否 | 是 | 系统盘的多磁盘类型。 | 当无法使用高优先级的磁盘类型时,弹性伸缩自动尝试下一优先级的磁盘类型创建系统盘。取值范围:
|
Memory | Integer | 否 | 是 | 内存大小。 | 单位:GiB。 同时指定CPU和Memory可以定义实例规格范围。例如,CPU=2且Memory=16可以定义配置为2 vCPU和16 GiB的所有实例规格。弹性伸缩会结合IO优化、可用区等因素确定可用实例规格集合,并根据价格排序为您创建价格最低的实例。 |
InstanceDescription | String | 否 | 是 | ECS实例的描述。 | 长度为2~256个英文或中文字符,不能以 |
SecurityGroupIds | List | 否 | 是 | 将ECS实例同时加入多个安全组。 | 说明 不支持同时指定SecurityGroupId和SecurityGroupIds。 |
SpotDuration | Integer | 否 | 是 | 抢占式实例的保留时长。 | 单位为小时。取值范围:
|
SecurityEnhancementStrategy | String | 否 | 否 | 是否开启安全加固。 | 取值范围:
|
Affinity | String | 否 | 是 | 专有宿主机实例是否与专有宿主机关联。 | 取值范围:
|
Tenancy | String | 否 | 是 | 是否在专有宿主机上创建实例。 | 取值范围:
|
PrivatePoolOptions | Map | 否 | 是 | 实例启动的私有池配置 | 更多信息,请参见PrivatePoolOptions属性 |
DedicatedHostId | String | 否 | 是 | 是否在专有宿主机上创建ECS实例。 | 由于专有宿主机不支持创建抢占式实例,指定DedicatedHostId参数后,会自动忽略请求中的SpotStrategy和SpotPriceLimit设置。 您可以调用DescribeDedicatedHosts 接口查询专有宿主机ID列表。 |
DiskMappings语法
"DiskMappings": [
{
"Category": String,
"DiskName": String,
"Description": String,
"AutoSnapshotPolicyId": String,
"PerformanceLevel": String,
"Encrypted": String,
"KMSKeyId": String,
"Device": String,
"SnapshotId": String,
"Size": String,
"DeleteWithInstance": Boolean,
"ProvisionedIops": Integer,
"Categories": List,
"BurstingEnabled": Boolean
}
]
DiskMappings属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Size | String | 否 | 否 | 数据盘磁盘大小。 | 取值:
单位:GB。 指定该参数后,磁盘大小必须大于等于快照大小(快照通过SnapshotId指定)。 |
Category | String | 否 | 否 | 数据盘类型。 | 取值:
对于I/O优化实例,默认值为cloud_efficiency;对于非I/O优化实例,默认值为cloud。 |
DiskName | String | 否 | 否 | 数据盘名称。 | 长度为2~128个字符。 必须以英文字母或汉字开头,不能以 可以包含数字、英文字母、汉字、半角冒号(:)、下划线(_)和短划线(-)。 |
PerformanceLevel | String | 否 | 否 | 创建ESSD云盘作为数据盘使用时,设置云盘的性能等级。 | 取值:
有关如何选择ESSD性能等级,请参见ESSD云盘。 |
Description | String | 否 | 否 | 数据盘描述。 | 长度为2~256个字符。不能以 |
Device | String | 否 | 否 | 数据盘挂载点。 | 如果该参数值未指定,则默认将在自动创建ECS实例时由系统分配,取值从 |
SnapshotId | String | 否 | 否 | 创建数据盘时使用的快照。 | 指定该参数后,Size会被忽略,实际创建的磁盘大小为指定快照的大小。如果快照创建于2013年7月15日或之前,调用快照会被拒绝,返回参数中会提示InvalidSnapshot.TooOld。 |
Encrypted | String | 否 | 否 | 数据盘是否加密。 | 取值:
|
KMSKeyId | String | 否 | 否 | 数据盘对应的KMS密钥ID。 | 无 |
AutoSnapshotPolicyId | String | 否 | 否 | 数据盘使用的自动快照策略ID。 | 无 |
DeleteWithInstance | Boolean | 否 | 否 | 数据盘是否随实例释放。 | 取值范围:
|
ProvisionedIops | Integer | 否 | 否 | 数据盘预配置的 IOPS(Input/Output Operations Per Second)性能指标。 | 说明 IOPS(Input/Output Operations Per Second)指每秒能处理的 I/O 个数,表示块存储处理读写(输出/输入)的能力,单位为次。 |
Categories | List | 否 | 否 | 数据盘的多磁盘类型。 | 第一个磁盘类型优先级最高,其他磁盘类型的优先级依次递减。当无法使用高优先级的磁盘类型时,弹性伸缩自动尝试下一优先级的磁盘类型创建数据盘。取值范围:
|
BurstingEnabled | Boolean | 否 | 否 | 数据盘是否开启 Burst(性能突发)。 | 可能值:
|
PrivatePoolOptions语法
"PrivatePoolOptions":
{
"MatchCriteria": String,
"Id": String
}
PrivatePoolOptions属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
MatchCriteria | String | 否 | 是 | 实例启动的私有池容量选项。 | 弹性保障服务或容量预定服务在生效后会生成私有池容量,供实例启动时选择。取值范围:
|
Id | String | 否 | 是 | 私有池ID。 | 即弹性保障服务ID或容量预定服务ID。 |
InstanceTypeOverrides语法
"InstanceTypeOverrides": [
{
"InstanceType": String,
"WeightedCapacity": Integer
}
]
InstanceTypeOverrides属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
InstanceType | String | 否 | 是 | 指定实例规格。 | 当您需要伸缩组按照实例规格容量进行伸缩时,请同时指定本参数和 WeightedCapacity。 |
WeightedCapacity | Integer | 否 | 是 | 指定实例规格的权重。 | 由于每个实例规格的vCPU 个数、内存大小等性能指标会有差异,您可以根据自身需求,给不同的实例规格配置不同的权重。 例如:
为满足期望容量,伸缩组将为用户扩容2台ecs.c5.xlarge实例。 |
InstancePatternInfos语法
"InstancePatternInfos": [
{
"BurstablePerformance": String,
"Architectures": List,
"InstanceFamilyLevel": String,
"Memory": Number,
"MaxPrice": Number,
"ExcludedInstanceTypes": List,
"Cores": Integer
}
]
InstancePatternInfos属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
BurstablePerformance | String | 否 | 否 | 是否为性能突发实例规格。 | 取值范围:
默认值:Include。 |
Architectures | List | 否 | 是 | 实例规格所属的架构类型。 | 取值范围:
默认值:包含所有架构类型。 |
InstanceFamilyLevel | String | 否 | 是 | 实例规格族级别。 | 用于筛选符合要求的实例规格范围,当 |
Memory | Number | 否 | 是 | 智能配置模式下,实例规格的内存大小。 | 单位为GiB,用于筛选符合要求的实例规格范围。 |
MaxPrice | Number | 否 | 是 | 智能配置模式下,按量付费实例或者抢占式实例可接受的每小时最高价格。 | 无。 |
ExcludedInstanceTypes | List | 否 | 是 | 需要排除的实例规格。 | 通过使用通配符(*)可以排除单个规格或者整个规格族。例如:
|
Cores | Integer | 否 | 是 | 智能配置模式下,实例规格的vCPU内核数目。 | 用于筛选符合要求的实例规格范围。更多信息,请参见实例规格族。 请注意以下信息:
|
TagList语法
"TagList": [
{
"Key": String,
"Value": String
}
]
TagList属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 是 | 否 | 标签键。 | 长度为1~64个字符,不能以 |
Value | String | 否 | 否 | 标签值。 | 长度为0~128个字符,不能以 |
返回值
Fn::GetAtt
ScalingConfigurationId:伸缩配置的ID。由系统生成,全局唯一。
ScalingGroupId:伸缩配置所属的伸缩组ID。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Description: Test ESS ScalingConfiguration
Parameters:
AutoScalingGroupId:
Type: String
AssociationProperty: ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId
SecurityGroupId:
Type: String
AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
Label:
zh-cn: 安全组ID
en: Security Group ID
ImageId:
Type: String
AssociationProperty: ALIYUN::ECS::Image::ImageId
AssociationPropertyMetadata:
SupportedImageOwnerAlias:
- system
- self
- others
Resources:
ScalingConfiguration:
Type: ALIYUN::ESS::ScalingConfiguration
Properties:
InstanceType: ecs.c5.large
ImageId:
Ref: ImageId
SystemDiskCategory: cloud_essd
SystemDiskSize: 40
ScalingConfigurationName: mytest
ScalingGroupId:
Ref: AutoScalingGroupId
SecurityGroupId:
Ref: SecurityGroupId
Outputs: {}
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Test ESS ScalingConfiguration",
"Parameters": {
"AutoScalingGroupId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId"
},
"SecurityGroupId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
"Label": {
"zh-cn": "安全组ID",
"en": "Security Group ID"
}
},
"ImageId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Image::ImageId",
"AssociationPropertyMetadata": {
"SupportedImageOwnerAlias": ["system", "self", "others"]
}
}
},
"Resources": {
"ScalingConfiguration": {
"Type": "ALIYUN::ESS::ScalingConfiguration",
"Properties": {
"InstanceType": "ecs.c5.large",
"ImageId": {
"Ref": "ImageId"
},
"SystemDiskCategory": "cloud_essd",
"SystemDiskSize": 40,
"ScalingConfigurationName": "mytest",
"ScalingGroupId": {
"Ref": "AutoScalingGroupId"
},
"SecurityGroupId": {
"Ref": "SecurityGroupId"
}
}
}
},
"Outputs": {
}
}
当伸缩组中仅定义了一个伸缩组配置,且伸缩组配置中包含依赖的其他资源,您需要在定义资源模板时为伸缩组设置DependsOn属性,对伸缩组配置依赖的其他资源设置资源依赖关联。
伸缩组ScalingGroup设置DependsOn依赖关系到安全组SecurityGroup,因为伸缩组配置ScalingConfiguration依赖安全组SecurityGroup资源。
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
Type: String
AssociationPropertyMetadata:
VpcId: VpcId
Resources:
ScalingGroupEnable:
Type: ALIYUN::ESS::ScalingGroupEnable
Properties:
ScalingConfigurationId:
Ref: ScalingConfiguration
ScalingGroupId:
Ref: ScalingGroup
ScalingRuleArisExecuteVersion: 0
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: VpcId
SecurityGroupIngress:
- PortRange: '-1/-1'
Priority: 1
SourceCidrIp: 0.0.X.X/0
IpProtocol: all
NicType: internet
SecurityGroupEgress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.X.X/0
NicType: internet
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.X.X/0
NicType: intranet
ScalingConfiguration:
Type: ALIYUN::ESS::ScalingConfiguration
DependsOn: ScalingGroup
Properties:
InstanceType: ecs.g6e.large
ImageId: centos_7_04_64_20G_alibase_201701015.vhd
SystemDiskCategory: cloud_essd
SystemDiskSize: 100
ScalingConfigurationName:
Ref: ALIYUN::StackName
ScalingGroupId:
Ref: ScalingGroup
SecurityGroupId:
Ref: SecurityGroup
ScalingGroup:
Type: ALIYUN::ESS::ScalingGroup
DependsOn: SecurityGroup
Properties:
MaxSize: 3
MinSize: 0
DefaultCooldown: 15
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
Outputs: {}