ALIYUN::ECS::InstanceClone is used to clone an Elastic Compute Service (ECS) instance.

Syntax

{
  "Type": "ALIYUN::ECS::InstanceClone",
  "Properties": {
    "DeletionProtection": Boolean,
    "DiskMappings": List,
    "LoadBalancerIdToAttach": String,
    "Description": String,
    "BackendServerWeight": Integer,
    "Tags": List,
    "SecurityGroupId": String,
    "RamRoleName": String,
    "ImageId": String,
    "ResourceGroupId": String,
    "SpotPriceLimit": String,
    "InstanceChargeType": String,
    "SourceInstanceId": String,
    "Period": Number,
    "SpotStrategy": String,
    "Password": String,
    "InstanceName": String,
    "ZoneId": String,
    "KeyPairName": String
  }
}

Properties

Property Type Required Editable Description Constraint
ResourceGroupId String No No The ID of the resource group to which the new ECS instance belongs. None.
SourceInstanceId String Yes No The ID of the source ECS instance. You can clone all data and settings of the source ECS instance, including the instance type, image, bandwidth metering method, bandwidth limit, and network type. If the source ECS instance belongs to multiple security groups, the new instance is added to the first security group.
BackendServerWeight Integer No No The weight that is assigned to the new ECS instance in the Server Load Balancer (SLB) instance. Valid values: 0 to 100.

Default value: 100.

LoadBalancerIdToAttach String No No The ID of the SLB instance to which you want to add the new ECS instance. None.
Description String No No The description of the new ECS instance. The description can be up to 256 characters in length.
ImageId String No Yes The ID of the image that is used to start the new ECS instance. You can use a public image, a custom image, or an Alibaba Cloud Marketplace image.

When you specify a public image ID, you can enter a partial image ID instead of the complete image ID. Examples:

  • If you specify ubuntu, the system matches the following complete image ID: ubuntu16_0402_64_20G_alibase_20170818.vhd.
  • If you specify ubuntu_14, the system matches the following complete image ID: ubuntu_14_0405_64_20G_alibase_20170824.vhd.
  • If you specify ubuntu*14*32, the system matches the following complete image ID: ubuntu_14_0405_32_40G_alibase_20170711.vhd.
  • If you specify ubuntu_16_0402_32, the system matches the following complete image ID: ubuntu_16_0402_32_40G_alibase_20170711.vhd.
SecurityGroupId String No No The ID of the security group to which the new ECS instance belongs. None.
InstanceName String No No The name of the new ECS instance. The name must be 2 to 128 characters in length, and can contain letters, digits, colons (:), underscores (_), and hyphens (-). The name must start with a letter but cannot start with http:// or https://.
Password String No No The password that is used to log on to the new ECS instance.

The password must be 8 to 30 characters in length.

The password must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters.

Special characters include ( ) ' ~ ! @ # $ % ^ & ∗ - + = | { } [ ] : ; ‘ < > , . ? /.

If you specify this property, you must call specific Resource Orchestration Service (ROS) API operations by using HTTPS to prevent the exposure of your password.

DiskMappings List No No The disks that you want to attach to the new ECS instance. You can attach up to 16 disks.

For more information, see DiskMappings properties.

Tags List No Yes The tags that you want to add to the new ECS instance. You can add up to 20 tags in the following format: [{"Key":"tagKey","Value":"tagValue"},{"Key":"tagKey2","Value":"tagValue2"}].

For more information, see Tags properties.

ZoneId String No No The ID of the zone. None.
InstanceChargeType String No No The billing method of the new ECS instance. Default value: PostPaid. Valid values:
  • PrePaid: subscription
    Note If you set this property to PrePaid, make sure that you have sufficient balance in your account. If you have insufficient balance in your account, the instance fails to be created.
  • PostPaid: pay-as-you-go
Period Number No No The billing cycle of the new ECS instance. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, and 36.

Unit: months.

This property is required if you set the InstanceChargeType property to PrePaid. This property is optional if you set the InstanceChargeType property to PostPaid.

KeyPairName String No Yes The name of the key pair that is used to connect to the new ECS instance.

Windows instances: By default, this property is empty.

Linux instances: The Password property takes effect even if you specify the KeyPairName property. However, logon by password is disabled, and the value of the KeyPairName property is used by default.

