Creating an ECS (Pay-per-Use)
Function
This API is used to create one or more ECSs billed in pay-per-use mode.
This API is an asynchronous API. After the creation request is successfully delivered, a job ID is returned. This does not mean the creation is complete. You need to call the API by referring to Querying Task Execution Status to query the job status. The SUCCESS status indicates that the creation is successful.
This API allows you to set the X-Client-Token request header in the HTTP request header to ensure the request idempotence. For details, see Idempotent Requests.
Huawei Cloud no longer provides Windows images. This API cannot be used to create ECSs using Windows images, including public Windows images, private Windows images, shared Windows images, and Marketplace Windows images.
Learn how to authorize and authenticate this API before using it.
Before calling this API, you need to obtain Regions and Endpoints.
Logging in to an ECS can be authenticated using either a key pair or password. For security purposes, you are advised to use key pair authentication.
- Key pair
A key pair is used for ECS login authentication.
Method of calling APIs: Use the key_name field to specify the key file used for logging in to the ECS.
- Password
If you choose the initial password for authentication in an ECS, you can log in to the ECS using the username and its initial password. The initial password of user root is used for authentication in Linux, while that of user Administrator is used for authentication in Windows.
Method of calling APIs: Use the adminPass field to specify the initial login password of the administrator account. For details about how to use the adminPass field, see Table 3. If an encrypted password is required for logging in to a Linux ECS that is created using an image with Cloud-Init installed, you can use the user_data field to inject the password. For details, see Table 3.If the user_data field is specified for a Linux ECS that is created using an image with Cloud-Init installed, the adminPass field becomes invalid.
- Image password
If you use a Linux private image to create an ECS, you can use the image password for login authentication.
Method of calling APIs: If the image password is used, the key_name and adminPass fields do not need to be specified.
Constraints
When you create a pay-per-use ECS, the system automatically uses available cash coupons.
URI
POST /v1/{project_id}/cloudservers
Parameter |
Mandatory |
Description |
---|---|---|
project_id |
Yes |
Specifies the project ID. For details about how to obtain the ID, see Obtaining a Project ID. |
Request
Request parameters
Table 2 describes the request parameters.
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
server |
Yes |
Object |
Specifies the ECS information. For details, see Table 3. |
dry_run |
No |
Boolean |
Specifies whether to check the request and create the ECS. The default value is false.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
imageRef |
Yes |
String |
Specifies the ID of the system image used for creating ECSs. The ID is in Universally Unique Identifier (UUID) format. |
flavorRef |
Yes |
String |
Specifies the flavor ID of the ECS to be created. For details about the flavors that have been released, see "ECS Specifications and Types" in Elastic Cloud Server User Guide. |
name |
Yes |
String |
Specifies the ECS name. For details, see How Can I Set Sequential ECS Names When Creating Multiple ECSs? Value requirements:
|
user_data |
No |
String |
Specifies the user data to be injected to the ECS during the creation. Text and text files can be injected.
NOTE:
For more information about the user data to be injected, see Injecting User Data into ECSs in Elastic Cloud Server User Guide. Examples Before base64 encoding:
After base64 encoding:
|
adminPass |
No |
String |
Specifies the initial login password of the administrator account for logging in to an ECS using password authentication. The Linux administrator is root, and the Windows administrator is Administrator.
Password complexity requirements:
|
key_name |
No |
String |
Specifies the name of the SSH key used for logging in to the ECS. Keys can be created using the key creation API (Creating and Importing an SSH Key Pair) or obtained using the SSH key query API (Querying SSH Key Pairs). |
vpcid |
Yes |
String |
Specifies the ID of the VPC to which the ECS belongs. The value is in the format of the UUID. You can obtain the VPC ID from the management console or by following the instructions provided in "Querying VPCs" in Virtual Private Cloud API Reference. |
nics |
Yes |
Array of objects |
Specifies the NIC information of the ECS. For details, see Table 4. Constraints:
|
publicip |
No |
Object |
Specifies the EIP bound to the ECS, which can be configured in one of the following ways:
For details, see Table 1. |
count |
No |
Integer |
Specifies the number of ECSs to be created. Constraints:
|
isAutoRename |
No |
Boolean |
Specifies whether the same name is allowed during batch creation. The default value is False. This parameter takes effect when the count value is greater than 1.
|
root_volume |
Yes |
Object |
Specifies ECS system disk configurations. For details, see Table 6. |
data_volumes |
No |
Array of objects |
Specifies ECS data disk configurations. Each data structure represents a data disk to be created. An ECS can be attached with a maximum of 59 data disks (certain flavors support only 23 data disks). For details, see Table 7. |
security_groups |
No |
Array of objects |
Specifies the security groups of the ECS. If this parameter is left blank, the default security group is bound to the ECS by default. For details, see Table 2. |
availability_zone |
No |
String |
Specifies the name of the AZ where the ECS is located.
NOTE:
If this parameter is not specified, the system automatically selects an AZ. If the ECS is created on a DeH, the ECS must be in the same AZ as the DeH. You can obtain the value of this parameter by referring to Querying AZs or Regions and Endpoints. |
batch_create_in_multi_az |
No |
Boolean |
Specifies whether ECSs can be deployed in multiple random AZs. The default value is false.
This parameter is valid when availability_zone is left blank. |
extendparam |
No |
Object |
Provides the supplementary information about the ECS to be created. For details, see Table 8. |
metadata |
No |
Map<String,String> |
Specifies the metadata of the ECS to be created. You can use metadata to customize key-value pairs.
NOTE:
For details about reserved key-value pairs, see Table 11. |
os:scheduler_hints |
No |
Object |
Schedules ECSs, for example, by configuring an ECS group. For details, see Table 12. |
tags |
No |
Array of strings |
Specifies ECS tags. A tag is in the format of "key.value", where the maximum lengths of key and value are 36 and 43 characters, respectively. When adding a tag to an ECS, ensure that the tag complies with the following requirements:
NOTE:
|
server_tags |
No |
Array of objects |
Specifies ECS tags. For details, see Table 14.
NOTE:
|
description |
No |
String |
Specifies the description of the ECS, which is empty by default.
|
auto_terminate_time |
No |
String |
Specifies the scheduled deletion time. The value is in the format of "yyyy-MM-ddTHH:mm:ssZ" in UTC+0 and complies with ISO8601. If the value of second (ss) is not 00, the system automatically sets to the current value of minute (mm). The scheduled deletion time must be at least half an hour later than the current time. The scheduled deletion time cannot be three years later than the current time. For example, set the value to 2020-09-25T12:05:00Z.
NOTE:
Scheduled deletion is available only for pay-per-use ECSs. |
cpu_options |
No |
Object |
Specifies the CPU options. For details, see Table 8. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
subnet_id |
Yes |
String |
Specifies the subnet of the ECS. The value must be the ID of the subnet created in the VPC specified by vpcid and in the format of the UUID. You can obtain the parameter value by calling a VPC API for Querying Subnets. |
ip_address |
No |
String |
Specifies the IP address of the NIC used by the ECS. The value is an IPv4 address.
Constraints:
|
ipv6_enable |
No |
Boolean |
Specifies whether to support IPv6 addresses. If this parameter is set to true, the NIC supports IPv6 addresses. |
ipv6_bandwidth |
No |
Object |
Specifies the bound shared bandwidth. For details, see ipv6_bandwidth Field Description. |
allowed_address_pairs |
No |
Array of allow_address_pairs objects |
Specifies the allowed IP or MAC address pairs. For details, see Table 5 (extended attribute). The IP address cannot be 0.0.0.0/0.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
ip_address |
No |
String |
Specifies the IP address. The IP address cannot be 0.0.0.0/0. Configure an independent security group for the port if a large CIDR block (subnet mask less than 24) is configured for parameter allowed_address_pairs. |
mac_address |
No |
String |
Specifies the MAC address. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
volumetype |
Yes |
String |
Specifies the ECS system disk type, which must be one of available disk types.
The value can be SATA, SAS, GPSSD, SSD, or ESSD.
If the specified disk type is not available in the AZ, the disk will fail to be created.
NOTE:
|
size |
No |
Integer |
Specifies the system disk size in GB. The value ranges from 1 to 1024. Constraints:
NOTE:
To obtain the minimum system disk size (min_disk) of an image, click the image on the management console for its details. Alternatively, call the native OpenStack API for querying details about an image. For details, see "Querying Image Details (Native OpenStack)" in Image Management Service API Reference. |
extendparam |
No |
Object |
Provides the disk information. For details, see extendparam Field Description for Creating Disks. |
cluster_type |
No |
String |
Specifies the storage type of an ECS system disk. Value: DSS (dedicated storage type) This parameter must be used together with cluster_id and cluster_id must be specified. |
cluster_id |
No |
String |
Specifies the ID of the storage pool used by an ECS system disk. |
hw:passthrough |
No |
Boolean |
Specifies the device type of the EVS disks to be created.
|
metadata |
No |
Object |
Specifies the EVS disk metadata. Ensure that key and value in the metadata contain at most 255 bytes. This field is used only when an encrypted disk is created. For details, see metadata Field Description for Creating Disks. |
iops |
No |
Integer |
Specifies the IOPS configured for an EVS disk. This parameter is mandatory only when volumetype is set to GPSSD2 or ESSD2.
NOTE:
|
throughput |
No |
Integer |
Specifies the throughput of an EVS disk. The unit is MiB/s. This parameter is mandatory when volumetype is set to GPSSD2 and cannot be configured when volumetype is set to other values.
NOTE:
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
volumetype |
Yes |
String |
Specifies the type of the ECS data disk, which must be one of available disk types.
The value can be SATA, SAS, GPSSD, SSD, or ESSD.
If the specified disk type is not available in the AZ, the disk will fail to be created.
NOTE:
|
size |
Yes |
Integer |
Specifies the data disk size, in GB. The value ranges from 10 to 32768. When you use a data disk image to create a data disk, ensure that the value of this parameter is greater than or equal to the size of the source data disk that is used to create the data disk image. |
shareable |
No |
Boolean |
Specifies whether the disk is shared. The value can be true (specifies a shared disk) or false (a common EVS disk).
NOTE:
This field has been discarded. Use multiattach. |
multiattach |
No |
Boolean |
Specifies the shared disk information.
NOTE:
The shareable field is not used anymore. If both shareable and multiattach must be used, ensure that the values of the two fields are the same. If this parameter is not specified, common EVS disks are created by default. |
hw:passthrough |
No |
Boolean |
Specifies the device type of the EVS disks to be created.
|
extendparam |
No |
Object |
Provides the disk information. For details, see Table 7. |
cluster_type |
No |
String |
Specifies the storage type of an ECS data disk. Value: DSS (dedicated storage type) This parameter must be used together with cluster_id and cluster_id must be specified. |
cluster_id |
No |
String |
Specifies the ID of the storage pool used by an ECS data disk. |
data_image_id |
No |
String |
Specifies ID of the data image. The value is in UUID format. If data disks are created using a data disk image, this parameter is mandatory and it does not support metadata. |
metadata |
No |
Object |
Specifies the EVS disk metadata. Ensure that key and value in the metadata contain at most 255 bytes. This field is used only when an encrypted disk is created. If data disks are created using a data disk image, this field cannot be used. For details, see metadata Field Description for Creating Disks. |
delete_on_termination |
No |
Boolean |
Specifies the policy of releasing data disks when the ECS is deleted.
The default value is false.
NOTE:
This parameter is supported only by pay-per-use and spot ECSs. |
iops |
No |
Integer |
Specifies the IOPS configured for an EVS disk. This parameter is mandatory only when volumetype is set to GPSSD2 or ESSD2.
NOTE:
|
throughput |
No |
Integer |
Specifies the throughput of an EVS disk. The unit is MiB/s. This parameter is mandatory when volumetype is set to GPSSD2 and cannot be configured when volumetype is set to other values.
NOTE:
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
hw:cpu_threads |
No |
integer |
Specifies whether to enable CPU hyper-threading. Values: 1 and 2
This parameter can be set to 1 (disabling hyper-threading) only when all of the following conditions are met:
|
Response
Parameter |
Type |
Description |
---|---|---|
job_id |
String |
Specifies the returned task ID after delivering the task. You can query the task progress using this ID. For details about how to query the task execution status based on job_id, see Task Status Management. |
For details about abnormal responses, see Responses (Task).
Example Request
- Create a pay-per-use ECS running CentOS 7.6 64bit, with 4 vCPUs, 8 GiB of memory, SSD disks attached, and 10 Mbit/s of bandwidth-billed EIP bound. Use the key pair for login authentication.
POST https://{endpoint}/v1/{project_id}/cloudservers { "server": { "availability_zone":"az1-dc1", "name": "newserver", "imageRef": "67f433d8-ed0e-4321-a8a2-a71838539e09", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s3.xlarge.2", "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", "security_groups": [ { "id": "507ca48f-814c-4293-8706-300564d54620" } ], "nics": [ { "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83" } ], "publicip": { "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER" } } }, "key_name": "sshkey-123", "count": 1, "server_tags": [ { "key": "key1", "value": "value1" } ], "metadata": { "op_svc_userid": "8ea65f4099ba412883e2a0da72b96873", "agency_name": "test" } } }
- Send a pre-verification request to check whether mandatory parameters are configured in the request and whether the request format is correct.
POST https://{endpoint}/v1/{project_id}/cloudservers { "dry_run": true, "server": { "availability_zone":"az1-dc1", "name": "newserver", "imageRef": "1189efbf-d48b-46ad-a823-94b942e2a000", "root_volume": { "volumetype": "SSD" }, "data_volumes": [ { "volumetype": "SSD", "size": 100, "multiattach": true, "hw:passthrough": true } ], "flavorRef": "s3.xlarge.2", "vpcid": "0dae26c9-9a70-4392-93f3-87d53115d171", "security_groups": [ { "id": "507ca48f-814c-4293-8706-300564d54620" } ], "nics": [ { "subnet_id": "157ee789-03ea-45b1-a698-76c92660dd83" } ], "key_name": "sshkey-123", "count": 1 } }
Example Response
{ "job_id": "93c82933d6b7827d3016b8771f2070873" }
Or
{ "error": { "code": "request body is illegal.", "message": "Ecs.0005" } }
Or
{ "error": { "message": "privateIp [%s] is not in this subnet [%s]", "code": "Ecs.0005", "details": [ { "code": "Ecs.0039" } ] } }
Returned Values
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot