s3-rs

A lean, modern, unofficial S3-compatible client for Rust.
Quick start (async)
use s3::{Auth, Client};
# async fn demo() -> Result<(), s3::Error> {
let client = Client::builder("https://s3.amazonaws.com")?
.region("us-east-1")
.auth(Auth::from_env()?)
.build()?;
let obj = client.objects().get("my-bucket", "path/to/object.txt").send().await?;
let bytes = obj.bytes().await?;
println!("{} bytes", bytes.len());
# Ok(())
# }
Blocking
Enable blocking and choose one TLS backend (rustls or native-tls):
cargo add s3 --no-default-features --features blocking,rustls
use s3::{Auth, BlockingClient};
fn demo() -> Result<(), s3::Error> {
let client = BlockingClient::builder("https://s3.amazonaws.com")?
.region("us-east-1")
.auth(Auth::from_env()?)
.build()?;
let obj = client.objects().get("my-bucket", "path/to/object.txt").send()?;
let bytes = obj.bytes()?;
println!("{} bytes", bytes.len());
Ok(())
}
Features
async (default), blocking
multipart, checksums, tracing, metrics
providers (endpoint presets)
Examples
See examples/README.md.
MSRV: Rust 1.92.