Expand description
§aliyun-oss-rs
aliyun-oss-rs is an unofficial Rust SDK for Alibaba Cloud Object Storage Service (OSS).
It provides a small, chainable API surface: OssClient -> OssBucket -> OssObject -> Operation.
Async APIs are enabled by default; a sync feature exposes a blocking subset.
§Feature flags
aliyun-oss-rs = { version = "0.2.0" } # async by defaultaliyun-oss-rs = { version = "0.2.0", default-features = false, features = ["sync"] }§Async and sync usage
- Async APIs require a Tokio runtime.
- When
syncis enabled, all APIs provide*_syncvariants. Object APIs support streaming upload/download with blocking readers/writers.
§Regions and endpoints
Signature V4 requires a region. OssClient::new takes a region and derives the default
public endpoint as oss-<region>.aliyuncs.com. Use set_endpoint for internal,
dualstack, or custom domains.
§Quick start (async)
ⓘ
use aliyun_oss_rs::OssClient;
#[tokio::main]
async fn main() {
let mut client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
// Optional: internal/dualstack/custom endpoints
// client.set_endpoint("oss-cn-zhangjiakou-internal.aliyuncs.com");
let buckets = client.list_buckets().set_prefix("rust").send().await;
println!("buckets = {:?}", buckets);
}§Working with a bucket
ⓘ
use aliyun_oss_rs::OssClient;
#[tokio::main]
async fn main() -> Result<(), aliyun_oss_rs::Error> {
let client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
let bucket = client.bucket("example-bucket");
let object = bucket.object("rust.png");
object.put_object().send_file("/path/to/file.png").await?;
Ok(())
}§Pre-signed URL
ⓘ
use aliyun_oss_rs::OssClient;
use time::{Duration, OffsetDateTime};
#[tokio::main]
async fn main() {
let client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
let url = client
.bucket("example-bucket")
.object("rust.png")
.get_object_url()
.url(OffsetDateTime::now_utc() + Duration::hours(24));
println!("url = {}", url);
}§aliyun-oss-rs
aliyun-oss-rs 是阿里云对象存储服务(OSS)的非官方 Rust SDK。
提供精简、可链式调用的 API:OssClient -> OssBucket -> OssObject -> Operation。
默认启用异步 API;开启 sync feature 后提供同步子集。
§功能特性
aliyun-oss-rs = { version = "0.2.0" } # 默认异步aliyun-oss-rs = { version = "0.2.0", default-features = false, features = ["sync"] }§异步与同步
- 异步 API 需要 Tokio runtime。
- 启用
sync后,所有 API 均提供*_sync变体。 Object 相关 API 支持阻塞式流上传/下载。
§Region 与 Endpoint
Signature V4 需要提供 region。OssClient::new 会根据 region
推导默认公网 Endpoint:oss-<region>.aliyuncs.com。
如需内网、双栈或自定义域名,请使用 set_endpoint 覆盖。
§快速开始(异步)
ⓘ
use aliyun_oss_rs::OssClient;
#[tokio::main]
async fn main() {
let mut client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
// 可选:内网/双栈/自定义 Endpoint
// client.set_endpoint("oss-cn-zhangjiakou-internal.aliyuncs.com");
let buckets = client.list_buckets().set_prefix("rust").send().await;
println!("buckets = {:?}", buckets);
}§Bucket 常用操作
ⓘ
use aliyun_oss_rs::OssClient;
#[tokio::main]
async fn main() -> Result<(), aliyun_oss_rs::Error> {
let client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
let bucket = client.bucket("example-bucket");
let object = bucket.object("rust.png");
object.put_object().send_file("/path/to/file.png").await?;
Ok(())
}§预签名 URL
ⓘ
use aliyun_oss_rs::OssClient;
use time::{Duration, OffsetDateTime};
#[tokio::main]
async fn main() {
let client = OssClient::new("<AccessKeyId>", "<AccessKeySecret>", "cn-zhangjiakou");
let url = client
.bucket("example-bucket")
.object("rust.png")
.get_object_url()
.url(OffsetDateTime::now_utc() + Duration::hours(24));
println!("url = {}", url);
}Modules§
- bucket
- A bucket is a container for storing objects; every object must belong to a bucket.
- client
- Basic client service including AccessKey and endpoint information.
- common
- Common data definitions.
- object
- An object is the basic unit for storing data in OSS, composed of metadata, user data, and a key that uniquely identifies it within a bucket.
Structs§
- OssBucket
- Bucket handle that exposes bucket-level APIs (lifecycle, ACL, CORS, logging, etc.).
- OssClient
- Entry point for OSS, providing service-level APIs such as listing buckets and regions.
- OssObject
- Object handle exposing object-level APIs such as upload, download, and metadata.
Enums§
- Error
- Error type for OSS operations.