Skip to main content

OSS

Aliyun Object Storage Service (OSS) support.

Capabilities

This service can be used to:

  • stat
  • read
  • write
  • append
  • create_dir
  • delete
  • copy
  • rename
  • list
  • scan
  • presign
  • blocking

Configuration

  • root: Set the work dir for backend.
  • bucket: Set the container name for backend.
  • endpoint: Set the endpoint for backend.
  • presign_endpoint: Set the endpoint for presign.
  • access_key_id: Set the access_key_id for backend.
  • access_key_secret: Set the access_key_secret for backend.
  • role_arn: Set the role of backend.
  • oidc_token: Set the oidc_token for backend.
  • allow_anonymous: Set the backend access OSS in anonymous way.

Refer to [OssBuilder]'s public API docs for more information.

Example

Via Builder

use std::sync::Arc;

use anyhow::Result;
use opendal::services::Oss;
use opendal::Operator;

#[tokio::main]
async fn main() -> Result<()> {
// Create OSS backend builder.
let mut builder = Oss::default();
// Set the root for oss, all operations will happen under this root.
//
// NOTE: the root must be absolute path.
builder.root("/path/to/dir");
// Set the bucket name, this is required.
builder.bucket("test");
// Set the endpoint.
//
// For example:
// - "https://oss-ap-northeast-1.aliyuncs.com"
// - "https://oss-hangzhou.aliyuncs.com"
builder.endpoint("https://oss-cn-beijing.aliyuncs.com");
// Set the access_key_id and access_key_secret.
//
// OpenDAL will try load credential from the env.
// If credential not set and no valid credential in env, OpenDAL will
// send request without signing like anonymous user.
builder.access_key_id("access_key_id");
builder.access_key_secret("access_key_secret");

let op: Operator = Operator::new(builder)?.finish();

Ok(())
}

Via Config

use anyhow::Result;
use opendal::Operator;
use opendal::Scheme;
use std::collections::HashMap;

#[tokio::main]
async fn main() -> Result<()> {
let mut map = HashMap::new();
map.insert("root".to_string(), "/path/to/dir".to_string());
map.insert("bucket".to_string(), "test".to_string());
map.insert("endpoint".to_string(), "https://oss-cn-beijing.aliyuncs.com".to_string());
map.insert("access_key_id".to_string(), "access_key_id".to_string());
map.insert("access_key_secret".to_string(), "access_key_secret".to_string());

let op: Operator = Operator::via_map(Scheme::Oss, map)?;
Ok(())
}