Crate aliyun_oss_rs

Crate aliyun_oss_rs 

Source
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 default
aliyun-oss-rs = { version = "0.2.0", default-features = false, features = ["sync"] }

§Async and sync usage

  • Async APIs require a Tokio runtime.
  • When sync is enabled, all APIs provide *_sync variants. 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.