Skip to main content

InstanceQueryService

Struct InstanceQueryService 

Source
pub struct InstanceQueryService<'a> { /* private fields */ }
Expand description

实例查询服务

Implementations§

Source§

impl<'a> InstanceQueryService<'a>

Source

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}
Source

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}
Source

pub async fn describe_instances_status( &self, request: &DescribeInstancesStatusRequest, region: &str, ) -> Result<DescribeInstancesStatusResponseType>

查看实例状态列表

本接口 (DescribeInstancesStatus) 用于查询一个或多个实例的状态。

  • 可以根据实例ID来查询实例的状态
  • 如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的实例状态
Source

pub async fn describe_instances_modification( &self, request: &DescribeInstancesModificationRequest, region: &str, ) -> Result<DescribeInstancesModificationResponseType>

查询实例可调整配置

本接口 (DescribeInstancesModification) 用于查询实例可调整的机型配置。

Source

pub async fn describe_instances_operation_limit( &self, request: &DescribeInstancesOperationLimitRequest, region: &str, ) -> Result<DescribeInstancesOperationLimitResponseType>

查询实例操作限制

本接口用于查询实例操作限制信息。

Source

pub async fn describe_instance_family_configs( &self, request: &DescribeInstanceFamilyConfigsRequest, region: &str, ) -> Result<DescribeInstanceFamilyConfigsResponseType>

查询所支持的实例机型族信息

本接口 (DescribeInstanceFamilyConfigs) 查询当前用户和地域所支持的机型族信息。

Source

pub async fn describe_instance_type_configs( &self, request: &DescribeInstanceTypeConfigsRequest, region: &str, ) -> Result<DescribeInstanceTypeConfigsResponseType>

查询实例机型列表

本接口 (DescribeInstanceTypeConfigs) 用于查询实例机型配置。

  • 可以根据实例机型、实例族名称等信息来查询实例机型配置
  • 如果参数为空,返回当前用户地域所支持的所有机型配置

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more