RamRoleName String No No The RAM role name for the new ECS instance. For more information, see CreateRole and ListRoles.
SpotPriceLimit String No No The maximum hourly price that you specify for the new ECS instance. The value of this property can contain up to three decimal places. This property takes effect when you set the SpotStrategy property to SpotWithPriceLimit.
SpotStrategy String No No The bidding policy for the pay-as-you-go instance. This property takes effect when you set the InstanceChargeType property to PostPaid. Default value: NoSpot. Valid values:
  • NoSpot: The instance is created as a regular pay-as-you-go instance.
  • SpotWithPriceLimit: The instance is created as a preemptible instance for which you specify the maximum hourly price.
  • SpotAsPriceGo: The instance is created as a preemptible instance whose price is based on the market price at the time of purchase. The market price cannot exceed the price of a pay-as-you-go instance.
DeletionProtection Boolean No No Specifies whether to enable deletion protection to allow you to release the new ECS instance by using the ECS console or by calling the DeleteInstance operation. Default value: false. Valid values:
  • true
  • false

DiskMappings syntax

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

DiskMappings properties

Property Type Required Editable Description Constraint
Size String Yes No The size of the data disk. Valid values: 20 to 500.

Unit: GB.

Category String No No The category of the data disk. Valid values:
  • cloud: basic disk
  • cloud_ssd: standard SSD
  • cloud_essd: enhanced SSD (ESSD)
  • cloud_efficiency: ultra disk
  • ephemeral_ssd: local SSD
For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.
DiskName String No No The name of the data disk. The name must be 2 to 128 characters in length, and can contain letters, digits, underscores (_), colons (:), and hyphens (-). The name must start with a letter but cannot start with http:// or https://.
PerformanceLevel String No No The performance level (PL) of the ESSD that is used as the system disk. Default value: PL1. Valid values:
  • PL0: An ESSD delivers up to 10,000 random read/write IOPS.
  • PL1: An ESSD delivers up to 50,000 random read/write IOPS.
  • PL2: An ESSD delivers up to 100,000 random read/write IOPS.
  • PL3: An ESSD delivers up to 1,000,000 random read/write IOPS.
For more information about how to select the PLs of ESSDs, see ESSDs.
Description String No No The description of the disk. The description must be 2 to 256 characters in length.

By default, this property is empty.

Device String No No The mount target of the disk. This property will be removed in the future. We recommend that you use other properties to improve code compatibility.
SnapshotId String No No The ID of the snapshot that you want to use to create the data disk. None.

Tags syntax

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

Tags properties

Property Type Required Editable Description Constraint
Key String Yes No The key of the tag. The key must be 1 to 128 characters in length, and cannot contain http:// or https://. The key cannot start with aliyun or acs:.
Value String No No The value of the tag. The value can be up to 128 characters in length, and cannot contain http:// or https://. The value cannot start with aliyun or acs:.

Return values

Fn::GetAtt

  • InstanceId: the ID of the new ECS instance. The instance ID is a GUID that is generated by the system for an instance.
  • PrivateIp: the private IP address of the new ECS instance in a virtual private cloud (VPC). This property takes effect when the NetworkType property is set to vpc.
  • InnerIp: the private IP address of the new ECS instance in the classic network. This property takes effect when the NetworkType property is set to classic.
  • PublicIp: the public IP address of the new ECS instance in the classic network. This property takes effect when the NetworkType property is set to classic.
  • ZoneId: the ID of the zone.
  • HostName: the hostname of the new ECS instance.
  • PrimaryNetworkInterfaceId: the ID of the primary elastic network interface (ENI).
  • SecurityGroupIds: the IDs of security groups to which the new ECS instance belongs.

Examples

