13 releases (7 breaking)

0.8.1 Apr 10, 2024
0.8.0 Mar 8, 2024
0.7.0 Feb 12, 2024
0.6.1 Dec 1, 2023
0.0.1 Mar 14, 2023

#2296 in Network programming

Download history 193/week @ 2024-01-18 106/week @ 2024-01-25 210/week @ 2024-02-01 505/week @ 2024-02-08 464/week @ 2024-02-15 1089/week @ 2024-02-22 598/week @ 2024-02-29 962/week @ 2024-03-07 455/week @ 2024-03-14 197/week @ 2024-03-21 395/week @ 2024-03-28 665/week @ 2024-04-04 372/week @ 2024-04-11 26/week @ 2024-04-18 277/week @ 2024-04-25 39/week @ 2024-05-02

958 downloads per month

Apache-2.0

40MB
1M SLoC

GNU Style Assembly 626K SLoC // 0.0% comments C 224K SLoC // 0.2% comments Perl 82K SLoC // 0.1% comments C++ 82K SLoC // 0.1% comments Assembly 76K SLoC // 0.0% comments Go 22K SLoC // 0.1% comments Rust 9K SLoC // 0.1% comments Python 3.5K SLoC // 0.4% comments Shell 3K SLoC // 0.3% comments TypeScript 501 SLoC // 0.0% comments Batch 82 SLoC Bitbake 72 SLoC // 0.7% comments JavaScript 52 SLoC // 0.1% comments Kotlin 8 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–23MB
~333K SLoC