Documentation
xt-oss-0.4.2 has been yanked.

XT - Aliyun OSS SDK

这是一个Rust语言编写的阿里云OSS的SDK,依据官网文档并参考了其他语言的实现。

  • 基于tokio-rs异步运行时与流行的reqwest库实现.
  • 尽量完整的OSS数据结构描述(structenum).
  • Builder设计模式的传参风格.
  • 实现常用的大部分API.
  • 完整Examples演示.
[dependencies]
tokio = {version = "1.36.0", features = ["full"]}
# xt-oss = { git = "https://github.com/isme-sun/xt_oss", version = "0.1.0" }
//! `cargo run --example api_region_describe -q`
//!
//! 调用DescribeRegions接口查询所有支持地域或者指定地域对应的Endpoint信息,
//! 包括外网Endpoint、内网Endpoint和传输加速Endpoint。
use dotenv;
use std::process;
use xt_oss::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   dotenv::dotenv().ok();
   let options = util::options_from_env();
   // let options = oss::Options::new()
   //     .with_access_key_id("-- your access_key_id --")
   //     .with_access_key_secret("-- your access_key_secret --");

   let client = oss::Client::new(options);

   match client
       .DescribeRegions()
       // .with_region("oss-us-east-1")
       .execute()
       .await
       .unwrap_or_else(|reqwest_error| {
           println!("reqweset error: {}", reqwest_error);
           process::exit(-1);
       }) {
       Ok(oss_data) => {
           oss_data.content().region_info.iter().for_each(|entry| {
               println!("{:>20} | {}", entry.region, entry.internet_endpoint);
           });
       }
       Err(error_message) => {
           // let message = error_message.content();
           println!("request id: {}", &error_message.request_id());
           println!("oss error: {}", &error_message.content());
       }
   }
   Ok(())
}

Options 配置

  • access_key_id 通过阿里云控制台创建的AccessKey ID
  • access_key_secret 通过阿里云控制台创建的AccessKey Secret
  • sts_token 使用临时授权方式
  • bucket 通过控制台或PutBucket创建的Bucket
  • endpoint OSS访问域名。
  • region Bucket所在的区域,默认值为oss-cn-hangzhou
  • internal 是否使用阿里云内网访问,默认值为false
  • cname 是否支持上传自定义域名,默认值为false
  • is_request_pay Bucket是否开启请求者付费模,默认值为false
  • secure 设置secure为true,则使用HTTPS;设置secure为false,则使用HTTP
  • timeout 超时时间,默认值为60秒

构建方式

// 构建方式
let options = oss::Options::new()
    .with_access_key_id("access_key_id")
    .with_access_key_secret("access_key_secret")
    .with_bucket("xtoss-ex1")
    .with_cname(true)
    .with_endpoint("http://cdn-dev.xuetube.com")
    .with_internal(false)
    .with_region("oss-cn-shanghai")
    .with_secret(true)
    // .with_sts_token("sts token")
    .with_timeout(60);

let client = oss::Client::new(options);

从.env加载,格式参见 .env.example.

// ...
dotenv::dotenv().ok();
let options = util::options_from_env();
let client = oss::Client::new(options);
// ...

参数构建

错误处理

其他

实现的Api

关于Service/Region

Bucket - 基础操作

合规保留策略(WORM)

Bucket 权限控制(ACL)

Bucket 生命周期(Lifecycle)

Bucket 传输加速(TransferAcceleration)

Bucket 版本控制(Versioning)

Bucket 授权策略(Policy)

Bucket 日志管理(Logging)

Bucket 静态网站(Website)

Bucket 防盗链(Referer)

Bucket 标签(Tags)

Bucket 加密(Encryption)

Bucket 跨域资源共享(CORS)

Bucket 自定义域名(CNAME)

Bucket 图片样式(Style)

Object 基础操作 Stand

Object 分片上传(MultipartUpload)

Object 权限控制(ACL)

Object 软链接(Symlink)

Object 标签(Tagging)