ALIYUN::ECS::LaunchTemplate类型用于创建ECS实例启动模板。

语法

{
  "Type": "ALIYUN::ECS::LaunchTemplate",
  "Properties": {
    "LaunchTemplateName": String,
    "VersionDescription": String,
    "ImageId": String,
    "InstanceType": String,
    "SecurityGroupId": String,
    "NetworkType": String,
    "VSwitchId": String,
    "InstanceName": String,
    "Description": String,
    "InternetMaxBandwidthOut": Integer,
    "HostName": String,
    "ZoneId": String,
    "SystemDiskCategory": String,
    "SystemDiskSize": Number,
    "SystemDiskDiskName": String,
    "SystemDiskDescription": String,
    "IoOptimized": String,
    "InternetChargeType": String,
    "UserData": String,
    "KeyPairName": String,
    "RamRoleName": String,
    "AutoReleaseTime": String,
    "SpotStrategy": String,
    "SpotPriceLimit": String,
    "SecurityEnhancementStrategy": String,
    "DiskMappings": List,
    "NetworkInterfaces": List,
    "Tags": List,
    "TemplateTags": List,
    "TemplateResourceGroupId": String,
    "SecurityGroupIds": List,
    "ResourceGroupId": String,
    "SpotDuration": Integer,
    "ImageOwnerAlias": String,
    "Period": Integer,
    "Ipv6AddressCount": Integer,
    "PrivateIpAddress": String,
    "PasswordInherit": Boolean,
    "SystemDiskDeleteWithInstance": Boolean,
    "DeploymentSetId": String,
    "InstanceChargeType": String,
    "SystemDiskPerformanceLevel": String
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
LaunchTemplateName String 实例启动模板名称。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。可包含英文字母、汉字、数字、半角冒号(:)、下划线(_)和短划线(-)。
VersionDescription String 实例启动模板版本描述。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。
ImageId String 镜像ID。
InstanceType String 实例类型。
SecurityGroupId String 安全组ID。
NetworkType String 实例网络类型。 取值:
  • classic:经典网络。
  • vpc:专有网络。
VSwitchId String 交换机ID。 当NetworkType取值为vpc时该参数有效。
InstanceName String 实例名称。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。
Description String 实例描述。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。
InternetMaxBandwidthOut Integer 公网出网带宽最大值。 取值范围:0~100。

单位:Mbps。

HostName String 实例主机名。

英文句点(.)和短划线(-)不能作为首尾字符,也不能连续使用。

取值要求:
  • Windows实例:长度为2~15个字符。 不能全是数字。可包含英文字母、数字和短划线(-)。
  • 其他类型实例(Linux等):长度为2~64个字符。 可包含英文字母、数字和短划线(-)。
ZoneId String 实例所属的可用区ID。
SystemDiskCategory String 系统盘类型。 取值:
  • cloud:普通云盘。
  • cloud_efficiency:高效云盘。
  • cloud_ssd:SSD云盘。
  • ephemeral_ssd:本地SSD盘。
SystemDiskSize Number 系统盘大小。 取值范围:20~500。

单位:GB。

SystemDiskDiskName String 系统盘名称。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。可包含英文字母、汉字、数字、半角冒号(:)、下划线(_)和短划线(-)。
SystemDiskDescription String 系统盘描述。 长度为2~256个字符,不能以http://https://开头。
IoOptimized String 是否为I/O优化实例。 取值:
  • none:非I/O优化实例。
  • optimized:I/O优化实例。
InternetChargeType String 网络付费类型。 取值:
  • PayByBandwidth:按带宽计费。
  • PayByTraffic:按流量计费。
UserData String 实例自定义数据。 需要以Base64方式编码,原始数据不超过16KB。
KeyPairName String 密钥对名称。 仅Linux实例需要指定该参数,此时密码登录方式会被初始化为禁止。
RamRoleName String 实例RAM角色名称。
AutoReleaseTime String 实例自动释放时间。 按照ISO8601标准表示。需要使用UTC时间,格式为yyyy-MM-ddTHH:mm:ssZ
SpotStrategy String 后付费实例的抢占策略。

当InstanceChargeType参数取值为PostPaid时该参数生效。

取值:

  • NoSpot:正常按量付费实例。
  • SpotWithPriceLimit:设置上限价格的抢占式实例。
  • SpotAsPriceGo:系统自动出价,最高按量付费价格。
SpotPriceLimit String 设置实例的每小时最高价格。 支持最多3位小数。
SecurityEnhancementStrategy String 是否开启安全加固。 取值:
  • Active:开启。
  • Deactive:关闭。
DiskMappings List 数据盘列表。 最多支持16个数据盘。

更多信息,请参见DiskMappings属性

NetworkInterfaces List 弹性网卡列表。 最多支持8个弹性网卡。

更多信息,请参见NetworkInterfaces属性

Tags List 实例、安全组、磁盘和网卡的标签列表。 最多支持20个标签。

更多信息,请参见Tags属性

TemplateTags List 启动模板的标签列表。 最多支持20个标签。

更多信息,请参见TemplateTags属性

TemplateResourceGroupId String 启动模板所在的资源组ID。
SecurityGroupIds List 实例加入的一个或多个安全组。 取值与实例能够加入的安全组配额有关。
说明 不支持同时指定SecurityGroupId和SecurityGroupIds。
ResourceGroupId String 实例、块存储和弹性网卡所在的资源组ID。
SpotDuration Integer 抢占式实例的保留时长。 取值范围:0~6。

默认值:1。

单位:小时。

说明 如需设置取值为2~6,请提交工单。
ImageOwnerAlias String 镜像来源。 取值范围:
  • system:阿里云提供的公共镜像。
  • self:您创建的自定义镜像。
  • others:其他阿里云用户共享给您的镜像。
  • marketplace:镜像市场。
Period Integer 购买资源的时长。 InstanceChargeType取值为PrePaid时该参数有效,且必须指定。

取值:1~9、12、24、36、48、60。

单位:月。

Ipv6AddressCount Integer 为主网卡指定随机生成的IPv6地址数量。 取值范围:1~10。
PrivateIpAddress String 实例私网IP地址。 专有网络VPC类型ECS实例设置私网IP地址时,必须从交换机的空闲网段中选择。
PasswordInherit Boolean 是否使用镜像预设的密码。 取值:
  • true:使用。
  • false:不使用。
说明 PasswordInherit和Password必须且只能指定其中一个参数。
SystemDiskDeleteWithInstance Boolean 系统盘是否随实例释放。 取值:
  • true(默认):释放。
  • false:不释放。
DeploymentSetId String 部署集ID。
InstanceChargeType String 实例的计费方式。 取值:
  • PrePaid:预付费,包年包月。
  • PostPaid:后付费,按实际使用量付费。
SystemDiskPerformanceLevel String 创建ESSD云盘作为系统盘使用时,云盘的性能等级。 取值:
  • PL0(默认):单盘最高随机读写IOPS 1万。
  • PL1:单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。

DiskMappings语法

"DiskMappings": [
  {
    "Category": String,
    "DiskName": String,
    "Description": String,
    "SnapshotId": String,
    "Size": String,
    "Encrypted": String,
    "DeleteWithInstance": String,
    "PerformanceLevel": String
  }
]

DiskMappings属性

属性名称 类型 必须 允许更新 描述 约束
Category String 数据盘类型。 取值:
  • cloud:普通云盘。
  • cloud_efficiency:高效云盘。
  • cloud_ssd:SSD云盘。
  • ephemeral_ssd:本地SSD盘。
DiskName String 数据盘名称。 长度为2~128个字符。必须以英文字母或汉字开头,不能以http://https://开头。可包含英文字母、汉字、数字、半角冒号(:)、下划线(_)和短划线(-)。
Description String 数据盘描述。 长度为2~256个字符,不能以http://https://开头。
SnapshotId String 创建数据盘使用的快照。
Size String 系统盘大小。

取值范围:

  • cloud:5~2000。
  • cloud_efficiency:20~32768。
  • cloud_ssd:20~32768。
  • ephemeral_ssd:5~800。

单位:GB。

Encrypted Boolean 是否加密数据盘。 取值:
  • true:加密。
  • false:不加密。
DeleteWithInstance Boolean 数据盘是否随实例释放而释放。 取值:
  • true:释放。
  • false:不释放。
PerformanceLevel String 创建ESSD云盘作为数据盘使用时,云盘的性能等级。 取值:
  • PL0(默认):单盘最高随机读写IOPS 1万。
  • PL1:单盘最高随机读写IOPS 5万。
  • PL2:单盘最高随机读写IOPS 10万。
  • PL3:单盘最高随机读写IOPS 100万。

NetworkInterfaces语法

"NetworkInterfaces": [
  {
    "PrimaryIpAddress": String,
    "VSwitchId": String,
    "SecurityGroupId": String,
    "NetworkInterfaceName": String,
    "Description": String
  }
]

NetworkInterfaces属性

属性名称 类型 必须 允许更新 描述 约束
PrimaryIpAddress String 弹性网卡的主私有IP地址。
VSwitchId String 弹性网卡所属的交换机ID。
SecurityGroupId String 弹性网卡所属的安全组ID。
NetworkInterfaceName String 弹性网卡名称。
Description String 弹性网卡描述信息。 长度为2~256个字符,不能以http://https://开头。

Tags语法

"Tags": [
  {
    "Value": String,
    "Key": String
  }
]

Tags属性

属性名称 类型 必须 允许更新 描述 约束
Key String 标签键。 长度为1~128个字符,不能以aliyunacs:开头,不能包含http://或者https://
Value String 标签值。 长度为0~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

TemplateTags语法

"TemplateTags": [
  {
    "Value": String,
    "Key": String
  }
]

TemplateTags属性

属性名称 类型 必须 允许更新 描述 约束
Key String 标签键。 长度为1~128个字符,不能以aliyunacs:开头,不能包含http://或者https://
Value String 标签值。 长度为0~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

返回值

Fn::GetAtt

  • LaunchTemplateId:实例启动模板ID。
  • LaunchTemplateName:实例启动模板名称。
  • DefaultVersionNumber:实例启动模板默认版本号。
  • LatestVersionNumber:实例启动模板最新版本号。

示例

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Test ECS LaunchTemplate、AutoProvisioningGroup",
  "Parameters": {
    "VSwitchZoneId": {
      "AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
      "Type": "String"
    },
    "VpcId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
    },
    "VSwitchId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "AssociationPropertyMetadata": {
        "ZoneId": "VSwitchZoneId",
        "VpcId": "VpcId"
      }
    },
    "SecurityGroupId": {
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
      "Type": "String",
      "AssociationPropertyMetadata": {
        "VpcId": "VpcId"
      }
    },
    "LaunchTemplateName": {
      "Type": "String",
      "Default": "mytest"
    },
    "ImageId": {
      "Type": "String",
      "Default": "centos_7"
    },
    "InstanceType": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "Default": "ecs.c5.large"
    },
    "SystemDiskCategory": {
      "Type": "String",
      "Description": "Category of system disk. Default is cloud_efficiency. support cloud|cloud_efficiency|cloud_ssd|cloud_essd|ephemeral_ssd.Old instances will not be changed.",
      "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory",
      "AssociationPropertyMetadata": {
        "ZoneId": "VSwitchZoneId",
        "InstanceType": "InstanceType"
      },
      "Default": "cloud_essd"
    },
    "PayAsYouGoTargetCapacity": {
      "Type": "String",
      "Description": "The target capacity of pay-as-you-go instances in the auto provisioning group.",
      "Default": "1"
    },
    "TotalTargetCapacity": {
      "Type": "String",
      "Description": "The total target capacity of the auto provisioning group. The target capacity consists\nof the following three parts:\nThe target capacity of pay-as-you-go instances specified by the PayAsYouGoTargetCapacity parameter\nThe target capacity of preemptible instances specified by the SpotTargetCapacity parameter\nThe supplemental capacity besides PayAsYouGoTargetCapacity and SpotTargetCapacity",
      "Default": "2"
    },
    "SpotTargetCapacity": {
      "Type": "String",
      "Description": "The target capacity of preemptible instances in the auto provisioning group.",
      "Default": "1"
    },
    "AutoProvisioningGroupName": {
      "Type": "String",
      "Description": "The name of the auto provisioning group to be created. It must be 2 to 128 characters\nin length. It must start with a letter but cannot start with http:// or https://.\nIt can contain letters, digits, colons (:), underscores (_), and hyphens (-).",
      "Default": "mytest"
    },
    "SpotAllocationStrategy": {
      "Type": "String",
      "Description": "The scale-out policy for preemptible instances. Valid values:\nlowest-price: The cost optimization policy the auto provisioning group follows to select instance\ntypes of the lowest cost to create instances.\ndiversified: The distribution balancing policy the auto provisioning group follows to evenly create\ninstances across zones specified in multiple extended template configurations.\nDefault value: lowest-price",
      "AllowedValues": [
        "diversified",
        "lowest-price"
      ],
      "Default": "lowest-price"
    },
    "SpotInstancePoolsToUseCount": {
      "Type": "Number",
      "Description": "This parameter takes effect when the SpotAllocationStrategy parameter is set to lowest-price. The auto provisioning group selects instance types of the lowest cost to create\ninstances.",
      "Default": null
    },
    "PayAsYouGoAllocationStrategy": {
      "Type": "String",
      "Description": "The scale-out policy for pay-as-you-go instances. Valid values:\nlowest-price: The cost optimization policy the auto provisioning group follows to select instance\ntypes of the lowest cost to create instances.\nprioritized: The priority-based policy the auto provisioning group follows to create instances.\nThe priority of an instance type is specified by the LaunchTemplateConfig.N.Priority parameter.\nDefault value: lowest-price",
      "AllowedValues": [
        "lowest-price",
        "prioritized"
      ],
      "Default": "lowest-price"
    },
    "MaxSpotPrice": {
      "Type": "Number",
      "Description": "The global maximum price for preemptible instances in the auto provisioning group.\nIf both the MaxSpotPrice and LaunchTemplateConfig.N.MaxPrice parameters are specified, the maximum price is the lower value of the two.",
      "Default": 5
    },
    "DefaultTargetCapacityType": {
      "Type": "String",
      "Description": "The type of supplemental instances. When the total value of PayAsYouGoTargetCapacity and SpotTargetCapacity is smaller than the value of TotalTargetCapacity, the auto provisioning group will create instances of the specified type to meet\nthe capacity requirements. Valid values:\nPayAsYouGo: Pay-as-you-go instances.\nSpot: Preemptible instances.\nDefault value: Spot",
      "AllowedValues": [
        "PayAsYouGo",
        "Spot"
      ],
      "Default": "PayAsYouGo"
    },
    "AutoProvisioningGroupType": {
      "Type": "String",
      "Description": "The type of the auto provisioning group. Valid values:\nrequest: One-time delivery. After the auto provisioning group is started, it only attempts\nto create an instance cluster once. If the cluster fails to be created, the group\ndoes not try again.\nmaintain: The continuous delivery and maintain capacity type. After the auto provisioning group\nis started, it continuously attempts to create and maintain the instance cluster.\nThe auto provisioning group compares the real-time and target capacity of the cluster.\nIf the cluster does not meet the target capacity, the group will create instances\nuntil the cluster meets the target capacity.\nDefault value: maintain",
      "AllowedValues": [
        "maintain",
        "request"
      ],
      "Default": "maintain"
    },
    "ExcessCapacityTerminationPolicy": {
      "Type": "String",
      "Description": "The shutdown policy for excess preemptible instances followed when the capacity of\nthe auto provisioning group exceeds the target capacity. Valid values:\nno-termination: Excess preemptible instances are not shut down.\ntermination: Excess preemptible instances are to be shut down. The action to be performed on these\nshutdown instances is specified by the SpotInstanceInterruptionBehavior parameter.\nDefault value: no-termination",
      "AllowedValues": [
        "no-termination",
        "termination"
      ],
      "Default": "termination"
    },
    "TerminateInstances": {
      "Type": "Boolean",
      "Description": "Specifies whether to release instances of the auto provisioning group. Valid values:\ntrue\nfalse\nDefault: false",
      "AllowedValues": [
        true,
        false
      ],
      "Default": true
    },
    "TerminateInstancesWithExpiration": {
      "Type": "Boolean",
      "Description": "The shutdown policy for preemptible instances when the auto provisioning group expires.\nValid values:\ntrue: shuts down preemptible instances. The action to be performed on these shutdown instances\nis specified by the SpotInstanceInterruptionBehavior parameter.\nfalse: does not shut down preemptible instances.\nDefault: false",
      "AllowedValues": [
        true,
        false
      ],
      "Default": true
    }
  },
  "Resources": {
    "LaunchTemplate": {
      "Type": "ALIYUN::ECS::LaunchTemplate",
      "Properties": {
        "LaunchTemplateName": {
          "Ref": "LaunchTemplateName"
        },
        "VersionDescription": "Test create LaunchTemplate",
        "ImageId": {
          "Ref": "ImageId"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroupId"
        },
        "VSwitchId": {
          "Ref": "VSwitchId"
        }
      }
    },
    "AutoProvisioningGroup": {
      "DependsOn": "LaunchTemplate",
      "Type": "ALIYUN::ECS::AutoProvisioningGroup",
      "Properties": {
        "LaunchTemplateId": {
          "Fn::GetAtt": [
            "LaunchTemplate",
            "LaunchTemplateId"
          ]
        },
        "LaunchTemplateVersion": "1",
        "TotalTargetCapacity": {
          "Ref": "TotalTargetCapacity"
        },
        "PayAsYouGoTargetCapacity": {
          "Ref": "PayAsYouGoTargetCapacity"
        },
        "SpotTargetCapacity": {
          "Ref": "SpotTargetCapacity"
        },
        "AutoProvisioningGroupName": {
          "Ref": "AutoProvisioningGroupName"
        },
        "SpotAllocationStrategy": {
          "Ref": "SpotAllocationStrategy"
        },
        "SpotInstancePoolsToUseCount": {
          "Ref": "SpotInstancePoolsToUseCount"
        },
        "LaunchTemplateConfig": [
          {
            "Priority": 1,
            "WeightedCapacity": 1,
            "VSwitchId": {
              "Ref": "VSwitchId"
            },
            "MaxPrice": 1
          }
        ],
        "Description": "Test AutoProvisioningGroup",
        "PayAsYouGoAllocationStrategy": {
          "Ref": "PayAsYouGoAllocationStrategy"
        },
        "MaxSpotPrice": {
          "Ref": "MaxSpotPrice"
        },
        "DefaultTargetCapacityType": {
          "Ref": "DefaultTargetCapacityType"
        },
        "AutoProvisioningGroupType": {
          "Ref": "AutoProvisioningGroupType"
        },
        "ExcessCapacityTerminationPolicy": {
          "Ref": "ExcessCapacityTerminationPolicy"
        },
        "TerminateInstances": {
          "Ref": "TerminateInstances"
        },
        "TerminateInstancesWithExpiration": {
          "Ref": "TerminateInstancesWithExpiration"
        }
      }
    }
  },
  "Outputs": {
    "AutoProvisioningGroupId": {
      "Description": "The ID of the auto provisioning group.",
      "Value": {
        "Fn::GetAtt": [
          "AutoProvisioningGroup",
          "AutoProvisioningGroupId"
        ]
      }
    },
    "LaunchTemplateId": {
      "Value": {
        "Fn::GetAtt": [
          "LaunchTemplate",
          "LaunchTemplateId"
        ]
      }
    },
    "LaunchTemplateName": {
      "Value": {
        "Fn::GetAtt": [
          "LaunchTemplate",
          "LaunchTemplateName"
        ]
      }
    },
    "DefaultVersionNumber": {
      "Value": {
        "Fn::GetAtt": [
          "LaunchTemplate",
          "DefaultVersionNumber"
        ]
      }
    },
    "LatestVersionNumber": {
      "Value": {
        "Fn::GetAtt": [
          "LaunchTemplate",
          "LatestVersionNumber"
        ]
      }
    }
  }
}

更多示例,请参见创建ECS实例启动模板和创建弹性供应组的组合示例:JSON示例YAML示例