16 releases (10 breaking)
0.11.0 | Oct 17, 2024 |
---|---|
0.9.0 | Jun 26, 2024 |
0.8.0 | Mar 8, 2024 |
0.6.1 | Dec 1, 2023 |
0.0.1 | Mar 14, 2023 |
#2462 in Network programming
2,667 downloads per month
32MB
822K
SLoC
mountpoint-s3-client
This crate provides a high-performance Amazon S3 client for use by Mountpoint for Amazon S3. The client binds to the AWS Common Runtime, which provides features such as AWS authentication, a HTTP client, and low-level IO primitives.
This crate is not intended for general-purpose use and we consider its interface to be unstable. Customers looking for a general-purpose Amazon S3 client in Rust should use the official AWS SDK for Rust.
lib.rs
:
An Amazon S3 client built on top of the AWS Common Runtime (AWS CRT).
This crate provides a high-performance implementation of an Amazon S3 client that uses the AWS Common Runtime (CRT). The CRT is a software library for interacting with AWS services, offering components like IO, HTTP, and encryption. The CRT is purpose-built for high performance and low resource usage to make the most efficient use of your compute resources. For Amazon S3, the CRT includes a client that implements best practice performance design patterns, including timeouts, retries, and automatic request parallelization for high throughput.
This crate is not intended for general-purpose use and we consider its interface to be unstable. Customers looking for a general-purpose Amazon S3 client in Rust should use the official AWS SDK for Rust.
Example
To construct a new S3 client and download an object from a bucket in the us-east-1
region:
use futures::TryStreamExt;
use mountpoint_s3_client::{S3CrtClient, ObjectClient};
let client = S3CrtClient::new(Default::default()).expect("client construction failed");
let response = client.get_object("my-bucket", "my-key", None, None).await.expect("get_object failed");
let body = response.map_ok(|(offset, body)| body.to_vec()).try_concat().await.expect("body streaming failed");
To further configure the client, use the S3ClientConfig
builder:
use mountpoint_s3_client::S3CrtClient;
use mountpoint_s3_client::config::{S3ClientAuthConfig, S3ClientConfig, EndpointConfig};
let config = S3ClientConfig::new()
.endpoint_config(EndpointConfig::new("us-west-2"))
.auth_config(S3ClientAuthConfig::NoSigning)
.user_agent_prefix("my-test-client");
let client = S3CrtClient::new(config).expect("client construction failed");
Dependencies
~8–22MB
~340K SLoC