ALIYUN::ECS::InstanceGroup类型用于创建一组相同配置的ECS实例。
语法
{
"Type": "ALIYUN::ECS::InstanceGroup",
"Properties": {
"DedicatedHostId": String,
"ResourceGroupId": String,
"SystemDiskDescription": String,
"InstanceChargeType": String,
"RamRoleName": String,
"SystemDiskPerformanceLevel": String,
"ImageId": String,
"SystemDiskDiskName": String,
"Tags": List,
"HostName": String,
"LaunchTemplateName": String,
"VSwitchId": String,
"Period": Number,
"ZoneIds": List,
"LaunchTemplateId": String,
"DeletionProtection": "Boolean",
"SecurityGroupIds": List,
"SecurityEnhancementStrategy": String,
"InternetChargeType": String,
"InstanceName": String,
"DeploymentSetId": String,
"InternetMaxBandwidthOut": Integer,
"VpcId": String,
"LaunchTemplateVersion": String,
"PeriodUnit": String,
"AutoReleaseTime": String,
"PrivateIpAddress": String,
"Description": String,
"DiskMappings": List,
"SystemDiskSize": Number,
"UserData": String,
"AutoRenew": String,
"Ipv6Addresses": List,
"MaxAmount": Integer,
"SystemDiskAutoSnapshotPolicyId": String,
"Ipv6AddressCount": Integer,
"NetworkType": String,
"SpotPriceLimit": String,
"InstanceType": String,
"AllocatePublicIP": "Boolean",
"SpotStrategy": String,
"Password": String,
"PasswordInherit": Boolean,
"AutoRenewPeriod": Number,
"KeyPairName": String,
"IoOptimized": String,
"ZoneId": String,
"HpcClusterId": String,
"SecurityGroupId": String,
"SystemDiskCategory": String,
"EniMappings": List,
"SystemDiskProvisionedIops": Integer,
"SystemDiskBurstingEnabled": Boolean,
"SpotInterruptionBehavior": String,
"SpotDuration": Integer,
"UpdatePolicy": String
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
---|---|---|---|---|---|
ResourceGroupId | String | 否 | 是 | 实例所在的资源组ID。 | 无 |
SpotInterruptionBehavior | String | 否 | 否 | 抢占实例中断模式。 | 目前仅支持Terminate(默认)直接释放实例。 |
SpotDuration | Integer | 否 | 否 | 抢占式实例的保留时长。 | 取值范围:0~6。 单位:小时。 取值:
|
HpcClusterId | String | 否 | 是 | 实例所属的HPC集群ID。 | 更新该参数仅对新增ECS实例生效。 |
MaxAmount | Integer | 是 | 是 | 一次性创建ECS实例的个数。 | 取值范围:1~1000。
说明 当更新资源栈时,如果MaxAmount取值增加(或减少),将新增(或减少)对应数量的ECS实例。例如:MaxAmount取值从2增加为5,将新增3个ECS实例。
|
Description | String | 否 | 是 | 描述信息。 | 最长256个字符。
说明 更新该参数仅对新增ECS实例生效。
|
InstanceType | String | 是 | 是 | ECS实例规格。 | 更多信息,请参见实例规格族。
说明 当UpdatePolicy取值为ForAllInstance时,可以更新本参数。
|
ImageId | String | 是 | 是 | 用于启动ECS实例的镜像ID。包括公共镜像、自定义镜像和云市场镜像。 | 支持通过模糊的方式指定公共镜像ID,而不需要指定一个完整的公共镜像ID。例如:
|
SecurityGroupId | String | 否 | 否 | 新创建实例所属的安全组ID,同一个安全组内的实例之间可以互相访问。 | 不支持同时指定SecurityGroupId和SecurityGroupIds。 |
SecurityGroupIds | List | 否 | 否 | 新创建实例所属的安全组ID列表。 | 不支持同时指定SecurityGroupId和SecurityGroupIds。 更多信息,请参见安全组。 |
SecurityEnhancementStrategy | String | 否 | 否 | 是否启用安全加固。 | 取值:
|
InstanceName | String | 否 | 否 | 实例名称。 | 最长为128个字符。可包含英文字母、汉字、数字、下划线(_)、半角句号(.)和短划线(-)。 通过 |
Password | String | 否 | 是 | ECS实例登录密码。 | 长度为8~30个字符。必须同时包含大写英文字母、小写英文字母、数字和特殊字符其中三项,支持的特殊字符为::( ) ` ~ ! @ # $ % ^ & * - + = | { } [ ] : ; ‘ < > , . ? / 。如果指定Password参数,请使用HTTPS协议调用API,以免发生密码泄露。 |
PasswordInherit | Boolean | 否 | 否 | 是否使用镜像预设的密码。 | 取值:
说明 使用该参数时,Password参数必须为空,同时您需要确保使用的镜像已经设置了密码。
|
ZoneIds | List | 否 | 否 | 可用区列表。 | 无 |
HostName | String | 否 | 否 | 主机名称。 | 长度最少2个字符。半角句号(.)和短划线(-)不能作为hostname的首尾字符,且不能连续使用。 更多信息,请参见请求参数。 |
AllocatePublicIP | Boolean | 否 | 否 | 是否创建公网IP。 | 如果InternetMaxBandwidthOut为0,则不会创建公网IP。 取值:
|
AutoReleaseTime | String | 否 | 否 | ECS实例自动释放的时间。 | 时间格式必须遵守ISO8601规范,例如"yyyy-MM-ddTHH:mm:ssZ" 。释放时间不能超过三年。 |
PrivateIpAddress | String | 否 | 否 | 实例私网IP地址。 | 专有网络类型ECS实例设置私网IP地址时,必须从交换机的空闲网段中选择。
说明 如果设置PrivateIpAddress,MaxAmount取值只能为1。
|
DiskMappings | List | 否 | 是 | 为ECS实例创建的数据盘。 | 最多创建16块数据盘。 修改该参数,不会影响已创建的实例,新创建的实例会使用修改后的值。 更多信息,请参见DiskMappings属性。
说明 更新该参数仅对新增ECS实例生效。
|
InternetChargeType | String | 否 | 是 | 公网访问带宽计费方式。 | 取值:
说明 当UpdatePolicy取值为ForAllInstance时,可以更新本参数。
|
InternetMaxBandwidthOut | Integer | 否 | 是 | 公网出带宽最大值。 | 取值范围:0~100。 单位:Mbps。 默认值:0。
说明 当UpdatePolicy取值为ForAllInstance时,可以更新本参数。
|
SystemDiskProvisionedIops | Integer | 否 | 是 | 系统盘预配的IOPS。 | 无 |
SystemDiskBurstingEnabled | Boolean | 否 | 是 | 系统盘是否启用突发。 | 取值:
|
IoOptimized | String | 否 | 否 | 是否创建I/O优化实例。 | 取值:
|
SystemDiskCategory | String | 否 | 是 | 系统盘类型。 | 取值:
说明 更新该参数仅对新增ECS实例生效。
|
SystemDiskDescription | String | 否 | 是 | 系统盘描述信息。 | 更新该参数仅对新增ECS实例生效。 |
SystemDiskDiskName | String | 否 | 是 | 系统盘名称。 | 更新该参数仅对新增ECS实例生效。 |
SystemDiskSize | Number | 否 | 是 | 系统盘大小。 | 取值范围:40~500。 单位:GB。 如果使用自定义镜像创建系统盘,需要保证系统盘大于自定义镜像大小。
说明 当UpdatePolicy取值为ForAllInstance时,可以更新本参数。
|
Tags | List | 否 | 是 | 用户自定义标签。 | 最多支持20个标签,格式:[{"Key":"tagKey","Value":"tagValue"},{"Key":"tagKey2","Value":"tagValue2"}] 。 更多信息,请参见Tags属性。 |
UserData | String | 否 | 是 | 创建ECS实例时传递的用户数据。 | 内容需要限制在16KB以内。无需用Base64转码,特殊字符需要使用转义符。 |
ZoneId | String | 否 | 否 | 可用区ID。 | 无 |
VpcId | String | 否 | 否 | 专有网络ID。 | 无 |
VSwitchId | String | 否 | 否 | 交换机ID。 | 无 |
KeyPairName | String | 否 | 是 | ECS实例绑定的密钥对名称。 | 如果是Windows ECS实例,则忽略该参数。默认为空。 如果已填写KeyPairName,Password的内容仍会被设置到实例中,但是Linux系统中的密码登录方式会被禁止。
说明 更新该参数仅对新增ECS实例生效。
|
RamRoleName | String | 否 | 是 | 实例RAM角色名称。 | 您可以调用ListRoles查询实例RAM角色名称,更多信息,请参见CreateRole和ListRoles。 |
SpotPriceLimit | String | 否 | 否 | 实例的每小时最高价格。 | 最大支持3位小数。当SpotStrategy为SpotWithPriceLimit时,该参数生效。 |
SpotStrategy | String | 否 | 否 | 后付费实例的竞价策略。 | 当InstanceChargeType为PostPaid时,该参数生效。 取值:
|
DedicatedHostId | String | 否 | 否 | 专有宿主机ID。 | 无 |
LaunchTemplateName | String | 否 | 是 | 启动模板名称。 | 无 |
PeriodUnit | String | 否 | 是 | 购买资源的时长周期。 | 取值:
说明 更新该参数仅对新增ECS实例生效。
|
AutoRenewPeriod | Number | 否 | 是 | 每次自动续费的时长。 | 当AutoRenew为True时,该参数为必填参数。 取值:
说明 更新该参数仅对新增ECS实例生效。
|
AutoRenew | String | 否 | 是 | 是否自动续费。 | 当InstanceChargeType为PrePaid时,该参数生效。 取值:
说明 更新该参数仅对新增ECS实例生效。
|
InstanceChargeType | String | 否 | 是 | 实例的付费方式。 | 取值:
说明 更新该参数仅对新增ECS实例生效。
|
EniMappings | List | 否 | 是 | 附加到实例的弹性网卡。 | 附加到实例的弹性网卡个数最多为1个。 更多信息,请参见EniMappings属性。 |
LaunchTemplateId | String | 否 | 是 | 启动模板ID。 | 无 |
LaunchTemplateVersion | String | 否 | 是 | 启动模板的版本。 | 如果没有指定版本,则使用默认版本。 |
Period | Number | 否 | 是 | 购买资源的时长。 | 当InstanceChargeType为PrePaid时,该参数生效且为必选参数。 一旦指定了DedicatedHostId,则取值不能超过专有宿主机的订阅时长。
说明 更新该参数仅对新增ECS实例生效。
|
NetworkType | String | 否 | 否 | ECS实例网络类型。 | 取值:
|
DeletionProtection | Boolean | 否 | 是 | 实例释放保护属性,指定是否支持通过控制台或DeleteInstance接口释放实例。 | 取值:
|
DeploymentSetId | String | 否 | 是 | 部署集ID。 | 更新该参数仅对新增ECS实例生效。 |
Ipv6AddressCount | Integer | 否 | 是 | 为弹性网卡指定随机生成的IPv6地址数量。 | 不能同时指定Ipv6Addresses和Ipv6AddressCount。
说明 更新该参数仅对新增ECS实例生效。
|
Ipv6Addresses | List | 否 | 是 | 为弹性网卡指定IPv6地址。 | 最多指定一个IPv6地址。更改不影响现有实例。不能同时指定Ipv6Addresses和Ipv6AddressCount。
说明 更新该参数仅对新增ECS实例生效。
|
SystemDiskAutoSnapshotPolicyId | String | 否 | 是 | 系统盘自动快照策略ID。 | 无 |
SystemDiskPerformanceLevel | String | 否 | 否 | 创建ESSD云盘作为系统盘使用时,设置云盘的性能等级。 | 取值:
|
UpdatePolicy | String | 否 | 是 | 指定更新时的策略。 | 取值:
|
DiskMappings语法
"DiskMappings": [
{
"Category": String,
"DiskName": String,
"Description": String,
"Device": String,
"SnapshotId": String,
"Size": String,
"Encrypted": String,
"KMSKeyId": String,
"PerformanceLevel": String,
"AutoSnapshotPolicyId": String,
"ProvisionedIops": Integer,
"BurstingEnabled": Boolean
}
]
DiskMappings属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
---|---|---|---|---|---|
Size | String | 是 | 否 | 数据盘大小。 | 单位:GB。 |
Category | String | 否 | 否 | 数据盘的类型。 | 取值:
对于非I/O优化实例,默认值为cloud。 |
DiskName | String | 否 | 否 | 数据盘的名称。 | 长度为2~128个字符。必须以英文字母或汉字开头,不能以http:// 或https:// 开头。可包含英文字母、汉字、数字、下划线(_)、半角冒号(:)和短划线(-)。 |
Description | String | 否 | 否 | 数据盘的描述。 | 长度为2~256个字符。不能以http:// 或https:// 开头。 |
Device | String | 否 | 否 | 挂载点。 |
说明 该参数即将停止使用,为提高兼容性,请尽量使用其他参数。
|
SnapshotId | String | 否 | 否 | 快照ID。 | 无 |
Encrypted | String | 否 | 否 | 数据盘是否加密。 | 取值:
|
KMSKeyId | String | 否 | 否 | 数据盘对应的KMS密钥ID。 | 无 |
AutoSnapshotPolicyId | String | 否 | 否 | 自动快照策略ID。 | 无 |
PerformanceLevel | String | 否 | 否 | 创建ESSD云盘作为数据盘使用时,设置云盘的性能等级。 | 取值:
|
ProvisionedIops | Integer | 否 | 否 | 预配的IOPS。 | 无 |
BurstingEnabled | Boolean | 否 | 否 | 是否启用突发。 | 取值:
|
Tags语法
"Tags": [
{
"Value": String,
"Key": String
}
]
Tags属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
---|---|---|---|---|---|
Key | String | 是 | 否 | 标签键。 | 长度为1~128个字符,不能以aliyun 和acs: 开头,不能包含http:// 或https:// 。 |
Value | String | 否 | 否 | 标签值。 | 长度为0~128个字符,不能以aliyun 和acs: 开头,不能包含http:// 或https:// 。 |
EniMappings语法
"EniMappings": [
{
"SecurityGroupId": String,
"VSwitchId": String,
"Description": String,
"NetworkInterfaceName": String,
"PrimaryIpAddress": String
}
]
EniMappings属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
---|---|---|---|---|---|
SecurityGroupId | String | 是 | 是 | 安全组ID。 | 所属的安全组ID必须是同一个专有网络下的安全组。 |
VSwitchId | String | 是 | 否 | 交换机ID。 | 无 |
Description | String | 否 | 是 | 弹性网卡的描述信息。 | 长度为2~256个字符,不能以http:// 或https:// 开头。 |
NetworkInterfaceName | String | 否 | 是 | 弹性网卡名称。 | 长度为2~128个字符。必须以英文字母或汉字开头,不能以http:// 或https:// 开头。可包含英文字母、汉字、数字、半角冒号(:)、下划线(_)和短划线(-)。 |
PrimaryIpAddress | String | 否 | 否 | 弹性网卡的主私有IP地址。 | 指定的IP必须是在所属交换机的地址段内的空闲地址。 如果不指定IP,则默认随机分配该交换机中的空闲地址。 |
返回值
Fn::GetAtt
- InstanceIds:实例ID,访问实例的唯一标识。由系统生成,全局唯一。
- PrivateIps:VPC类型实例的私网IP列表。当NetworkType为
vpc
时,该参数生效。例如:一个带有格式的JSON Array:["172.16.XX.XX", "172.16.XX.XX", … "172.16.XX.XX"]
,最多100个IP,用半角逗号(,)隔开。 - InnerIps:Classic类型实例的私网IP列表。当NetworkType为
classic
时,该参数生效。例如:一个带有格式的JSON Array:["10.1.XX.XX", "10.1.XX.XX", … "10.1.XX.XX"]
,最多100个IP,用半角逗号(,)隔开。 - PublicIps:Classic类型实例的公网IP列表。当NetworkType为
classic
时,该参数生效。例如:一个带有格式的JSON Array:["42.1.XX.XX", "42.1.XX.XX", … "42.1.XX.XX"]
,最多100个IP,用半角逗号(,)隔开。 - HostNames:所有实例的主机名称列表。
- OrderId:实例的订单ID列表。
- ZoneIds:可用区ID。
- Ipv6AddressIds:已创建ECS实例的IPv6地址ID列表。
说明 返回类型是两层列表。如果实例没有任何IPv6地址,则列表中相应位置的元素为空。如果所有实例都没有任何IP地址,则将返回null。
- Ipv6Addresses:已创建ECS实例的IPv6地址列表。
说明 返回类型是两层列表。如果实例没有任何IPv6地址,则列表中相应位置的元素为空。如果所有实例都没有任何IP地址,则将返回null。
示例
创建两台ECS实例(OpsEcsInstance、ProdEcsInstance),并为ProdEcsInstance实例完成OpsEcsInstance免密登录操作。
如果您需要对ECS实例的Userdata脚本执行结果进行消息通知。更多信息,请参见ALIYUN::ROS::WaitConditionHandle和ALIYUN::ROS::WaitCondition。
JSON
格式{ "ROSTemplateFormatVersion": "2015-09-01", "Description": "Creates VPC ECS instance", "Parameters": { "VpcId": { "AssociationProperty": "ALIYUN::ECS::VPC::VPCId", "Type": "String", "Description": { "en": "Please search the ID starting with (vpc-xxx) from console-Virtual Private Cloud", "zh-cn": "现有专有网络的实例ID" }, "Label": { "en": "VPC ID", "zh-cn": "专有网络VPC实例ID" } }, "VSwitchZoneId": { "AssociationProperty": "ALIYUN::ECS::Instance:ZoneId", "Type": "String", "Description": { "zh-cn": "交换机可用区", "en": "VSwitch Availability Zone" }, "Label": { "zh-cn": "交换机可用区", "en": "VSwitch Availability Zone" } }, "VSwitchId": { "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId", "AssociationPropertyMetadata": { "VpcId": "${VpcId}", "ZoneId": "${VSwitchZoneId}" }, "Type": "String", "Description": { "en": "Instance ID of existing business network switches, console-Virtual Private Cloud-VSwitches under query", "zh-cn": "现有业务网络交换机的实例ID" }, "Label": { "en": "VSwitch ID", "zh-cn": "交换机实例ID" } }, "SecurityGroupId": { "Type": "String", "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId", "AssociationPropertyMetadata": { "VpcId": "${VpcId}" }, "Description": { "en": "Please search the business security group ID starting with(sg-xxx)from console-ECS-Network & Security", "zh-cn": "现有业务安全组的实例ID" }, "Label": { "en": "Business Security Group ID", "zh-cn": "业务安全组ID" } }, "InstanceType": { "Type": "String", "Description": { "zh-cn": "填写vSwitch可用区下可使用的规格。", "en": "Fill in the specifications that can be used under the VSwitch availability zone." }, "Label": { "zh-cn": "实例规格", "en": "Instance Type" }, "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType", "AssociationPropertyMetadata": { "ZoneId": "${VSwitchZoneId}" } }, "SystemDiskCategory": { "Type": "String", "Label": { "en": "System Disk Type", "zh-cn": "系统盘类型" }, "Description": { "en": "System Disk Type", "zh-cn": "系统盘类型" }, "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory", "AssociationPropertyMetadata": { "ZoneId": "${VSwitchZoneId}", "InstanceType": "${InstanceType}" } } }, "Resources": { "OpsEcsInstance": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "MaxAmount": 1, "HostName": "OpsEcsInstance", "UserData": { "Fn::Sub": [ "#!/bin/bash\nRootPassword=${RootPassword}\nProdIP=${ProdIP}\nSSHConfig() {\necho '[ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa &>/dev/null' >> /tmp/auto_ssh.sh\necho 'while read line;do' >> /tmp/auto_ssh.sh\necho ' ip=`echo $line | cut -d \" \" -f1`' >> /tmp/auto_ssh.sh\necho ' user_name=`echo $line | cut -d \" \" -f2`' >> /tmp/auto_ssh.sh\necho ' pass_word=`echo $line | cut -d \" \" -f3`' >> /tmp/auto_ssh.sh\necho 'expect <<EOF' >> /tmp/auto_ssh.sh\necho ' spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user_name@$ip' >> /tmp/auto_ssh.sh\necho ' expect {' >> /tmp/auto_ssh.sh\necho ' \"yes/no\" { send \"yes\\n\";exp_continue}' >> /tmp/auto_ssh.sh\necho ' \"password\" { send \"$pass_word\\n\"}' >> /tmp/auto_ssh.sh\necho ' }' >> /tmp/auto_ssh.sh\necho ' expect eof' >> /tmp/auto_ssh.sh\necho 'EOF' >> /tmp/auto_ssh.sh\necho 'done < /tmp/host_ip.txt' >> /tmp/auto_ssh.sh\n}\nSetHostsConfig() {\necho \"`ifconfig eth0 | awk '/inet /{print $2}'` root ${RootPassword}\" >> /tmp/host_ip.txt\necho \"${ProdIP} root ${RootPassword}\" >> /tmp/host_ip.txt\nsh /tmp/auto_ssh.sh\n}\nmain() {\nyum install -y expect\nSSHConfig\nSetHostsConfig\nrm -rf /tmp/host_ip.txt\n}\nmain\n", { "ProdIP": { "Fn::Select": [ "0", { "Fn::GetAtt": [ "ProdEcsInstance", "PrivateIps" ] } ] }, "RootPassword": "Admin@123!" } ] }, "VpcId": { "Ref": "VpcId" }, "SecurityGroupId": { "Ref": "SecurityGroupId" }, "VSwitchId": { "Ref": "VSwitchId" }, "ImageId": "centos_7", "AllocatePublicIP": false, "InstanceType": { "Ref": "InstanceType" }, "SystemDiskSize": 40, "SystemDiskCategory": { "Ref": "SystemDiskCategory" }, "Password": "Admin@123!" } }, "ProdEcsInstance": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "MaxAmount": 1, "HostName": "ProdEcsInstance", "SystemDiskCategory": { "Ref": "SystemDiskCategory" }, "VpcId": { "Ref": "VpcId" }, "SecurityGroupId": { "Ref": "SecurityGroupId" }, "SystemDiskSize": 40, "ImageId": "centos_7", "VSwitchId": { "Ref": "VSwitchId" }, "Password": "Admin@123!", "InstanceType": { "Ref": "InstanceType" }, "AllocatePublicIP": false } } }, "Outputs": { } }
更多示例,请参见创建一组相同配置的ECS实例、克隆一个ECS实例、新建云助手命令和为一台或多台ECS实例触发一条云助手命令的组合示例:JSON示例和YAML示例。