instance_create/
instance_create.rs1use tencent_cloud_sdk::{
2 TencentCloudClient,
3 services::cvm::instance::{
4 InstanceService, RunInstancesRequest, Placement, LoginSettings,
5 SystemDisk, InternetAccessible, EnhancedService, RunSecurityServiceEnabled,
6 RunMonitorServiceEnabled, InstanceChargeType
7 }
8};
9
10#[tokio::main]
11async fn main() -> Result<(), Box<dyn std::error::Error>> {
12 let secret_id = std::env::var("TENCENTCLOUD_SECRET_ID")
14 .expect("请设置环境变量TENCENTCLOUD_SECRET_ID");
15 let secret_key = std::env::var("TENCENTCLOUD_SECRET_KEY")
16 .expect("请设置环境变量TENCENTCLOUD_SECRET_KEY");
17
18 let client = TencentCloudClient::new(secret_id, secret_key);
20
21 let instance_service = InstanceService::new(&client);
23
24 let region = "ap-guangzhou";
26
27 let request = RunInstancesRequest {
29 Placement: Some(Placement {
31 Zone: Some("ap-guangzhou-6".to_string()),
32 ProjectId: None,
33 HostIds: None,
34 HostIps: None,
35 DedicatedClusterId: None,
36 }),
37
38 ImageId: Some("img-6n21msk1".to_string()),
40
41 InstanceChargeType: Some(InstanceChargeType::Spotpaid),
43
44 InstanceType: Some("S5.MEDIUM2".to_string()),
46
47 SystemDisk: Some(SystemDisk {
49 DiskType: Some("CLOUD_BSSD".to_string()),
50 DiskId: None,
51 DiskSize: Some(20),
52 }),
53
54 VirtualPrivateCloud: None,
56
57 SecurityGroupIds: None,
59
60 InstanceCount: Some(1),
62
63 InstanceName: Some("frp".to_string()),
65
66 LoginSettings: Some(LoginSettings {
68 Password: Some("Test@123456789".to_string()),
69 KeyIds: None,
70 KeepImageLogin: None,
71 }),
72
73 InternetAccessible: Some(InternetAccessible {
75 InternetChargeType: "TRAFFIC_POSTPAID_BY_HOUR".to_string(),
76 InternetMaxBandwidthOut: 0,
77 PublicIpAssigned: Some(false),
78 BandwidthPackageId: None,
79 }),
80
81 EnhancedService: Some(EnhancedService {
83 SecurityService: Some(RunSecurityServiceEnabled {
84 Enabled: true,
85 }),
86 MonitorService: Some(RunMonitorServiceEnabled {
87 Enabled: true,
88 }),
89 AutomationService: None,
90 }),
91
92 DataDisks: None,
94 ClientToken: None,
95 HostName: None,
96 TagSpecification: None,
97 ProjectId: None,
98 InstanceChargePrepaid: None,
99 };
100
101 println!("正在创建竞价实例...");
103 match instance_service.run_instances(&request, region).await {
104 Ok(response) => {
105 println!("实例创建请求已提交,实例ID列表:");
106 for id in response.Response.InstanceIdSet {
107 println!("- {}", id);
108 }
109 println!("\n注意:返回实例ID列表并不代表实例创建成功,请通过DescribeInstances接口查询实例状态");
110 },
111 Err(err) => {
112 println!("创建实例失败: {}", err);
113 }
114 }
115
116 Ok(())
117}