JSON format

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "BackendServerWeight": {
      "Type": "Number",
      "Description": "The weight of backend server of load balancer. From 0 to 100, 0 means offline. Default is 100.",
      "MinValue": 0,
      "MaxValue": 100,
      "Default": 100
    },
    "KeyPairName": {
      "Type": "String",
      "Description": "SSH key pair name."
    },
    "Description": {
      "Type": "String",
      "Description": "Description of the instance, [2, 256] characters. Do not fill or empty, the default is empty."
    },
    "DiskMappings": {
      "Type": "Json",
      "Description": "Disk mappings to attach to instance. Max support 16 disks.\nIf the image contains a data disk, you can specify other parameters of the data disk via the same value of parameter \"Device\". If parameter \"Category\" is not specified, it will be cloud_efficiency instead of \"Category\" of data disk in the image.",
      "MaxLength": 16
    },
    "ResourceGroupId": {
      "Type": "String",
      "Description": "Resource group id."
    },
    "ZoneId": {
      "Type": "String",
      "Description": "The ID of the zone to which the instance belongs. For more information, \ncall the DescribeZones operation to query the most recent zone list. \nDefault value is empty, which means random selection."
    },
    "InstanceChargeType": {
      "Type": "String",
      "Description": "Instance Charge type, allowed value: Prepaid and Postpaid. If specified Prepaid, please ensure you have sufficient balance in your account. Or instance creation will be failure. Default value is Postpaid.",
      "AllowedValues": [
        "Subscription",
        "PrePaid",
        "PrePay",
        "Prepaid",
        "PayAsYouGo",
        "PostPaid",
        "PayOnDemand",
        "Postpaid"
      ],
      "Default": "PostPaid"
    },
    "SecurityGroupId": {
      "Type": "String",
      "Description": "Security group to create ecs instance. For classic instance need the security group not belong to VPC, for VPC instance, please make sure the security group belong to specified VPC."
    },
    "Period": {
      "Type": "Number",
      "Description": "Prepaid time period. Unit is month, it could be from 1 to 9 or 12, 24, 36, 48, 60. Default value is 1.",
      "AllowedValues": [
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        12,
        24,
        36,
        48,
        60
      ],
      "Default": 1
    },
    "DeletionProtection": {
      "Type": "Boolean",
      "Description": "Whether an instance can be released manually through the console or API, deletion protection only support postPaid instance ",
      "AllowedValues": [
        "True",
        "true",
        "False",
        "false"
      ]
    },
    "SourceInstanceId": {
      "Type": "String",
      "Description": "Source ecs instance used to copy properties to clone new ecs instance. It will copy the InstanceType, ImageId, InternetChargeType, InternetMaxBandwidthOut and the system disk and data disk configurations. If the instance network is VPC, it will also clone the relative properties. If specified instance with more than one security group, it will use the first security group to create instance. you can also specify the SecurityGroupId to override it."
    },
    "LoadBalancerIdToAttach": {
      "Type": "String",
      "Description": "After the instance is created. Automatic attach it to the load balancer."
    },
    "InstanceName": {
      "Type": "String",
      "Description": "Display name of the instance, [2, 128] English or Chinese characters, must start with a letter or Chinese in size, can contain numbers, '_' or '.', '-'"
    },
    "RamRoleName": {
      "Type": "String",
      "Description": "Instance RAM role name. The name is provided and maintained by Resource Access Management (RAM) and can be queried using ListRoles. For more information, see RAM API CreateRole and ListRoles."
    },
    "ImageId": {
      "Type": "String",
      "Description": "Image ID to create ecs instance."
    },
    "SpotPriceLimit": {
      "Type": "String",
      "Description": "The hourly price threshold of a instance, and it takes effect only when parameter InstanceChargeType is PostPaid. Three decimals is allowed at most. "
    },
    "Tags": {
      "Type": "Json",
      "Description": "Tags to attach to instance. Max support 20 tags to add during create instance. Each tag with two properties Key and Value, and Key is required.",
      "MaxLength": 20
    },
    "SpotStrategy": {
      "Type": "String",
      "Description": "The spot strategy of a Pay-As-You-Go instance, and it takes effect only when parameter InstanceChargeType is PostPaid. Value range: \"NoSpot: A regular Pay-As-You-Go instance\", \"SpotWithPriceLimit: A price threshold for a spot instance, \"\"SpotAsPriceGo: A price that is based on the highest Pay-As-You-Go instance. \"Default value: NoSpot.",
      "AllowedValues": [
        "NoSpot",
        "SpotWithPriceLimit",
        "SpotAsPriceGo"
      ]
    },
    "Password": {
      "Type": "String",
      "Description": "Password of created ecs instance. Must contain at least 3 types of special character, lower character, upper character, number."
    }
  },
  "Resources": {
    "InstanceClone": {
      "Type": "ALIYUN::ECS::InstanceClone",
      "Properties": {
        "BackendServerWeight": {
          "Ref": "BackendServerWeight"
        },
        "KeyPairName": {
          "Ref": "KeyPairName"
        },
        "Description": {
          "Ref": "Description"
        },
        "DiskMappings": {
          "Ref": "DiskMappings"
        },
        "ResourceGroupId": {
          "Ref": "ResourceGroupId"
        },
        "ZoneId": {
          "Ref": "ZoneId"
        },
        "InstanceChargeType": {
          "Ref": "InstanceChargeType"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroupId"
        },
        "Period": {
          "Ref": "Period"
        },
        "DeletionProtection": {
          "Ref": "DeletionProtection"
        },
        "SourceInstanceId": {
          "Ref": "SourceInstanceId"
        },
        "LoadBalancerIdToAttach": {
          "Ref": "LoadBalancerIdToAttach"
        },
        "InstanceName": {
          "Ref": "InstanceName"
        },
        "RamRoleName": {
          "Ref": "RamRoleName"
        },
        "ImageId": {
          "Ref": "ImageId"
        },
        "SpotPriceLimit": {
          "Ref": "SpotPriceLimit"
        },
        "Tags": {
          "Ref": "Tags"
        },
        "SpotStrategy": {
          "Ref": "SpotStrategy"
        },
        "Password": {
          "Ref": "Password"
        }
      }
    }
  },
  "Outputs": {
    "PrimaryNetworkInterfaceId": {
      "Description": "Primary network interface ID of created instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "PrimaryNetworkInterfaceId"
        ]
      }
    },
    "InnerIp": {
      "Description": "Inner IP address of the specified instance. Only for classical instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "InnerIp"
        ]
      }
    },
    "ZoneId": {
      "Description": "Zone ID of created instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "ZoneId"
        ]
      }
    },
    "PrivateIp": {
      "Description": "Private IP address of created ecs instance. Only for VPC instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "PrivateIp"
        ]
      }
    },
    "InstanceId": {
      "Description": "The instance ID of created ecs instance",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "InstanceId"
        ]
      }
    },
    "PublicIp": {
      "Description": "Public IP address of created ecs instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "PublicIp"
        ]
      }
    },
    "SecurityGroupIds": {
      "Description": "Security group ID list of created instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "SecurityGroupIds"
        ]
      }
    },
    "HostName": {
      "Description": "Host name of created instance.",
      "Value": {
        "Fn::GetAtt": [
          "InstanceClone",
          "HostName"
        ]
      }
    }
  }
}

YAML format

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  BackendServerWeight:
    Default: 100
    Description: The weight of backend server of load balancer. From 0 to 100, 0 means
      offline. Default is 100.
    MaxValue: 100
    MinValue: 0
    Type: Number
  DeletionProtection:
    AllowedValues:
    - 'True'
    - 'true'
    - 'False'
    - 'false'
    Description: 'Whether an instance can be released manually through the console
      or API, deletion protection only support postPaid instance '
    Type: Boolean
  Description:
    Description: Description of the instance, [2, 256] characters. Do not fill or
      empty, the default is empty.
    Type: String
  DiskMappings:
    Description: 'Disk mappings to attach to instance. Max support 16 disks.

      If the image contains a data disk, you can specify other parameters of the data
      disk via the same value of parameter "Device". If parameter "Category" is not
      specified, it will be cloud_efficiency instead of "Category" of data disk in
      the image.'
    MaxLength: 16
    Type: Json
  ImageId:
    Description: Image ID to create ecs instance.
    Type: String
  InstanceChargeType:
    AllowedValues:
    - Subscription
    - PrePaid
    - PrePay
    - Prepaid
    - PayAsYouGo
    - PostPaid
    - PayOnDemand
    - Postpaid
    Default: PostPaid
    Description: 'Instance Charge type, allowed value: Prepaid and Postpaid. If specified
      Prepaid, please ensure you have sufficient balance in your account. Or instance
      creation will be failure. Default value is Postpaid.'
    Type: String
  InstanceName:
    Description: Display name of the instance, [2, 128] English or Chinese characters,
      must start with a letter or Chinese in size, can contain numbers, '_' or '.',
      '-'
    Type: String
  KeyPairName:
    Description: SSH key pair name.
    Type: String
  LoadBalancerIdToAttach:
    Description: After the instance is created. Automatic attach it to the load balancer.
    Type: String
  Password:
    Description: Password of created ecs instance. Must contain at least 3 types of
      special character, lower character, upper character, number.
    Type: String
  Period:
    AllowedValues:
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    - 12
    - 24
    - 36
    - 48
    - 60
    Default: 1
    Description: Prepaid time period. Unit is month, it could be from 1 to 9 or 12,
      24, 36, 48, 60. Default value is 1.
    Type: Number
  RamRoleName:
    Description: Instance RAM role name. The name is provided and maintained by Resource
      Access Management (RAM) and can be queried using ListRoles. For more information,
      see RAM API CreateRole and ListRoles.
    Type: String
  ResourceGroupId:
    Description: Resource group id.
    Type: String
  SecurityGroupId:
    Description: Security group to create ecs instance. For classic instance need
      the security group not belong to VPC, for VPC instance, please make sure the
      security group belong to specified VPC.
    Type: String
  SourceInstanceId:
    Description: Source ecs instance used to copy properties to clone new ecs instance.
      It will copy the InstanceType, ImageId, InternetChargeType,
      InternetMaxBandwidthOut and the system disk and data disk configurations. If
      the instance network is VPC, it will also clone the relative properties. If
      specified instance with more than one security group, it will use the first
      security group to create instance. you can also specify the SecurityGroupId
      to override it.
    Type: String
  SpotPriceLimit:
    Description: 'The hourly price threshold of a instance, and it takes effect only
      when parameter InstanceChargeType is PostPaid. Three decimals is allowed at
      most. '
    Type: String
  SpotStrategy:
    AllowedValues:
    - NoSpot
    - SpotWithPriceLimit
    - SpotAsPriceGo
    Description: 'The spot strategy of a Pay-As-You-Go instance, and it takes effect
      only when parameter InstanceChargeType is PostPaid. Value range: "NoSpot: A
      regular Pay-As-You-Go instance", "SpotWithPriceLimit: A price threshold for
      a spot instance, ""SpotAsPriceGo: A price that is based on the highest Pay-As-You-Go
      instance. "Default value: NoSpot.'
    Type: String
  Tags:
    Description: Tags to attach to instance. Max support 20 tags to add during create
      instance. Each tag with two properties Key and Value, and Key is required.
    MaxLength: 20
    Type: Json
  ZoneId:
    Description: "The ID of the zone to which the instance belongs. For more information,\
      \ \ncall the DescribeZones operation to query the most recent zone list. \n\
      Default value is empty, which means random selection."
    Type: String
