腾讯云API SDK (Rust)
这是一个非官方的腾讯云API Rust SDK,提供了与腾讯云API进行交互的Rust实现。
目录
安装和环境配置
- 在Cargo.toml中添加依赖
- 设置环境变量
export TENCENTCLOUD_SECRET_ID="你的腾讯云SecretId"
export TENCENTCLOUD_SECRET_KEY="你的腾讯云SecretKey"
已实现功能
通用功能
- ✅ 腾讯云API签名V3算法完整实现
- ✅ HTTP客户端封装
- ✅ 统一的错误处理
地域与可用区管理
- ✅ 查询地域列表 (DescribeRegions)
- ✅ 查询可用区列表 (DescribeZones)
云服务器实例管理
使用方法
1. 查询地域和可用区
use tencent_cloud_sdk::{TencentCloudClient, services::region::RegionService};
let client = TencentCloudClient::new(secret_id, secret_key);
let region_service = RegionService::new(&client);
let regions = region_service.describe_regions().await?;
let zones = region_service.describe_zones("ap-guangzhou").await?;
2. 创建实例
use tencent_cloud_sdk::{
TencentCloudClient,
services::cvm::instance::{
InstanceService, RunInstancesRequest, Placement, LoginSettings,
SystemDisk, InstanceChargeType
}
};
let client = TencentCloudClient::new(secret_id, secret_key);
let instance_service = InstanceService::new(&client);
let request = RunInstancesRequest {
Placement: Some(Placement {
Zone: Some("ap-guangzhou-6".to_string()),
ProjectId: None,
HostIds: None,
HostIps: None,
DedicatedClusterId: None,
}),
ImageId: Some("img-6n21msk1".to_string()),
InstanceChargeType: Some(InstanceChargeType::Spotpaid), InstanceType: Some("S5.MEDIUM2".to_string()),
SystemDisk: Some(SystemDisk {
DiskType: Some("CLOUD_BSSD".to_string()),
DiskSize: Some(20),
DiskId: None,
}),
InstanceCount: Some(1),
LoginSettings: Some(LoginSettings {
Password: Some("Password123".to_string()),
KeyIds: None,
KeepImageLogin: None,
}),
VirtualPrivateCloud: None,
SecurityGroupIds: None,
InstanceName: Some("test-instance".to_string()),
};
let response = instance_service.run_instances(&request, "ap-guangzhou").await?;
3. 退还实例
use tencent_cloud_sdk::{
TencentCloudClient,
services::cvm::instance::{InstanceService, TerminateInstancesRequest}
};
let client = TencentCloudClient::new(secret_id, secret_key);
let instance_service = InstanceService::new(&client);
let request = TerminateInstancesRequest {
InstanceIds: vec!["ins-xxxxxxxx".to_string()],
ReleasePrepaidDataDisks: Some(false), };
let response = instance_service.terminate_instances(&request, "ap-guangzhou").await?;
许可证
MIT许可证