Rust 快速入门指南
使用 MinIO Rust SDK 从 Rust 应用连接 SILO。
MinIO Rust SDK
SILO 实现兼容 S3 的服务端契约,因此 Rust 应用可以直接使用上游 MinIO Rust SDK。该 crate 提供异步、强类型的请求构建器 API。
说明
本页按 minio crate 0.4.0 校验。该 crate 目前没有声明最低支持的 Rust 版本,请核对当前软件包元数据与 API 文档,并用项目固定的工具链完成验证。
安装软件包
在 Cargo.toml 中加入 SDK 与 Tokio 运行时:
[dependencies]
minio = "0.4.0"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
export S3_ENDPOINT=http://127.0.0.1:9000
export S3_ACCESS_KEY=silo-admin
export S3_SECRET_KEY=replace-with-a-strong-secret
S3_ENDPOINT 是包含 http:// 或 https:// 协议的完整 URL。请把凭据保存在源码仓库之外。
创建存储桶并上传对象
use minio::s3::builders::ObjectContent;
use minio::s3::creds::StaticProvider;
use minio::s3::http::BaseUrl;
use minio::s3::response::BucketExistsResponse;
use minio::s3::types::{BucketName, ObjectKey, S3Api};
use minio::s3::{MinioClient, MinioClientBuilder};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let endpoint = env::var("S3_ENDPOINT")?;
let access_key = env::var("S3_ACCESS_KEY")?;
let secret_key = env::var("S3_SECRET_KEY")?;
let base_url = endpoint.parse::<BaseUrl>()?;
let provider = StaticProvider::new(&access_key, &secret_key, None);
let client: MinioClient = MinioClientBuilder::new(base_url)
.provider(Some(provider))
.build()?;
let bucket = BucketName::new("rust-quickstart")?;
let object = ObjectKey::new("hello.txt")?;
let exists: BucketExistsResponse = client
.bucket_exists(bucket.clone())?
.build()
.send()
.await?;
if !exists.exists() {
client
.create_bucket(bucket.clone())?
.build()
.send()
.await?;
}
client
.put_object_content(
bucket,
object,
ObjectContent::from("hello from SILO\n"),
)?
.build()
.send()
.await?;
println!("Uploaded hello.txt");
Ok(())
}
使用 cargo run 运行示例。仓库的维护中示例与 API 文档涵盖文件上传、流处理、加密、通知、对象锁定等操作。
生产检查清单
- 启用 TLS,并验证服务端证书。
- 从密钥管理系统或受保护的环境中加载凭据。
- 只授予应用实际需要的存储桶与对象权限。
- 同时固定并验证 Rust 工具链、SDK、Tokio、HTTP、TLS 与密码学特性。
- 定义超时,并显式处理错误、重试、任务取消与未完成的分段上传。
服务端策略配置见身份与访问管理。