Resources:
  InstanceClone:
    Properties:
      BackendServerWeight:
        Ref: BackendServerWeight
      DeletionProtection:
        Ref: DeletionProtection
      Description:
        Ref: Description
      DiskMappings:
        Ref: DiskMappings
      ImageId:
        Ref: ImageId
      InstanceChargeType:
        Ref: InstanceChargeType
      InstanceName:
        Ref: InstanceName
      KeyPairName:
        Ref: KeyPairName
      LoadBalancerIdToAttach:
        Ref: LoadBalancerIdToAttach
      Password:
        Ref: Password
      Period:
        Ref: Period
      RamRoleName:
        Ref: RamRoleName
      ResourceGroupId:
        Ref: ResourceGroupId
      SecurityGroupId:
        Ref: SecurityGroupId
      SourceInstanceId:
        Ref: SourceInstanceId
      SpotPriceLimit:
        Ref: SpotPriceLimit
      SpotStrategy:
        Ref: SpotStrategy
      Tags:
        Ref: Tags
      ZoneId:
        Ref: ZoneId
    Type: ALIYUN::ECS::InstanceClone
Outputs:
  HostName:
    Description: Host name of created instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - HostName
  InnerIp:
    Description: Inner IP address of the specified instance. Only for classical instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - InnerIp
  InstanceId:
    Description: The instance ID of created ecs instance
    Value:
      Fn::GetAtt:
      - InstanceClone
      - InstanceId
  PrimaryNetworkInterfaceId:
    Description: Primary network interface ID of created instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - PrimaryNetworkInterfaceId
  PrivateIp:
    Description: Private IP address of created ecs instance. Only for VPC instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - PrivateIp
  PublicIp:
    Description: Public IP address of created ecs instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - PublicIp
  SecurityGroupIds:
    Description: Security group ID list of created instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - SecurityGroupIds
  ZoneId:
    Description: Zone ID of created instance.
    Value:
      Fn::GetAtt:
      - InstanceClone
      - ZoneId

For more examples, visit InstanceClone.json and InstanceClone.yml.