pub struct InstanceQueryService<'a> { /* private fields */ }Expand description
实例查询服务
Implementations§
Source§impl<'a> InstanceQueryService<'a>
impl<'a> InstanceQueryService<'a>
Sourcepub fn new(client: &'a TencentCloudClient) -> Self
pub fn new(client: &'a TencentCloudClient) -> Self
创建新的实例查询服务
Examples found in repository?
examples/instance_describe.rs (line 20)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 // 从环境变量读取密钥
11 let secret_id = env::var("TENCENTCLOUD_SECRET_ID")
12 .expect("请设置环境变量TENCENTCLOUD_SECRET_ID");
13 let secret_key = env::var("TENCENTCLOUD_SECRET_KEY")
14 .expect("请设置环境变量TENCENTCLOUD_SECRET_KEY");
15
16 // 创建客户端
17 let client = TencentCloudClient::new(secret_id, secret_key);
18
19 // 创建实例查询服务
20 let instance_query_service = InstanceQueryService::new(&client);
21
22 // 设置区域
23 let region = "ap-guangzhou";
24
25 // 获取命令行参数
26 let args: Vec<String> = env::args().collect();
27
28 if args.len() > 1 {
29 match args[1].as_str() {
30 // 按ID查询实例
31 "id" => {
32 if args.len() < 3 {
33 println!("缺少实例ID参数,用法: cargo run --example instance_describe id <实例ID>");
34 return Ok(());
35 }
36
37 let instance_ids = args[2..].to_vec();
38 println!("正在查询以下实例ID: {:?}", instance_ids);
39
40 let request = DescribeInstancesRequest {
41 InstanceIds: Some(instance_ids),
42 Filters: None,
43 Offset: None,
44 Limit: None,
45 };
46
47 let response = instance_query_service.describe_instances(&request, region).await?;
48 display_instances(&response.Response);
49 },
50
51 // 按可用区查询实例
52 "zone" => {
53 if args.len() < 3 {
54 println!("缺少可用区参数,用法: cargo run --example instance_describe zone <可用区>");
55 return Ok(());
56 }
57
58 let zone = args[2].clone();
59 println!("正在查询可用区 {} 的实例", zone);
60
61 let mut filters = Vec::new();
62 filters.push(Filter {
63 Name: "zone".to_string(),
64 Values: vec![zone],
65 });
66
67 let request = DescribeInstancesRequest {
68 InstanceIds: None,
69 Filters: Some(filters),
70 Offset: None,
71 Limit: Some(20),
72 };
73
74 let response = instance_query_service.describe_instances(&request, region).await?;
75 display_instances(&response.Response);
76 },
77
78 // 按实例名称查询实例
79 "name" => {
80 if args.len() < 3 {
81 println!("缺少实例名称参数,用法: cargo run --example instance_describe name <实例名称>");
82 return Ok(());
83 }
84
85 let name = args[2].clone();
86 println!("正在查询名称为 {} 的实例", name);
87
88 let mut filters = Vec::new();
89 filters.push(Filter {
90 Name: "instance-name".to_string(),
91 Values: vec![name],
92 });
93
94 let request = DescribeInstancesRequest {
95 InstanceIds: None,
96 Filters: Some(filters),
97 Offset: None,
98 Limit: Some(20),
99 };
100
101 let response = instance_query_service.describe_instances(&request, region).await?;
102 display_instances(&response.Response);
103 },
104
105 // 按标签查询实例
106 "tag" => {
107 if args.len() < 4 {
108 println!("缺少标签参数,用法: cargo run --example instance_describe tag <标签键> <标签值>");
109 return Ok(());
110 }
111
112 let tag_key = args[2].clone();
113 let tag_value = args[3].clone();
114 println!("正在查询标签键值对为 {}:{} 的实例", tag_key, tag_value);
115
116 let mut filters = Vec::new();
117 filters.push(Filter {
118 Name: format!("tag:{}", tag_key),
119 Values: vec![tag_value],
120 });
121
122 let request = DescribeInstancesRequest {
123 InstanceIds: None,
124 Filters: Some(filters),
125 Offset: None,
126 Limit: Some(20),
127 };
128
129 let response = instance_query_service.describe_instances(&request, region).await?;
130 display_instances(&response.Response);
131 },
132
133 // 查询所有实例
134 "all" => {
135 println!("正在查询所有实例");
136
137 let request = DescribeInstancesRequest {
138 InstanceIds: None,
139 Filters: None,
140 Offset: None,
141 Limit: Some(20),
142 };
143
144 let response = instance_query_service.describe_instances(&request, region).await?;
145 display_instances(&response.Response);
146 },
147
148 // 按状态查询实例
149 "state" => {
150 if args.len() < 3 {
151 println!("缺少实例状态参数,用法: cargo run --example instance_describe state <状态>");
152 println!("支持的状态: PENDING, RUNNING, STOPPED, STOPPING, REBOOTING, STARTING, SHUTDOWN, TERMINATING");
153 return Ok(());
154 }
155
156 let state = args[2].clone();
157 println!("正在查询状态为 {} 的实例", state);
158
159 let mut filters = Vec::new();
160 filters.push(Filter {
161 Name: "instance-state".to_string(),
162 Values: vec![state],
163 });
164
165 let request = DescribeInstancesRequest {
166 InstanceIds: None,
167 Filters: Some(filters),
168 Offset: None,
169 Limit: Some(20),
170 };
171
172 let response = instance_query_service.describe_instances(&request, region).await?;
173 display_instances(&response.Response);
174 },
175
176 _ => {
177 print_usage();
178 }
179 }
180 } else {
181 print_usage();
182 }
183
184 Ok(())
185}Sourcepub async fn describe_instances(
&self,
request: &DescribeInstancesRequest,
region: &str,
) -> Result<DescribeInstancesResponseType>
pub async fn describe_instances( &self, request: &DescribeInstancesRequest, region: &str, ) -> Result<DescribeInstancesResponseType>
查询实例列表
本接口 (DescribeInstances) 用于查询一个或多个实例的详细信息。
- 可以根据实例ID、实例名称或者实例计费模式等信息来查询实例的详细信息
- 如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的实例
- 支持查询实例的最新操作(LatestOperation)以及最新操作状态(LatestOperationState)
Examples found in repository?
examples/instance_describe.rs (line 47)
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 // 从环境变量读取密钥
11 let secret_id = env::var("TENCENTCLOUD_SECRET_ID")
12 .expect("请设置环境变量TENCENTCLOUD_SECRET_ID");
13 let secret_key = env::var("TENCENTCLOUD_SECRET_KEY")
14 .expect("请设置环境变量TENCENTCLOUD_SECRET_KEY");
15
16 // 创建客户端
17 let client = TencentCloudClient::new(secret_id, secret_key);
18
19 // 创建实例查询服务
20 let instance_query_service = InstanceQueryService::new(&client);
21
22 // 设置区域
23 let region = "ap-guangzhou";
24
25 // 获取命令行参数
26 let args: Vec<String> = env::args().collect();
27
28 if args.len() > 1 {
29 match args[1].as_str() {
30 // 按ID查询实例
31 "id" => {
32 if args.len() < 3 {
33 println!("缺少实例ID参数,用法: cargo run --example instance_describe id <实例ID>");
34 return Ok(());
35 }
36
37 let instance_ids = args[2..].to_vec();
38 println!("正在查询以下实例ID: {:?}", instance_ids);
39
40 let request = DescribeInstancesRequest {
41 InstanceIds: Some(instance_ids),
42 Filters: None,
43 Offset: None,
44 Limit: None,
45 };
46
47 let response = instance_query_service.describe_instances(&request, region).await?;
48 display_instances(&response.Response);
49 },
50
51 // 按可用区查询实例
52 "zone" => {
53 if args.len() < 3 {
54 println!("缺少可用区参数,用法: cargo run --example instance_describe zone <可用区>");
55 return Ok(());
56 }
57
58 let zone = args[2].clone();
59 println!("正在查询可用区 {} 的实例", zone);
60
61 let mut filters = Vec::new();
62 filters.push(Filter {
63 Name: "zone".to_string(),
64 Values: vec![zone],
65 });
66
67 let request = DescribeInstancesRequest {
68 InstanceIds: None,
69 Filters: Some(filters),
70 Offset: None,
71 Limit: Some(20),
72 };
73
74 let response = instance_query_service.describe_instances(&request, region).await?;
75 display_instances(&response.Response);
76 },
77
78 // 按实例名称查询实例
79 "name" => {
80 if args.len() < 3 {
81 println!("缺少实例名称参数,用法: cargo run --example instance_describe name <实例名称>");
82 return Ok(());
83 }
84
85 let name = args[2].clone();
86 println!("正在查询名称为 {} 的实例", name);
87
88 let mut filters = Vec::new();
89 filters.push(Filter {
90 Name: "instance-name".to_string(),
91 Values: vec![name],
92 });
93
94 let request = DescribeInstancesRequest {
95 InstanceIds: None,
96 Filters: Some(filters),
97 Offset: None,
98 Limit: Some(20),
99 };
100
101 let response = instance_query_service.describe_instances(&request, region).await?;
102 display_instances(&response.Response);
103 },
104
105 // 按标签查询实例
106 "tag" => {
107 if args.len() < 4 {
108 println!("缺少标签参数,用法: cargo run --example instance_describe tag <标签键> <标签值>");
109 return Ok(());
110 }
111
112 let tag_key = args[2].clone();
113 let tag_value = args[3].clone();
114 println!("正在查询标签键值对为 {}:{} 的实例", tag_key, tag_value);
115
116 let mut filters = Vec::new();
117 filters.push(Filter {
118 Name: format!("tag:{}", tag_key),
119 Values: vec![tag_value],
120 });
121
122 let request = DescribeInstancesRequest {
123 InstanceIds: None,
124 Filters: Some(filters),
125 Offset: None,
126 Limit: Some(20),
127 };
128
129 let response = instance_query_service.describe_instances(&request, region).await?;
130 display_instances(&response.Response);
131 },
132
133 // 查询所有实例
134 "all" => {
135 println!("正在查询所有实例");
136
137 let request = DescribeInstancesRequest {
138 InstanceIds: None,
139 Filters: None,
140 Offset: None,
141 Limit: Some(20),
142 };
143
144 let response = instance_query_service.describe_instances(&request, region).await?;
145 display_instances(&response.Response);
146 },
147
148 // 按状态查询实例
149 "state" => {
150 if args.len() < 3 {
151 println!("缺少实例状态参数,用法: cargo run --example instance_describe state <状态>");
152 println!("支持的状态: PENDING, RUNNING, STOPPED, STOPPING, REBOOTING, STARTING, SHUTDOWN, TERMINATING");
153 return Ok(());
154 }
155
156 let state = args[2].clone();
157 println!("正在查询状态为 {} 的实例", state);
158
159 let mut filters = Vec::new();
160 filters.push(Filter {
161 Name: "instance-state".to_string(),
162 Values: vec![state],
163 });
164
165 let request = DescribeInstancesRequest {
166 InstanceIds: None,
167 Filters: Some(filters),
168 Offset: None,
169 Limit: Some(20),
170 };
171
172 let response = instance_query_service.describe_instances(&request, region).await?;
173 display_instances(&response.Response);
174 },
175
176 _ => {
177 print_usage();
178 }
179 }
180 } else {
181 print_usage();
182 }
183
184 Ok(())
185}Sourcepub async fn describe_instances_status(
&self,
request: &DescribeInstancesStatusRequest,
region: &str,
) -> Result<DescribeInstancesStatusResponseType>
pub async fn describe_instances_status( &self, request: &DescribeInstancesStatusRequest, region: &str, ) -> Result<DescribeInstancesStatusResponseType>
查看实例状态列表
本接口 (DescribeInstancesStatus) 用于查询一个或多个实例的状态。
- 可以根据实例ID来查询实例的状态
- 如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的实例状态
Sourcepub async fn describe_instances_modification(
&self,
request: &DescribeInstancesModificationRequest,
region: &str,
) -> Result<DescribeInstancesModificationResponseType>
pub async fn describe_instances_modification( &self, request: &DescribeInstancesModificationRequest, region: &str, ) -> Result<DescribeInstancesModificationResponseType>
查询实例可调整配置
本接口 (DescribeInstancesModification) 用于查询实例可调整的机型配置。
Sourcepub async fn describe_instances_operation_limit(
&self,
request: &DescribeInstancesOperationLimitRequest,
region: &str,
) -> Result<DescribeInstancesOperationLimitResponseType>
pub async fn describe_instances_operation_limit( &self, request: &DescribeInstancesOperationLimitRequest, region: &str, ) -> Result<DescribeInstancesOperationLimitResponseType>
查询实例操作限制
本接口用于查询实例操作限制信息。
Sourcepub async fn describe_instance_family_configs(
&self,
request: &DescribeInstanceFamilyConfigsRequest,
region: &str,
) -> Result<DescribeInstanceFamilyConfigsResponseType>
pub async fn describe_instance_family_configs( &self, request: &DescribeInstanceFamilyConfigsRequest, region: &str, ) -> Result<DescribeInstanceFamilyConfigsResponseType>
查询所支持的实例机型族信息
本接口 (DescribeInstanceFamilyConfigs) 查询当前用户和地域所支持的机型族信息。
Sourcepub async fn describe_instance_type_configs(
&self,
request: &DescribeInstanceTypeConfigsRequest,
region: &str,
) -> Result<DescribeInstanceTypeConfigsResponseType>
pub async fn describe_instance_type_configs( &self, request: &DescribeInstanceTypeConfigsRequest, region: &str, ) -> Result<DescribeInstanceTypeConfigsResponseType>
查询实例机型列表
本接口 (DescribeInstanceTypeConfigs) 用于查询实例机型配置。
- 可以根据实例机型、实例族名称等信息来查询实例机型配置
- 如果参数为空,返回当前用户地域所支持的所有机型配置
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for InstanceQueryService<'a>
impl<'a> !UnwindSafe for InstanceQueryService<'a>
impl<'a> Freeze for InstanceQueryService<'a>
impl<'a> Send for InstanceQueryService<'a>
impl<'a> Sync for InstanceQueryService<'a>
impl<'a> Unpin for InstanceQueryService<'a>
impl<'a> UnsafeUnpin for InstanceQueryService<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more