OSS
Aliyun Object Storage Service (OSS) support.
Capabilities
This service can be used to:
- stat
- read
- write
- append
- create_dir
- delete
- copy
- rename
- list
- 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
- Rust
- Node.js
- Python
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(())
}
import { Operator } from "opendal";
async function main() {
const op = new Operator("oss", {
root: "/path/to/dir",
bucket: "test",
endpoint: "https://oss-cn-beijing.aliyuncs.com",
access_key_id: "access_key_id",
access_key_secret: "access_key_secret",
});
}
import opendal
op = opendal.Operator("oss",
root="/path/to/dir",
bucket="test",
endpoint="https://oss-cn-beijing.aliyuncs.com",
access_key_id="access_key_id",
access_key_secret="access_key_secret",
)