Rust AWS管理库aws-manager的使用,高效管理Amazon Web Services云资源的Rust工具包
Rust AWS管理库aws-manager的使用,高效管理Amazon Web Services云资源的Rust工具包
aws-manager是基于AWS SDK Rust版本的封装库。
安装
在项目目录中运行以下Cargo命令:
cargo add aws-manager
或者在Cargo.toml中添加以下行:
aws-manager = "0.30.4"
基本使用示例
以下是一个使用aws-manager管理AWS资源的简单示例:
use aws_manager::{
ec2, // 用于管理EC2实例
s3, // 用于管理S3存储桶
sts, // 用于安全令牌服务
Config, // 配置结构体
};
#[tokio::main]
async fn main() {
// 初始化AWS配置
let config = Config::from_env() // 从环境变量获取AWS配置
.await
.expect("failed to load AWS config from environment");
// 获取AWS账户ID
let sts_manager = sts::Manager::new(config.clone());
let account_id = sts_manager
.get_caller_identity()
.await
.expect("failed to get caller identity");
println!("AWS Account ID: {}", account_id);
// 列出所有EC2实例
let ec2_manager = ec2::Manager::new(config.clone());
let instances = ec2_manager
.describe_instances()
.await
.expect("failed to describe instances");
println!("EC2 Instances: {:?}", instances);
// 列出所有S3存储桶
let s3_manager = s3::Manager::new(config);
let buckets = s3_manager
.list_buckets()
.await
.expect("failed to list buckets");
println!("S3 Buckets: {:?}", buckets);
}
完整示例代码
下面是一个更完整的示例,展示如何使用aws-manager创建EC2实例和S3存储桶:
use aws_manager::{
ec2,
s3,
sts,
Config,
};
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 1. 初始化配置
let config = Config::from_env().await?;
// 2. 验证AWS凭证
let sts_manager = sts::Manager::new(config.clone());
let account_id = sts_manager.get_caller_identity().await?;
println!("Connected to AWS Account: {}", account_id);
// 3. S3操作示例
let s3_manager = s3::Manager::new(config.clone());
// 创建新存储桶
let bucket_name = format!("my-rust-bucket-{}", chrono::Utc::now().timestamp());
s3_manager.create_bucket(&bucket_name).await?;
println!("Created S3 bucket: {}", bucket_name);
// 列出所有存储桶
let buckets = s3_manager.list_buckets().await?;
println!("Available S3 buckets: {:?}", buckets);
// 4. EC2操作示例
let ec2_manager = ec2::Manager::new(config);
// 列出所有实例
let instances = ec2_manager.describe_instances().await?;
println!("Current EC2 instances: {:?}", instances);
// 创建新实例(注释掉实际创建代码,避免意外启动实例)
/*
let instance = ec2_manager
.run_instances(
"ami-0abcdef1234567890", // AMI ID
"t2.micro", // 实例类型
"my-keypair", // 密钥对名称
1, // 数量
Some("my-security-group") // 安全组
)
.await?;
println!("Launched new EC2 instance: {:?}", instance);
// 等待实例运行
tokio::time::sleep(Duration::from_secs(60)).await;
// 终止实例
ec2_manager.terminate_instances(&[instance.instance_id]).await?;
println!("Terminated instance: {}", instance.instance_id);
*/
Ok(())
}
功能特性
aws-manager提供了以下主要功能:
- EC2管理:创建、描述、启动、停止和终止EC2实例
- S3管理:创建、列出和删除S3存储桶,上传/下载对象
- STS集成:获取AWS账户和用户信息
- IAM管理:管理用户、组和策略
- 配置简化:从环境变量轻松加载AWS配置
许可证
该项目使用Apache-2.0许可证。
1 回复